Glossary

Version 11.17 by chrisby on 2023/10/03 10:59

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.

  
  Term    Explanation 
 Abstraction 
  1. The counterpart to 'Concretion', refers to interfaces and abstract classes that define behavior (function signatures) but leave the internal operation of these functions undefined.
  2. A higher-level, generalized unit of code. For example, duplication across multiple functions can be resolved by creating an 'abstraction' - a separate function containing the shared code.                                | |                                                           Architecture                                                           |                                                        Refers to the overall structure of a software system. It defines the components of the system, their interactions, and the design rules that govern them. Its purpose is to ensure that the system meets its requirements while promoting maintainability, scalability, and minimizing the cost of development and evolution over time.                                                        | |                                                            Assertion                                                             |                                                                                                                 Pertains to an assertion function, a crucial part of testing. If the input values don't satisfy a certain condition, the test containing the assertion fails. Example: 'assertEquals(expectedResult, actualResult)'.                                                                                                                  | |                                                            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.                                                                                                                                                  | |                                                          Best Practices                                                          |                                                                                                                                                        Widely accepted guidelines designed to enhance programming productivity and code quality. Adherence can prevent many potential issues.                                                                                                                                                         | |                                                          Business Logic                                                          |                                                                                             Represents the core computations, data processing, and rules that form the backbone of a software application. It's independent of details such as data presentation, storage mechanisms, networking, third-party library and operating system interactions.                                                                                              | |                                                            Concretion                                                            |                                                                                          The counterpart to 'abstraction', also known as 'implementation'. In OOP, refers to non-abstract classes that implement the methods of interfaces or abstract classes. A concretion provides the 'concrete' code defining the workings of these abstract functions.                                                                                          | |    Types of Dependency Injection    |                                                                                                                                                                     A type of dependency injection in which dependencies are provided to an object through constructor arguments.                                                                                                                                                                     | |                                                            Component                                                             |
  3. In Spring, a generic annotation for a bean that doesn't fit other specific Spring bean annotations: '@Component'.
  4. In software architecture, a module capable of independent operation, often compiled or packaged into an executable such as a .jar or .exe file.                                                                                       | |                                                              Daemon                                                              |                                                                                                                                                                                       A program running in the background of a system, typically without a GUI.                                                                                                                                                                                       | |                                                          Data Structure                                                          |                                                                                                                          A class primarily meant to hold data and provide basic operations to access and manipulate that data. May contain only public fields, or private fields with associated getter and setter methods.                                                                                                                           | |                                                            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.                                                                                                        | |                                                         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.                                                                                                    | |                 Dependency Injection (DI)                 |                                                                                                                                                               A technique where an object's dependencies are provided from outside, rather than being created within the object itself.                                                                                                                                                               | |                                                              Dirty                                                               |                                                                                                                                                                Code that is messy, unreadable, or poorly designed. Often refers to 'quick-and-dirty' code written under time pressure.                                                                                                                                                                | |                                                           Distribution                                                           |                                                                                                                                         A version of an OS packaged with specific software and configurations, designed for specific use cases. Examples: Ubuntu, Fedora, and Arch Linux, all based on Linux.                                                                                                                                         | |                                                             Dynamic                                                              |

