LLMpediaThe first transparent, open encyclopedia generated by LLMs

domain-driven design

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: Martin Fowler Hop 4
Expansion Funnel Raw 93 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted93
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
domain-driven design
NameDomain-driven design
Introduced2003
AuthorEric Evans
Influenced byEric Evans; Martin Fowler; Kent Beck; Ward Cunningham; Ralph Johnson
Main subjectsSoftware architecture; software engineering; enterprise modeling

domain-driven design

Domain-driven design is an approach to software development that emphasizes aligning software models with complex business domains through intensive collaboration between technical teams and domain experts. It advocates creating a ubiquitous language, rich domain models, and architectural patterns that reflect organizational structure and business strategy. Originating in the early 2000s, it draws on practices from object-oriented design, agile methodologies, and enterprise architecture.

Overview

Domain-driven design emerged in the context of software engineering debates involving figures and institutions such as Eric Evans, Martin Fowler, Kent Beck, Ward Cunningham, and Grady Booch. It synthesizes ideas present in works and events like Design Patterns (book), Refactoring (book), Extreme Programming (book), and conferences including OOPSLA, ICSE, and QCon. Historical influences include projects at organizations like Microsoft, IBM, Oracle Corporation, and ThoughtWorks, and its adoption has been discussed in publications by Addison-Wesley, O'Reilly Media, and ACM. The approach has been compared and contrasted with architectures promoted by Sun Microsystems, Google, Amazon (company), and case studies from Spotify and Netflix, Inc..

Core Concepts

Central concepts were articulated by Eric Evans and elaborated by practitioners such as Vaughn Vernon and Greg Young. Key notions include the ubiquitous language used across stakeholders, the bounded context that delimits model applicability, entities and value objects that echo patterns from Design Patterns (book), and aggregates which resemble structures discussed at ACM SIGPLAN workshops. Context mapping connects multiple bounded contexts in ways similar to modeling approaches endorsed at IEEE conferences and by organizations like C4 model proponents. Strategic patterns reference organizational design ideas discussed by Conway's law commentators and explored in writings from Martin Fowler and Rebecca Wirfs-Brock.

Tactical Patterns and Building Blocks

Tactical patterns include entities, value objects, repositories, factories, domain events, and services—concepts that parallel constructs in Object-Oriented Programming texts and examples from Smalltalk and Ada (programming language). Implementations often use frameworks and languages associated with Java (programming language), C#, Ruby (programming language), Python (programming language), and platforms such as Spring Framework and .NET Framework. Influential patterns and books include works by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides as well as patterns propagated via Gang of Four literature and presentations at Google I/O and Microsoft Build.

Strategic Design and Organizational Alignment

Strategic design addresses alignment between bounded contexts and organizational units, invoking notions of team topologies discussed by companies like Amazon (company), Spotify, and Google. The principle that architecture mirrors organization is often linked to Conway's law and is discussed in management literature from Harvard Business Review and engineering case studies at Microsoft Research. Context mapping techniques and anti-corruption layers are applied in enterprise settings at firms such as Salesforce, SAP SE, Siemens, and Accenture, and debated in communities around Lean Startup (book) and The Phoenix Project case studies.

Implementation Practices and Tooling

Practical implementation leverages tooling from ecosystems maintained by JetBrains, Eclipse Foundation, Microsoft Corporation, and Amazon Web Services; modeling tools from Sparx Systems and IBM Rational; and CI/CD pipelines based on Jenkins, GitLab, GitHub Actions, and Travis CI. Developers combine domain models with persistence and messaging patterns using technologies like Kafka (software), RabbitMQ, PostgreSQL, MongoDB, and EventStoreDB. Testing and quality practices referenced by Kent Beck and Martin Fowler rely on frameworks such as JUnit, xUnit.net, RSpec, and pytest along with static analysis tools from SonarSource and performance profiling from PerfView and JProfiler.

Criticisms and Limitations

Critiques originate from practitioners and organizations including commentators at Stack Overflow, articles in IEEE Software, and blogs by engineers at Facebook, Twitter, and Uber Technologies, Inc.. Common limitations cited include complexity in adoption noted in case studies from Forrester Research and Gartner, Inc., overhead in smaller teams discussed in Joel Spolsky writings, and challenges integrating with legacy systems at enterprises like Bank of America and Deutsche Bank. Skeptics compare the approach to alternative paradigms advocated by Functional Programming proponents and microservices critics from communities around 12-factor app and Reactive Manifesto. Debates continue in venues like InfoQ, DZone, and industry conferences including Devoxx and QCon.

Category:Software architecture