... |
... |
@@ -1,7 +1,7 @@ |
1 |
1 |
(% class="box infomessage" %) |
2 |
2 |
((( |
3 |
3 |
(% style="text-align: justify;" %) |
4 |
|
-An object is injected with the dependencies it needs, rather than constructing them itself.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. |
|
4 |
+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. |
5 |
5 |
))) |
6 |
6 |
|
7 |
7 |
|
... |
... |
@@ -14,45 +14,42 @@ |
14 |
14 |
|Aware/Unaware|(% style="text-align:justify" %)Class A contains a source code reference to class B and is therefore aware of class B. If you only read 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. |
15 |
15 |
|Best Practices|(% style="text-align:justify" %)Generally accepted guidelines for increasing your programming productivity. Taking them seriously will save you a lot of pain. |
16 |
16 |
|Concretion|(% style="text-align:justify" %)((( |
17 |
|
-It is the counterpart of "abstraction" and is sometimes called "implementation". In OOP it refers to classes that implement methods of interfaces or abstract classes. A concretion defines the internal workings of these abstract functions by providing the "concrete" code. |
|
17 |
+It is the counterpart to "abstraction" and is sometimes called "implementation". In OOP it refers to non-abstract classes that could implement methods of interfaces or abstract classes. A concretion defines the internal workings of these abstract functions by providing the "concrete" code. |
18 |
18 |
))) |
19 |
19 |
|[[Constructor Injection>>doc:Software Architecture.Dependency Injection.Types of Dependency Injection.WebHome]]|(% style="text-align:justify" %)Dependency injection, which is performed by passing a dependency to an instance via a constructor argument. |
20 |
20 |
|Component|((( |
21 |
|
-1. In Spring, this is a generic annotation for a bean that does not match any other Spring Bean Annotation: "@Component". |
|
21 |
+1. In Spring, this is a generic annotation for a bean that does not match any other Spring bean annotation: "@Component". |
22 |
22 |
1. In software architecture, it is a module that can be executed independently. It is often compiled and/or compressed into an executable such as a .jar or .exe file. |
23 |
23 |
))) |
|
24 |
+|Daemon|(% style="text-align:justify" %)A program that runs in the background of a computer system, i.e. without a GUI. |
24 |
24 |
|Data Structure|(% style="text-align:justify" %)A very simple type of class that contains only data and no logic. For example, a class that has only public fields and no methods. Another form is a class with private fields and simple corresponding getters and setters. |
25 |
|
-|Dependency|(% style="text-align:justify" %)((( |
26 |
|
-In the context of classes, a dependency is a member field of a class that must be initialized with an instance of another class in order for an instance of the first-mentioned class to function properly. This initialization is often done through dependency injection. |
27 |
|
-))) |
|
26 |
+|Dependency|(% style="text-align:justify" %)In the context of classes, a dependency is a member field of one class that must be initialized with an instance of another class in order for an instance of the first class to function properly. This initialization is often done by dependency injection. |
28 |
28 |
|Dependency Cycle|(% style="text-align:justify" %)For example, an instance of one class requires an instance of another class to be constructed, and vice versa. So both classes need the other dependency to construct an instance. Therefore, it is impossible to construct either instance at all. Always make sure that the dependency graph looks like a directed acyclic graph. |
29 |
29 |
|[[Dependency Injection>>doc:Software Architecture.Dependency Injection.WebHome]] (DI)|(% style="text-align:justify" %)A technique in which the dependencies an object needs are injected from the outside, rather than constructed within the class. |
30 |
30 |
|Dirty|((( |
31 |
|
-(% style="text-align: justify;" %) |
32 |
|
-~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. |
33 |
|
- |
34 |
|
-(% style="text-align: justify;" %) |
35 |
|
-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. |
|
30 |
+Messy, unreadable, or poorly designed code is referred to as "dirty code". Often associated with code written "quick-and-dirty" due to the time constraints of a software project. |
36 |
36 |
))) |
|
32 |
+|Distribution|A version of an OS packaged with specific software and configurations for particular use cases. Examples are Ubuntu, Fedora and Arch Linux, which are based on Linux. |
37 |
37 |
|Dynamic|((( |
38 |
38 |
(% style="text-align: justify;" %) |
39 |
|
-Often refers to processes which appear at runtime when the code has already been executed and is "running". Examples: |
|
35 |
+Often refers to processes that appear at run time when the code has already been executed and is "running". Examples: |
40 |
40 |
|
41 |
|
-* Dynamic dependencies are dependencies which can be replaced at runtime. |
|
37 |
+* Dynamic dependencies are dependencies that can be replaced at runtime. |
42 |
42 |
* Dynamically typed languages determine the type of an object at runtime. |
43 |
43 |
))) |
44 |
44 |
|Entity|((( |
45 |
45 |
(% style="text-align: justify;" %) |
46 |
|
-~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. |
|
42 |
+~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 separate entities. |
47 |
47 |
|
48 |
48 |
(% style="text-align: justify;" %) |
49 |
|
-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. |
|
45 |
+2. In the context of software architecture, the term refers to classes that represent the data model of the application. For example, a banking application may have entity classes such as //account//, //order//, //customer//, or //employee//. |
50 |
50 |
))) |
51 |
|
-|[[Field Injection>>doc:Software Architecture.Dependency Injection.Types of Dependency Injection.WebHome]]|(% style="text-align:justify" %)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. |
52 |
|
-|[[Inversion of Control>>doc:Software Architecture.Dependency Injection.Dependency Injection Explained.WebHome]] (IoC)|(% style="text-align:justify" %)Transfers the responsibility of defining the logic and order of Dependency Injections from the developer to computer. |
|
47 |
+|[[Field Injection>>doc:Software Architecture.Dependency Injection.Types of Dependency Injection.WebHome]]|(% style="text-align:justify" %)A type of dependency injection that is performed by forcibly injecting a dependency into an instance through the use of reflections that break even the encapsulation of private fields. |
|
48 |
+|Graphical User Interface (GUI)|(% style="text-align:justify" %)A type of user interface that allows the user to interact with the computer by means of graphical elements such as icons, buttons, windows and menus. |
|
49 |
+|[[Inversion of Control>>doc:Software Architecture.Dependency Injection.Dependency Injection Explained.WebHome]] (IoC)|(% style="text-align:justify" %)Shifts the responsibility for defining the logic and order of dependency injections from the developer to the computer. |
53 |
53 |
|JavaBean|((( |
54 |
54 |
(% style="text-align: justify;" %) |
55 |
|
-A design convention for data structures. Usually it means a class which has: |
|
52 |
+A design convention for data structures. Usually it means a class that has |
56 |
56 |
|
57 |
57 |
* a public no-argument constructor |
58 |
58 |
* only private fields |
... |
... |
@@ -59,33 +59,35 @@ |
59 |
59 |
* only getters and setters for each field as methods |
60 |
60 |
|
61 |
61 |
(% style="text-align: justify;" %) |
62 |
|
-Often, DTO's and entities follow this convention. |
|
59 |
+Often DTOs and entities follow this convention. |
63 |
63 |
))) |
64 |
|
-|Logic|(% style="text-align:justify" %)Any code with non-trivial complexity can be referred to as "logic". In contrast, for example, getters and setters have trivial complexity. |
65 |
|
-|Magic|(% style="text-align:justify" %)"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. |
66 |
|
-|Pain|(% style="text-align:justify" %)Something causes pain when somebody spend unnecessary and great effort on a task that often could have been prevented by better code design. |
67 |
|
-|Production Code|(% style="text-align:justify" %)The counterpart of the Test Code. It contains all the code required to run the application. |
68 |
|
-|Runtime|((( |
69 |
|
-(% style="text-align: justify;" %) |
70 |
|
-The time period in which the code is executed. For example: |
71 |
|
- |
72 |
|
-* An exception is thrown by the compiler that finds an invalid syntax in the source code. This is called a compile-time exception. |
73 |
|
-* 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. |
|
61 |
+|Logic|(% style="text-align:justify" %)Any code with non-trivial complexity can be called "logic". In contrast, for example, getters and setters have trivial complexity. |
|
62 |
+|Magic|(% style="text-align:justify" %)'Code that handles complex tasks while hiding that complexity to present a simple interface.'^^[[~[source~]>>url:https://en.wikipedia.org/wiki/Magic_(programming)]]^^ |
|
63 |
+|Operating System (OS)|(% style="text-align:justify" %)((( |
|
64 |
+It is the core system software that controls and coordinates all of the computer's resources. Examples are Windows, Mac OS and Linux. |
74 |
74 |
))) |
75 |
|
-|Separation of Concerns|(% style="text-align:justify" %)A principle that says that programs should be modular, with each module dealing with a different aspect of the program. This is intended to give the software a clear, understandable structure. |
76 |
|
-|[[Setter Injection>>doc:Software Architecture.Dependency Injection.Types of Dependency Injection.WebHome]]|(% style="text-align:justify" %)Dependency Injection performed by passing a dependency to an instance via setter method argument. |
|
66 |
+|Pain|(% style="text-align:justify" %)Something causes pain when someone spends unnecessary effort on a task that could often have been avoided by better code design. |
|
67 |
+|Production Code|(% style="text-align:justify" %)The counterpart to the Test Code. It contains all the code needed to run the application. |
|
68 |
+|Rollback|The process of reverting a system or data to a previous snapshot. |
|
69 |
+|Runtime|'At runtime' means the period of time during which the code is executed. |
|
70 |
+|Separation of Concerns|(% style="text-align:justify" %)A principle that says that software should be structured modular, with each module dealing with a different aspect of the program. This is intended to give the software a clear, understandable architecture. |
|
71 |
+|[[Setter Injection>>doc:Software Architecture.Dependency Injection.Types of Dependency Injection.WebHome]]|(% style="text-align:justify" %)A type of dependency injection, which is performed by passing a dependency to an instance via a setter method argument. |
|
72 |
+|Snapshot|A snapshot is a copy of a system or data at a specific point in time. It enables 'rollbacks' that can be used to revert to that state in the future if needed. |
77 |
77 |
|Spring Bean|((( |
|
74 |
+(% style="text-align: justify;" %) |
78 |
78 |
A term used in the Spring 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. |
79 |
79 |
|
80 |
|
-It is not to be confused with JavaBeans. |
|
77 |
+(% style="text-align: justify;" %) |
|
78 |
+It should not be confused with JavaBeans. |
81 |
81 |
))) |
82 |
82 |
|Static|((( |
83 |
83 |
(% style="text-align: justify;" %) |
84 |
|
-Often refers to processes that depend non-running code. Examples: |
|
82 |
+Often refers to processes that depend on non-running code. Examples: |
85 |
85 |
|
86 |
|
-* Static Code Analysis Tools can examine source code files for possible improvements. |
|
84 |
+* Static code analysis tools can examine source code files for possible improvements. |
87 |
87 |
* Statically typed languages determine the type of an object at compile time. |
88 |
88 |
))) |
89 |
|
-|Test Code|(% style="text-align:justify" %)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. |
90 |
|
-|Test-Driven Development|(% style="text-align:justify" %)A workflow in which the developer implements code in small steps, incrementally and iteratively, defining tests at each iteration. |
91 |
|
-|Wiring|(% style="text-align:justify" %)The process of generating and injecting dependencies to set up an application performed by the IoC container. |
|
87 |
+|Test Code|(% style="text-align:justify" %)The counterpart to the Production Code. It is code that checks that the production code works as expected. Test code has no role in the operation of an application. |
|
88 |
+|Test-Driven Development (TDD)|(% style="text-align:justify" %)A workflow in which the developer implements code in small steps, incrementally and iteratively, defining tests at each iteration. |
|
89 |
+|Virtual Machine (VM)|(% style="text-align:justify" %)A software emulation of a physical computer that can run its own OS and applications as if it were a separate physical machine. |
|
90 |
+|Wiring|(% style="text-align:justify" %)The process of generating and injecting dependencies to start an application, performed by the IoC container. |