Pertains to behaviors or properties determined at runtime. Examples: dynamic dependencies can be replaced at runtime; dynamically-typed languages determine an object's type at runtime.                                                                                                                               | |                                                              Entity                                                              |

  1. In object context, this signifies that two 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. A banking application might have entity classes like Account, Order, Customer, or Employee.                                                               | |                                                           Environment                                                            | Refers to the specific sets of infrastructure on which software applications run, intended for different purposes. For example, a production environment typically runs on secure, off-site servers, is accessible to end users, stores customer data, and so on. In contrast, a development environment is typically localized to a developer's PC, has software development tools installed, and lacks some of the production environment features. | |       Types of Dependency Injection       |                                                                                                                                                        A type of dependency injection where a dependency is injected directly into an object's field via reflection, bypassing encapsulation.                                                                                                                                                         | |                                                  Graphical User Interface (GUI)                                                  |                                                                                                                                                          A user interface that allows users to interact with the system through graphical elements like icons, buttons, windows, and menus.                                                                                                                                                           | |                                                            In-Memory                                                             |                                         In-memory refers to storing and processing data directly in a computer's random access memory (RAM) and is faster than traditional disk storage. However, it lacks data persistence. Examples include in-memory databases or the Linux temporary file system (tmpfs), which are often used in development environments where there is no need to store critical data.                                         | | Dependency Injection Explained (IoC) |                                             A design principle that delegates a program's control flow to a separate container or framework that "wires" application components together, facilitating Dependency Injection. An IoC container, as found in the Spring Framework, is a common tool for implementing this principle.                                             | |                                                             JavaBean                                                             |                                                                                                                           A design convention for data structures. Typically, a class with a public no-argument constructor, private fields, and getter/setter methods for each field. Often followed by DTOs and entities.                                                                                                                           | |                                                              Module                                                              |                                                 A distinct part of a software that encapsulates specific implementation 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.                                                 | |                                                              Logic                                                               |                                                                                                                                                          Code with non-trivial complexity. For instance, getters and setters have trivial complexity and are usually not considered 'logic'.                                                                                                                                                          | |                                                              Magic                                                               |                                                                                                                                                                  Code that performs complex tasks while abstracting away the complexity, presenting a simple interface to the user.                                                                                                                                                                   | |                                                      Operating System (OS)                                                       |                                                                                                                                                           The foundational system software that manages and coordinates all computer resources. Examples include Windows, MacOS, and Linux.                                                                                                                                                           | |                                                               Pain                                                               |                                                                                                                                                                        An unpleasant experience caused by unnecessary efforts that could be mitigated with better code design.                                                                                                                                                                        | |                                                         Production Code                                                          |                                                                                                                                           Production code forms the software that meets the requirements of the project. It is the code that is deployed in a production environment and used by end users.                                                                                                                                           | |                                                          Representation                                                          |
  3. Often used when discussing the specific ways in which data or objects are implemented or modeled within a program or displayed in a GUI.
  4. Less commonly, it refers to a specific implementation of an abstract data type or object. It's the actual, concrete realization of an abstract concept or structure. Can be used interchangeably with the term 'concretion' in this sense.                              | |                                                             Rollback                                                             |                                                                                                                                                                                  The act of returning a system or data to a previous state, often using a snapshot.                                                                                                                                                                                   | |                                                             Runtime                                                              |                                                                                                                                                                                                      The period when the code is being executed.                                                                                                                                                                                                      | |                                                         Self-Containment                                                         |                                                                                                        The ability of software to operate independently, without dependence on external services or factors. This characteristic ensures that its results are determined solely by its source code, which promotes stability and consistency.                                                                                                         | |                                                      Separation of Concerns                                                      |                                                                                                                                                  A design principle suggesting that each module or component should have a single responsibility or concern, enhancing clarity and maintainability.                                                                                                                                                   | |      Types of Dependency Injection       |                                                                                                                                                                          A type of dependency injection where a dependency is provided to an object through a setter method.                                                                                                                                                                          | |                                                             Snapshot                                                             |                                                                                                                                                                               A saved state of a system or data at a specific point in time. Can be used for rollbacks.                                                                                                                                                                               | |                                                           Spring Bean                                                            |

An object managed within the Spring Framework's IoC container, which can be injected into other beans or receive injections itself. It contributes to the application's functionality upon startup and should not be confused with JavaBeans.                                                                                                    | |                                                              Static                                                              |                                                                                                                           Pertains to behaviors or properties determined at compile time. Examples: static code analysis tools inspect source code; statically-typed languages determine an object's type at compile time.                                                                                                                            | |                                                            Test Code                                                             |                                                                                                                                                                Code that tests the functionality of production code. Does not contribute to the operational aspects of an application.                                                                                                                                                                | |                                                  Test-Driven Development (TDD)                                                   |                                                                                                                                                       A development approach where code is written in small increments, with tests defining functionality written before each coding iteration.                                                                                                                                                       | |                                                               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.                                                                                                                 | |                                                            User Story                                                            |                                                                                                                                  Abbreviated description of a feature of a system told from a users perspective. Also see Planning Game.                                                                                                                                  | |                                                       Virtual Machine (VM)                                                       |                                                                                                                                                            A software emulation of a physical computer, able to run its own OS and applications as if it were a separate physical machine.                                                                                                                                                            | |                                                              Wiring                                                              |                                                                                                                                                                    The process conducted by the IoC container to create and inject dependencies, facilitating application startup.                                                                                                                                                                    |