This glossary defines the foundational engineering terminology used throughout the Engineering Knowledge Framework.
Purpose
This glossary defines the foundational engineering terminology used
throughout the Engineering Knowledge Framework.
Every term defined here is authoritative across the entire repository.
Capability-specific terminology belongs in the corresponding capability
glossary (e.g., Architecture Glossary, Rails Glossary).
Glossary
Abstraction
| Property | Value |
| Definition | The process of hiding implementation details behind a |
| simplified interface, exposing only essential |
| characteristics. |
| Context | Abstraction reduces complexity by allowing engineers to |
| work at a higher level of understanding. It is a |
| fundamental tool for managing software complexity. |
| Related | Encapsulation, Modularity |
| References | Engineering Fundamentals Handbook |
Cohesion
| Property | Value |
| Definition | The degree to which elements within a module belong |
| together and serve a single, well-defined purpose. |
| Context | High cohesion indicates that a module's responsibilities |
| are closely related and focused. Low cohesion means a |
| module attempts to do many unrelated things. High |
| cohesion is preferred. |
| Related | Coupling, Separation of Concerns |
| References | Engineering Fundamentals Handbook |
Composition
| Property | Value |
| Definition | A design principle in which complex behaviour is built |
| by combining small, focused, reusable components rather |
| than inheriting behaviour from a parent class. |
| Context | Composition is preferred over inheritance in most |
| cases because it is more flexible, easier to test and |
| less likely to produce fragile code. |
| Related | Coupling, Encapsulation |
| References | Engineering Fundamentals Handbook |
Coupling
| Property | Value |
| Definition | The degree of dependency between two modules or |
| components. |
| Context | Loose coupling means modules interact through stable, |
| minimal interfaces and can be changed independently. |
| Tight coupling means changes to one module require |
| changes to others. Loose coupling is preferred. |
| Related | Cohesion, Encapsulation |
| References | Engineering Fundamentals Handbook |
Dependency Injection
| Property | Value |
| Definition | A technique in which an object receives its dependencies |
| from an external source rather than creating them |
| internally. |
| Context | Dependency injection makes dependencies explicit, |
| simplifies testing and reduces coupling. Common forms |
| include constructor injection, setter injection and |
| interface injection. |
| Related | Coupling, Encapsulation |
| References | Engineering Fundamentals Handbook |
Encapsulation
| Property | Value |
| Definition | The practice of hiding internal implementation details |
| behind a stable interface, protecting internal |
| invariants from external interference. |
| Context | Encapsulation enables change by ensuring that internal |
| refactoring does not affect consumers. A well- |
| encapsulated component exposes only what is necessary. |
| Related | Abstraction, Modularity |
| References | Engineering Fundamentals Handbook |
Modularity
| Property | Value |
| Definition | The degree to which a system is composed of discrete, |
| independent modules that can be developed, tested and |
| changed in isolation. |
| Context | Modularity is a key tool for managing complexity. It |
| enables parallel development, simplifies testing and |
| reduces the impact of changes. |
| Related | Cohesion, Coupling, Encapsulation |
| References | Engineering Fundamentals Handbook |
Refactoring
| Property | Value |
| Definition | The disciplined practice of improving code structure |
| without changing its observable behaviour. |
| Context | Refactoring is an ongoing activity, not a separate |
| project. It should be driven by clear goals, supported |
| by tests and done incrementally. |
| Related | Technical Debt |
| References | Engineering Fundamentals Handbook |
Separation of Concerns
| Property | Value |
| Definition | A design principle stating that each module, class, |
| function or component should have a single, clearly |
| defined responsibility. |
| Context | Separation of concerns is the foundation of modular |
| design. It reduces complexity, improves maintainability |
| and enables independent evolution of different parts |
| of a system. |
| Related | Cohesion, Coupling, Modularity |
| References | Engineering Fundamentals Handbook |
Technical Debt
| Property | Value |
| Definition | The gap between the current state of a codebase and the |
| desired state, representing future work required to |
| address suboptimal design, implementation or testing |
| decisions. |
| Context | Technical debt may be strategic (intentional with a |
| plan to repay) or accidental (accumulated through |
| neglect). All technical debt should be tracked |
| explicitly and regularly addressed. |
| Related | Refactoring |
| References | Engineering Fundamentals Handbook |