| ... | ... | @@ -1,68 +1,71 @@ | 
              
                    | 1 |  | -The explanations given here do not claim to be complete. They merely serve as a brief description to give an idea of the respective term. For more detailed information, the Internet should be consulted. Note that some of these technical terms are fuzzy, overlap with other terms, or have different meanings depending on the context or the people using them. This Glossary is an attempt to structure these terms in a concise manner. Be open to variations as you talk and work with other developers. | 
              
                    |  | 1 | +(% class="box infomessage" %) | 
              
                    |  | 2 | +((( | 
              
                    |  | 3 | +The explanations given here do not claim to be complete. They merely serve as a brief description to give an idea of the respective term. For more detailed information, the Internet should be consulted. | 
              
                    |  | 4 | +))) | 
              
                    | 2 | 2 |  | 
              
                    | 3 |  | - | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 
              
                    | 4 |  | -|                                                              **Term**                                                             |                                                                                                                                                                                                      **Explanation**                                                                                                                                                                                                       | | 
              
                    | 5 |  | -|                                                            Abstraction                                                            |   1) The counterpartof'concreteness',itrefersto interfacesandabstractclassesthatdefinebehavior (function signatures)but leave the internal implementationof thosefunctionsundefined.2)Ahigher-level,generalizedunit ofcode.Duplicationacrossmultiplefunctionscanbe resolvedby creatingan'abstraction'-aseparatefunctioncontaining theshared code.Thisadherestothe DRY principle.  | | 
              
                    | 6 |  | -|                                         [[Agile|doc:SoftwareEngineering.Agile.WebHome]]                                       |                                                                                                                                                                                                         See link.                                                                                                                                                                                          | | 
              
                    | 7 |  | -|                                                             Assertion                                                             |                                                                                                          An assertionfunction, a crucial part of testing. If the input valuesdon't satisfya certain condition, the test containingthe assertionfails.Example:`assertEquals(expectedResult,actualResult)`.                                                                                                          | | 
              
                    | 8 |  | -|                                                             Awareness                                                             |                                                                                                                                    A class A is aware of class B if it contains a reference to class B in its source code. If no such reference exists, class A is unaware of class B.                                                                                                                                     | | 
              
                    | 9 |  | - |                                                            Behavior                                                             |                                                               Counterpart to implementation.Itreferstothe observableactions performedby acomponent.For example: A class may have theonly observablemethod `sort(Collection:SomeCollection)`,which says what it does, but noimplementationdetails like what concrete sorting algorithm is used.                                                               | | 
              
                    | 10 |  | - |                                                        Best Practices                                                      |                                                                                                                                           Widelyacceptedguidelines designedtoenhance programmingproductivity andcodequality. Adherencecan preventmanypotential issues.                                                                                                                                      | | 
              
                    | 11 |  | - |                                                           Compile Time                                                           |                                                                                                                                                                       The period when the code is compiled. Often used to distinguish from runtime.                                                                                                                                                                        | | 
              
                    | 12 |  | -|                                                            Concretion                                                            |                                                                          Thecounterpartto'abstraction', alsoknown as 'implementation'.InOOP,refersto non-abstractclassesthatimplement the methods of interfacesor abstract classes. A concretionprovides the'concrete' codedefining the workings of these abstract functions.                                                                             | | 
              
                    | 13 |  | -|     [[Constructor Injection|doc:Software Engineering.Architecture.Dependency Injection.TypesofDependencyInjection.WebHome]]|                                                                                                                                                       A typeof dependencyinjection in which dependenciesare providedto an object throughconstructorarguments.                                                                                                                                                | | 
              
                    | 14 |  | -|                                                    Command-Line Interface(CLI)                                                   |                                                                          "[...] a meansofinteractingwith a computerprogram by inputtinglines of text [...]".^[[src](https://en.wikipedia.org/wiki/Command-line_interface)]^Forexample,tools/commands usedwhenworkingwitha(Linux) terminal.                                                                                              | | 
              
                    | 15 |  | -|                                                            Commitment                                                           |                                                                                                                                                                          Binding promise to completeaspecific taskwithinasetperiod of time.                                                                                                                                                                          | | 
              
                    | 16 |  | -|                                                             Component                                                             |                                                                      Often used to refer to a set of units, modules, or "architectural" components without a clearer specification. In software architecture, it refers to a module capable of independent operation, often compiled or packaged into an executable such as a `.jar` or `.exe` file.                                                                       | | 
              
                    | 17 |  | - |    [[ContinuousIntegration|doc:SoftwareEngineering.Agile.ExtremeProgramming.ContinuousIntegration.WebHome]](CI)        |                                                                                                                                                                                                         Seelink.                                                                                                                                                                                                      | | 
              
                    | 18 |  | - |                                                              Daemon                                                              |                                                                                                                                                                           A program running in the background of a system, often without a GUI.                                                                                                                                                                            | | 
              
                    | 19 |  | - |                   DataStructure                                                        |                                                                                                             A classprimarilymeanttohold dataandprovide basicoperationsto accessand manipulatethatdata.Maycontainonly publicfields,orprivate fields withassociatedgetter and setter methods.                                                                                                             | | 
              
                    | 20 |  | - |                                                            Dependency                                                            |                                                                                                                              In context of classes, a dependency is an object required by another object to perform its functions. Often, dependencies are provided via dependency injection.                                                                                                                              | | 
              
                    | 21 |  | -|                                                          Dependency Cycle                                                         |                                                                                      A situation where two or more classes depend on each other to be instantiated. This situation creates a circular dependency that makes object creation impossible. The dependency graph should be a directed acyclic graph rather than a cycle.                                                                                       | | 
              
                    | 22 |  | - |                 [[DependencyInjection|doc:SoftwareEngineering.Architecture.Dependency Injection.WebHome]](DI)                 |                                                                                                                                                 A technique where anobject's dependenciesare providedfrom outside,rather thanbeingcreatedwithinthe object itself.                                                                                                                                                 | | 
              
                    | 23 |  | - |                                                            Developer                                                             |                                                                                                                                           Skilled programmer with advanced technical knowledge in areas such as software design, coding best practices, technical concepts, etc.                                                                                                                                           | | 
              
                    | 24 |  | - |                                                          Dirty(Code)                                                           |                                                                                                                                                                                    Code that is messy,unreadable, or poorly designed.                                                                                                                                                                               | | 
              
                    | 25 |  | - |                                                          Distribution                                                           |                                                                                                                           A version of an OS packagedwith specificsoftware and configurations,designed for specific usecases.Examples:Ubuntu, Fedora,andArchLinux, allbased on Linux.                                                                                                                            | | 
              
                    | 26 |  | - |                                                             Dynamic                                                              |                                                                                                                         Behaviors/properties determined at runtime. Examples: dynamic dependencies can be replaced at runtime; dynamically-typed languages determine an object's type at runtime.                                                                                                                          | | 
              
                    | 27 |  | -|                                                               Entity                                                              | 1) In the OOP context, this means that two separately constructed objects of the same type, even with identical field values, are still distinct entities. 2) In software architecture, refers to classes representing application data models and core business logic. A banking application might have entity classes like Account, Order, Customer, or Employee with methods like `myCustomer.executeOrder(someOrder)`. | | 
              
                    | 28 |  | - |                                                       Estimates                                                    |                                                                                                                                                     Intelligentguesses about theresources neededtocomplete a task.No bindingpromisesas opposed tocommitments.                                                                                                                                                      | | 
              
                    | 29 |  | - |       [[Field Injection|doc:Software Engineering.Architecture.Dependency Injection.Types of Dependency Injection.WebHome]]       |                                                                                                                                           A type of dependency injection where a dependency is injected directly into an object's field via reflection, bypassing encapsulation.                                                                                                                                           | | 
              
                    | 30 |  | - |                                                  Functionality/Feature       |                                                                                                                                             Anoperationthatasystem canperformfromthe user'spoint of view. For example, the"login"functionality/featureona website.                                                                                                                       | | 
              
                    | 31 |  | - |                                                  Graphical User Interface (GUI)                                                  |                                                                                                                                             A user interface that allows users to interact with the system through graphical elements like icons, buttons, windows, and menus.                                                                                                                                             | | 
              
                    | 32 |  | -|                                                        Isolation/Isolated                                                        |                                The oppositeof integration. Isolation istheseparationof a unit or component from the rest of the system in ordertotest,developorunderstanditindependently andensure thatitworkscorrectly withoutexternalinterference.For example, in unit testing,a singleunit isusually testedindependentlyof other units andisisolatedfrom them.                                | | 
              
                    | 33 |  | -|                       [[Iteration|doc:Software Engineering.Agile.ExtremeProgramming.PlanningGame.WebHome]]                     |                                                                                                                                                                                               Seelink.                                                                                                                                                                                                     | | 
              
                    | 34 |  | -|                                                           Implementation                                                          |                                                                                                               The counterpart to behavior. It refers to the internal code that achieves a desired behavior of a component. For example, a sorting function might be implemented with a QuickSort algorithm.                                                                                                                | | 
              
                    | 35 |  | - |                                                     Integration/Integrated                                                      |                                    The oppositeof isolation. Integrationis the process of combiningdifferent software units or components to work together asa single,cohesive system. For example, component testingis more integratedthan unit testing because it involvesmultiple units working together. Integration testing tests theinteraction between two components.                                    | | 
              
                    | 36 |  | - | [[Inversion of Control|doc:Software Engineering.Architecture.Dependency Injection.Dependency Injection Explained.WebHome]] (IoC) |                                                                                                          A design principle that encourages the delegation of application unit wiring to a computer algorithm that facilitates dependency injection, rather than the developer implementing this logic manually.                                                                                                           | | 
              
                    | 37 |  | - |                                                             Module                                                              |                                   A distinct partof a software that encapsulates specificimplementation details, such as functions, data structures, classes, interfaces,or even other modules. It exposes a concise API designed to perform specific tasks. These modules are typically crafted for reusability and improved code organization, thereby promoting a modular design.                                    | | 
              
                    | 38 |  | - |                                                             Logic                                                               |                                                                                                                                          Any code with non-trivial complexity.For instance, getters and setters have trivial complexity and areusually not considered 'logic'.                                                                                                                                           | | 
              
                    | 39 |  | - |                                                            Logical                                                              |                                                                     The counterpart to physical.The abstract representationof something in software.For example,deleting a file from the desktoponly logically deletesit, but actually moves it to the Recycle Bin, while the file physically remains on disk until the Recycle Bin is emptied.                                                                      | | 
              
                    | 40 |  | - |                                                              Magic                                                               |                                                                                                                                                     Code that performs complex tasks while abstracting away the complexity, presenting a simple interface to the user.                                                                                                                                                     | | 
              
                    | 41 |  | - |                                                      OperatingSystem(OS)                                                      |                                                                                                                                                The foundational system softwarethat managesand coordinates all computer resources. Examples are Windows, MacOS and Linux.                                                                                                                                                | | 
              
                    | 42 |  | - |                                                               Pain                                                               |                                                                                                                                               An unpleasant experience caused by unnecessary efforts that could have been mitigated with better design of the original code.                                                                                                                                               | | 
              
                    | 43 |  | -|                                                              Physical                                                             |                                                                                                                                                 Counterpartto logical.Referstohardware.For example,physically deletingafile meansremovingit from the disk.                                                                                                                                                    | | 
              
                    | 44 |  | -|                                                          Production Code                                                    |                                                                                                                                                                    Codethat comprises the functioning part of an application,as opposedto testcode.                                                                                                                                                       | | 
              
                    | 45 |  | -|                                                             Programmer                                                            |                                                                                                                                                                           Someone whowrites and tests code.Theknowledgelevelofa beginner.                                                                                                                                                                          | | 
              
                    | 46 |  | -|                                                            Requirement                                                           |                                                                                                                                                   Statementofwhat a softwaremustbe capable of doing,oftenoutliningfeatures,constraints,andsuccesscriteria.                                                                                                                                                     | | 
              
                    | 47 |  | -|                                                             Resources                                                             |                                                                                                                                                                    Refers to the assets used in the project, including time, money, staff, and effort.                                                                                                                                                                     | | 
              
                    | 48 |  | - |                                                    Returnof Investment(RoI)                                                    |                                                                                                                                                                   Business value derivedfrom implementinga story,minusthe associatedeffortor cost.                                                                                                                                                                   | | 
              
                    | 49 |  | - |                                                             Rollback                                                             |                                                                                                                                                                     The act of returning a system or data to a previous state, often using a snapshot.                                                                                                                                                                     | | 
              
                    | 50 |  | - |                                                         RottingCode                                                        |                                                                                                                                          Code that isincreasinglydifficult to maintaindueto multiple changesthataccumulatetechnical debtbynot following bestpractices.                                                                                                                                           | | 
              
                    | 51 |  | - |                                                            Runtime                                                             |                                                                                                                                                                  Theperiodwhenthe code is beingexecuted.Oftenused todistinguishfromcompiletime.                                                                                                                                                        | | 
              
                    | 52 |  | - |                                                             Security                                                             |                                                                                                                    Measures implemented to protect systems from threats, unauthorized access, and vulnerabilities. This includes, but is not limited to, authentication, authorization, and encryption.                                                                                                                    | | 
              
                    | 53 |  | -|                                                          Self-Containment                                                         |                                                                                          The abilityof softwaretooperateindependently, withoutdependence onexternalservicesor factors.Thischaracteristicensuresthatits resultsaredetermined solelyby itssource code,whichpromotesstability and consistency.                                                                                         | | 
              
                    | 54 |  | -|                                                       Separation ofConcerns                                                      |                                                                                                                                     A designprinciple suggestingthateach moduleor componentshouldhavea singleresponsibility orconcern,enhancingclarityandmaintainability.                                                                                                                                     | | 
              
                    | 55 |  | -|       [[Setter Injection|doc:Software Engineering.Architecture.DependencyInjection.Types of Dependency Injection.WebHome]]       |                                                                                                                                                            A type of dependency injection where a dependency is provided to an object through a setter method.                                                                                                                                                             | | 
              
                    | 56 |  | - |                                                            Snapshot                                                            |                                                                                                                                                                 A savedstateofa system ordataata specificpoint in time.Can beusedforrollbacks.                                                                                                                                         | | 
              
                    | 57 |  | - |                                                        Software Engineer                                                         |                                                                                                                                            Technical expert with in-depth knowledge in many areas, including high-level topics such as software architecture and system design.                                                                                                                                            | | 
              
                    | 58 |  | - |                                                              Static                                                              |                                                                                                                Behaviors/propertiesdeterminedbeforeor at compile time. Examples: static code analysis tools inspect source code;statically-typedlanguages determine an object's type at compile time.                                                                                                                 | | 
              
                    | 59 |  | - |                  [[Story/User Story|doc:Software Engineering.Agile.Extreme Programming.Planning Game.WebHome]]                   |                                                                                                                                                                                                         See link.                                                                                                                                                                                                          | | 
              
                    | 60 |  | -|                                                               System                                                              |                                                                                                                                                             Entirety of software components designed to work together effectively in a production environment.                                                                                                                                                             | | 
              
                    | 61 |  | - |                                                          TechnicalDebt                                                          |                                                                                                            The implicit costof additionalrework caused by choosing an easy solution now instead of usinga better approach thatwould take longer. Oftenthe result of poor design, testing,and refactoring.                                                                                                           | | 
              
                    | 62 |  | - |                                                            Test Code                                                             |                                                                                                                                                  Code that tests the functionality of production code. Does not contribute to the operational aspects of an application.                                                                                                                                                   | | 
              
                    | 63 |  | - |                                                 Test-DrivenDevelopment(TDD)                                                 |                                                                                                                                   A developmentapproach wherecode is written in smallincrements,with tests defining functionality writtenat the beginning of each coding iteration.                                                                                                                                   | | 
              
                    | 64 |  | - |                                                           Test Suite                                                            |                                                                                                                                                                      The sum of all thetestcodeusedtocheck thata systemmeetsits requirements.                                                                                                                                                                      | | 
              
                    | 65 |  | - |                                                               Unit                                                               |                                                                                                   The smallest testable part of an application. This is often a single class, method or module, but can also be a small cluster of tightly coupled classes or functions that together perform a specific functionality.                                                                                                    | | 
              
                    | 66 |  | -|                                                        VirtualMachine(VM)                                                       |                                                                                                                                              A softwareemulation ofaphysicalcomputer,able to runitsown OS and applications asifitwereaseparate physicalmachine.                                                                                                                                               | | 
              
                    | 67 |  | -|                             [[Waterfall|doc:SoftwareEngineering.Agile.Problems ofWaterfall.WebHome]]                          |                                                                                                                                                                                                         See link.                                                                                                                                                                                                      | | 
              
                    | 68 |  | -|                                                               Wiring                                                              |                                                                                                                                                      The processconductedby the IoC container to createand inject dependencies,facilitatingapplicationstartup.                                                                                                                                                   | | 
              
                    |  | 6 | + | 
              
                    |  | 7 | +|**Term**|**Explanation** | 
              
                    |  | 8 | +|Aware/Unaware|The class A contains a source code reference of the class B and therefore is aware of the class B. If you were to read only the source code of class A, you would know that there must be a class B. If there was no such reference, class A would be unaware of class B. | 
              
                    |  | 9 | +|Best Practices|Generally accepted guidelines aimed at increasing your programming productivity. If you take them seriously, you will save yourself a lot of pain. | 
              
                    |  | 10 | +|[[Constructor Injection>>doc:Software Engineering.Dependency Injection.Types of Dependency Injection.WebHome]]|Dependency Injection performed by passing a dependency to an instance via constructor argument. | 
              
                    |  | 11 | +|Component|((( | 
              
                    |  | 12 | +1. In Spring, it is a general term for a bean that no other Spring Bean Annotation matches. | 
              
                    |  | 13 | +1. In software architecture, it is a module that can be executed independently. It is often compiled and/or compressed into an executable binary such as a .jar or .exe file. | 
              
                    |  | 14 | +))) | 
              
                    |  | 15 | +|Data Structure|A very simple type of class that contains only data and no logic. For example, a class that has only public fields but no methods. | 
              
                    |  | 16 | +|Dependency|In the context of classes, a dependency is a field that must be initialized in order for an object of that class to function properly. Normally an object is inject via Dependency Injection. | 
              
                    |  | 17 | +|Dependency Cycle|For example, class A depends on class B and class B depends on class A. If both objects need the other dependency to construct instances, dependency injection is impossible. Dependency cycles should be avoided. Instead, the dependency graph should look like a directed acyclic graph. | 
              
                    |  | 18 | +|[[Dependency Injection>>doc:Software Engineering.Dependency Injection.WebHome]] (DI)|An object is injected with the dependencies it needs instead of constructing them itself. | 
              
                    |  | 19 | +|Dirty|((( | 
              
                    |  | 20 | +~1. Messy, unreadable, or poorly designed code is referred to as "dirty code". Often associated with code written "quick-and-dirty" due to time pressure. | 
              
                    |  | 21 | + | 
              
                    |  | 22 | +2. The term comes from the phrase "getting one's hands dirty" and refers to coding work that is considered monotonous, detailed, low-level and undemanding, but necessary. The term is often used in the context of I/O operations. Creating a database transaction, for example, is always handled very similarly and is not considered a fun task for experienced programmers who have done it many times. High-level design is more exciting because it requires more creativity from the developer and is more intellectually stimulating. | 
              
                    |  | 23 | +))) | 
              
                    |  | 24 | +|Dynamic|((( | 
              
                    |  | 25 | +Often refers to processes which appear at runtime when the code has already been executed and is "running". Examples: | 
              
                    |  | 26 | + | 
              
                    |  | 27 | +* Dynamic dependencies are dependencies which can be replaced at runtime. | 
              
                    |  | 28 | +* Dynamically typed languages determine the type of an object at runtime. | 
              
                    |  | 29 | +))) | 
              
                    |  | 30 | +|Entity|((( | 
              
                    |  | 31 | +~1. In an object context, this means that two objects of the same type that contain exactly the same values in their fields can be considered equivalent, but are still two separately existing entities. | 
              
                    |  | 32 | + | 
              
                    |  | 33 | +2. In the context of software architecture, the term refers to classes that represent the model of the application and often represent things from the real world. For example, a banking application may have entity classes such as //Account//, //Order//, //Customer//, or //Employee//. They are often built like simple Data Structures, but may contain additional validation logic to impose logical constraints on their fields. For example, the integer field //customer.age// must always be between 0 and 150 because that is a logical constraint on people's ages, even though the integer data range is technically much larger. | 
              
                    |  | 34 | +))) | 
              
                    |  | 35 | +|[[Field Injection>>doc:Software Engineering.Dependency Injection.Types of Dependency Injection.WebHome]]|Dependency Injection is performed by forcibly injecting a dependency into an instance through the use of reflections that break even the encapsulation measures. This type of Dependency Injection is to be avoided. | 
              
                    |  | 36 | +|[[Inversion of Control>>doc:Software Engineering.Dependency Injection.Dependency Injection Explained.WebHome]] (IoC)|Transfers the responsibility of defining the logic and order of Dependency Injections from the developer to computer. | 
              
                    |  | 37 | +|JavaBean|((( | 
              
                    |  | 38 | +A design convention for data structures. Usually it means a class which has: | 
              
                    |  | 39 | + | 
              
                    |  | 40 | +* a public no-argument constructor | 
              
                    |  | 41 | +* only private fields | 
              
                    |  | 42 | +* only getters and setters for each field as methods | 
              
                    |  | 43 | + | 
              
                    |  | 44 | +Often, DTO's and entities follow this convention. | 
              
                    |  | 45 | +))) | 
              
                    |  | 46 | +|Logic|Any code with non-trivial complexity can be referred to as "logic". In contrast, for example, getters and setters have trivial complexity. | 
              
                    |  | 47 | +|Magic|"Code that handles complex tasks while hiding that complexity to present a simple interface."^^[[[sources]>>url:https://en.wikipedia.org/wiki/Magic_(programming)]]^^ For example, the introduction of the Spring IoC container is quite simple, but the logic and wiring that goes on in the background is complex. | 
              
                    |  | 48 | +|Pain|Something causes pain when somebody spend unnecessary and great effort on a task that often could have been prevented by better code design. | 
              
                    |  | 49 | +|Production Code|The counterpart of the Test Code. It contains all the code required to run the application. | 
              
                    |  | 50 | +|Runtime|((( | 
              
                    |  | 51 | +The time period in which the code is executed. For example: | 
              
                    |  | 52 | + | 
              
                    |  | 53 | +* An exception is thrown by the compiler that finds an invalid syntax in the source code. This is called a compile-time exception. | 
              
                    |  | 54 | +* Suppose that after a successful compilation, an executable file was created, started, and an exception was thrown shortly thereafter. Since this happened at runtime, it is a runtime exception. | 
              
                    |  | 55 | +))) | 
              
                    |  | 56 | +|Separation of Concerns|A principle that says that programs should be modular, with each module taking care of a different aspect of the program. Such modules provide higher level functions that take care of the aspect hidden in the background. For example, | 
              
                    |  | 57 | +|[[Setter Injection>>doc:Software Engineering.Dependency Injection.Types of Dependency Injection.WebHome]]|Dependency Injection performed by passing a dependency to an instance via setter method argument. | 
              
                    |  | 58 | +|Spring Bean|((( | 
              
                    |  | 59 | +A term used in Spring IoC Framework for an object that is contained in the IoC container to be injected into other beans and/or to receive dependency injections. It is one of many components/beans that are wired together via IoC to form the application when it is started. | 
              
                    |  | 60 | + | 
              
                    |  | 61 | +Not to be confused with JavaBeans. | 
              
                    |  | 62 | +))) | 
              
                    |  | 63 | +|Static|((( | 
              
                    |  | 64 | +Often refers to processes that depend non-running code. Examples: | 
              
                    |  | 65 | + | 
              
                    |  | 66 | +* Static Code Analysis Tools can examine source code files for possible improvements. | 
              
                    |  | 67 | +* Statically typed languages determine the type of an object at compile time. | 
              
                    |  | 68 | +))) | 
              
                    |  | 69 | +|Test Code|The counterpart of the Production Code. It is code that checks whether the production code works as expected. Test Code plays no role in the operation of an application. | 
              
                    |  | 70 | +|Test-Driven Development|A workflow in which the developer implements code in small steps, incrementally and iteratively, defining tests at each iteration. | 
              
                    |  | 71 | +|Wiring|The process of generating and injecting dependencies to set up an application performed by the IoC container. |