Domain Driven Design
- Process/Agile workflow
- The entire agile team
- Agile coach / Agile master
Domain-driven design (DDD) is an approach to modelling complex software. It builds the bridge between the domain and the development.
Domain-driven design is neither a technology nor a methodology. It offers a structure of practices and terminology for taking design decisions. Simply expressed the design is driven by the domain, meaning that architecture and implementation are strictly guided by the domain. The domain should be the heart of a system. The approach was developed by Eric Evans, who introduced this approach in his book in 2003.
DDD is a suitable approach when building complex software systems.
DDD makes it easier to realize the domain in the software.
DDD promises to increase the productivity of software projects dealing with complex domains. It also aims at increasing the benefit for the end user.
The premise of DDD is to focus the project on the core domain and domain logic, and to model complex designs. The third premise is to initiate a creative collaboration between technical and domain experts to iteratively get closer and closer to the conceptual core of the problem. DDD always starts in the problem space - only when this is sufficiently understood, it moves on to the solution space. The heart of DDD is the ubiquitous language. This language consists of all the terms that domain experts use when they talk about the domain and is also used in the source code.
In order to understand and learn how to apply DDD, the book "Learning Domain-Driven Design" by Vlad Khononov (2021, O'Reilly Media, Inc.) provides a practical guide.
Eberhard Wolff (2020): Fachlich sinnvoll schneiden … - Warum Domain-driven Design?, Entwickler Magazin Spezial Vol. 24: DDD, Adrian Gygax, Martin Kernland (2016): Einführung in die Konzepte von Domain-driven Design, entwickler.de,domaindrivendesign.org (2007) What is Domain-Driven Design?