archi3

Glossary

Glossary

Every term from the three approaches, defined simply and linked back to the articles that explain them in depth.

36 terms

Adapter
Hexagonal
Concrete technical implementation of a port: a REST controller, a PostgreSQL repository, an email client. The domain doesn't know which one is plugged in at a given time.
Read the article
Aggregate
DDD
Group of entities and value objects that must stay consistent together at all times, with a single root guaranteeing the invariants.
Read the article
Aggregate Root
DDD
The only entity of an aggregate accessible from the outside. Any access to the aggregate's internal objects must go through it.
Read the article
Anemic Domain Model
Transversal
Anti-pattern where entities are just data bags with getters/setters, with all business logic pushed out into external services.
Anticorruption Layer (ACL)
DDD
Translation layer built by a context to protect itself from an external model it doesn't want polluting its own business language.
Read the article
Big Ball of Mud
Transversal
A system with no clear boundary or structure, where everything depends on everything. Exactly what ports/adapters, circles, and bounded contexts try to avoid.
Bounded Context
DDD
Explicit boundary within which a given model is valid and consistent. The same word ("Customer") can mean different models in different contexts.
Read the article
Conformist
DDD
Context mapping relationship where a downstream context accepts an upstream model as-is, with no room for negotiation.
Read the article
Context Mapping
DDD
Explicit description of the relationships between several bounded contexts: Shared Kernel, Customer/Supplier, Conformist, Anticorruption Layer, Open Host Service.
Read the article
Coupling and cohesion
Transversal
Coupling measures how much two components depend on each other; cohesion measures how much the elements of one component share a single clear responsibility. All three approaches aim for low coupling and high cohesion.
Customer / Supplier
DDD
Relationship where an upstream context (supplier) provides data or services to a downstream context (customer), which can influence its roadmap.
Read the article
Dependency Inversion Principle
Transversal
SOLID principle stating that high-level modules shouldn't depend on low-level modules, but both on abstractions. The shared technical foundation of hexagonal and Clean Architecture.
Dependency Rule
Clean Architecture
Central principle of Clean Architecture: source code in a circle can only reference elements in the same circle or a more inner one. Never the reverse.
Read the article
Domain core
Hexagonal
The center of the hexagon: entities, business rules, use cases. It depends on no framework, no database, no technical library.
Read the article
Domain Event
DDD
A fact that happened in the domain, named in the past tense (OrderPlaced). Lets other parts of the system react without direct coupling.
Read the article
Domain Service
DDD
A business operation that doesn't naturally belong to any single entity, such as transferring an amount between two distinct accounts.
Read the article
Driven port (Secondary port)
Hexagonal
A port the domain defines because it needs something from the outside: persisting data, sending a message. The domain sets the shape of the interface.
Read the article
Driving port (Primary port)
Hexagonal
A port that lets the outside operate the domain: typically a use case interface, called by a controller, a CLI, or a test.
Read the article
Entities (Clean Architecture circle)
Clean Architecture
The innermost circle: the most general business rules of the enterprise, the ones that would survive a complete change of application.
Read the article
Entity (DDD sense)
DDD
Object defined by its identity, which persists over time even as its attributes change. An Order stays the same order whether a line is added or not.
Read the article
Event Storming
DDD
Collaborative workshop where developers and domain experts lay out domain events together, on sticky notes, to discover the model and the bounded contexts.
Factory
DDD
Encapsulates complex or rule-bound creation logic, when a plain constructor is no longer enough to guarantee a valid object.
Read the article
Framework independence
Transversal
The ability of business code to run, be understood, and be tested without depending on a particular framework - a goal shared by all three approaches.
Frameworks & Drivers
Clean Architecture
The outermost circle of Clean Architecture: database, web framework, user interface. Kept to a minimum, mostly wiring.
Read the article
Gateway
Clean Architecture
Term used in Clean Architecture for an interface a use case defines toward the outside - the direct equivalent of a driven port in hexagonal architecture.
Read the article
Interface Adapters
Clean Architecture
Translation layer between the format convenient for use cases and the format convenient for external technology: controllers, presenters, mappers.
Read the article
Onion Architecture
Transversal
Architecture proposed by Jeffrey Palermo, a direct cousin of hexagonal and Clean Architecture: concentric layers with dependencies pointing toward the center.
Open Host Service
DDD
A context that exposes a well-defined public protocol, designed to be consumed by several other contexts without individual coordination.
Read the article
Port
Hexagonal
Interface defined by the domain to communicate with the outside, in strictly business vocabulary. There are two kinds: driving (what the domain offers) and driven (what it needs).
Read the article
Presenter
Clean Architecture
Component in the Interface Adapters layer that formats a use case's result for display, carrying no business rule of its own.
Read the article
Repository
DDD
Gives the illusion of an in-memory collection for a given aggregate (save, findById). Always maps to an aggregate root, never to an internal entity.
Read the article
Shared Kernel
DDD
Context mapping relationship where two teams deliberately share a small portion of a common model, accepting the coordination cost.
Read the article
Testability
Transversal
How easily a business rule can be verified by a fast automated test, with no database or server - one of the direct benefits of isolating the domain.
Read the article
Ubiquitous Language
DDD
Precise vocabulary shared between developers and domain experts, used without translation, all the way into class and method names in the code.
Read the article
Use Case (Interactor)
Clean Architecture
Application-specific orchestration ("place an order", "cancel a subscription"). Uses entities and defines, through interfaces, what it needs from the outside.
Read the article
Value Object
DDD
Object defined solely by its attributes, with no identity of its own, and immutable by construction. Two Money instances of "10 EUR" are interchangeable.
Read the article