Engineering Fundamentals Glossary

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

PropertyValue
DefinitionThe process of hiding implementation details behind a
simplified interface, exposing only essential
characteristics.
ContextAbstraction reduces complexity by allowing engineers to
work at a higher level of understanding. It is a
fundamental tool for managing software complexity.
RelatedEncapsulation, Modularity
ReferencesEngineering Fundamentals Handbook

Cohesion

PropertyValue
DefinitionThe degree to which elements within a module belong
together and serve a single, well-defined purpose.
ContextHigh 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.
RelatedCoupling, Separation of Concerns
ReferencesEngineering Fundamentals Handbook

Composition

PropertyValue
DefinitionA design principle in which complex behaviour is built
by combining small, focused, reusable components rather
than inheriting behaviour from a parent class.
ContextComposition is preferred over inheritance in most
cases because it is more flexible, easier to test and
less likely to produce fragile code.
RelatedCoupling, Encapsulation
ReferencesEngineering Fundamentals Handbook

Coupling

PropertyValue
DefinitionThe degree of dependency between two modules or
components.
ContextLoose 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.
RelatedCohesion, Encapsulation
ReferencesEngineering Fundamentals Handbook

Dependency Injection

PropertyValue
DefinitionA technique in which an object receives its dependencies
from an external source rather than creating them
internally.
ContextDependency injection makes dependencies explicit,
simplifies testing and reduces coupling. Common forms
include constructor injection, setter injection and
interface injection.
RelatedCoupling, Encapsulation
ReferencesEngineering Fundamentals Handbook

Encapsulation

PropertyValue
DefinitionThe practice of hiding internal implementation details
behind a stable interface, protecting internal
invariants from external interference.
ContextEncapsulation enables change by ensuring that internal
refactoring does not affect consumers. A well-
encapsulated component exposes only what is necessary.
RelatedAbstraction, Modularity
ReferencesEngineering Fundamentals Handbook

Modularity

PropertyValue
DefinitionThe degree to which a system is composed of discrete,
independent modules that can be developed, tested and
changed in isolation.
ContextModularity is a key tool for managing complexity. It
enables parallel development, simplifies testing and
reduces the impact of changes.
RelatedCohesion, Coupling, Encapsulation
ReferencesEngineering Fundamentals Handbook

Refactoring

PropertyValue
DefinitionThe disciplined practice of improving code structure
without changing its observable behaviour.
ContextRefactoring is an ongoing activity, not a separate
project. It should be driven by clear goals, supported
by tests and done incrementally.
RelatedTechnical Debt
ReferencesEngineering Fundamentals Handbook

Separation of Concerns

PropertyValue
DefinitionA design principle stating that each module, class,
function or component should have a single, clearly
defined responsibility.
ContextSeparation of concerns is the foundation of modular
design. It reduces complexity, improves maintainability
and enables independent evolution of different parts
of a system.
RelatedCohesion, Coupling, Modularity
ReferencesEngineering Fundamentals Handbook

Technical Debt

PropertyValue
DefinitionThe gap between the current state of a codebase and the
desired state, representing future work required to
address suboptimal design, implementation or testing
decisions.
ContextTechnical 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.
RelatedRefactoring
ReferencesEngineering Fundamentals Handbook

Related Documents