About
Settings

Chats

DDD Terminology Summarizing

2 minutes
DDDTerminology

Overview

This document summarizes concisely DDD terminologies.

A

  • Aggregate: Object that binds associated entities and VOs to keep simplicity of domain.
  • Aggregate Root: Representative entity of an Aggregate. Aggregate state changes are only accessible through the root, which ensures consistency.
  • Anti-Corruption Layer (ACL): Layer to protect the consistency and independence between the domain layer and external systems.

B

  • Bounded Context: Context that clearly divides the domain area, often aligned to the ubiquitous language.

C

  • CQRS: Command Query Responsibility Segregation — separates command and query responsibilities.
  • Context Map: Diagram that shows interactions and relationships between bounded contexts.
  • Core Domain: Domain area that gives a business a competitive advantage and contains essential business value (e.g., Google search engine, Netflix recommendation algorithm).

D

  • DDD: Domain-Driven Design — developing software centered on the business domain.
  • DIP: Dependency Inversion Principle — both high-level and low-level modules depend on abstractions.
  • Domain: The problem area a software system aims to solve.
  • Domain Event: Object that represents a specific past event within the domain model.
  • Domain Model: Abstraction representing key concepts, relationships, and actions within a business domain.
  • Domain Service: Service performing business logic across multiple entities, encapsulating that logic.

E

  • Entity: Object with a unique identifier that maintains identity over time.
  • Event Storming: Design methodology focusing on events to understand a business domain.

F

  • Factory: Encapsulation and abstraction pattern for object creation.

G

  • Generic Subdomain: Domain area handling generic functions used by many businesses (e.g., password encryption, user management).

R

  • Repository: Abstract layer that manages the persistence of an Aggregate.

S

  • Service: Object encapsulating business logic not tied to a specific entity or value object.
  • Strategic Design: High-level approach to structuring large systems, managing complexity, and focusing on core domains.
  • Supporting Subdomain: Subdomain essential to support the core domain but not a direct competitive differentiator.

T

  • Tactical Design: Detailed design approach for implementing domain models within individual bounded contexts.

U

  • Ubiquitous Language: Shared terminology used by domain experts, developers, and all team members.

V

  • Value Object: Object defined solely by its value, with no identifier; equality is determined by value.