Название: Domain-Driven Design: The First 15 Years Автор: DDD Europe Издательство: Leanpub Год: 2020-02-15 Страниц: 295 Язык: английский Формат: True PDF, ePub Размер: 29.3 MB, 27.0 MB
Fifteen years after the publication of "Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans, DDD is gaining more adoption than ever. To celebrate the anniversary, we've asked prominent authors in the software design world to contribute old and new essays. With contributions by Martin Fowler, James Coplien, Rebecca Wirfs-Brock, Mel Conway, and many more.
DDD in a nutshell: • Distill a large problem domain into smaller sub domains. • Identify the core sub domains to reveal what is Important. The core domains are those of greater value to the business which require more focus, effort and time. • Collaborate with experts to discover an analysis model that will provide solutions to solve problems or reveal opportunities particularly in the core domain. • Use the same ubiquitous language to bind the analysis model to the code model. Use tactical patterns to separate technical code from domain code to prevent accidental complexity. • Split the model (if necessary) into smaller models where there is ambiguity in language or the model is too large for a single team. Enclose the model within a boundary to protect the models integrity. When working with multiple models it’s important that they are understood in context. • Keep a context map to understand the relationships, social and technical, of all models in play.
When a useful analysis model is discovered a code model can follow. I hasten to add that this process is not as linear as I am explaining here and often a code model is used during model exploration to prototype ideas in code to understand feasibility. The code model is to bound to the code analysis model via the use of a shared, or as DDD refers to it a Ubiquitous Language. The Ubiquitous Language ensures that both models stay in sync and are useful during evolution. Insights gained in either model are shared and knowledge is increased, leading to better problem solving and clearer communication between the business and development team.
Foreword Distilling DDD Into First Principles — Scott Millett To DDD or not to DDD… What to do if your domain is boring? — Weronika ?abaj Discovering Bounded Contexts with EventStorming — Alberto Brandolini Emergent Contexts through Refinement — Mathias Verraes The Captain of the Night Watch — Indu Alagarsamy Traces, Tracks, Trails, and Paths: An Exploration of How We Approach Software Design — Rebecca Wirfs-Brock Ubiquitous Language - More Than Just Shared Vocabulary — Avraham Poupko Domain Modeling with Algebraic Data Types — Scott Wlaschin Domain Modeling with Monoids — Cyrille Martraire Enhancing DDD — Prof. David West Are you building the right thing? — Alexey Zimarev Multiple Canonical Models – Martin Fowler From Human Decisions, to Suggestions to Automated Decisions – Jef Claes Time — Jeremie Chassaing Agents aka Domain objects on steroids – Einar Landre Domain-Driven Design as Usability for Coders — Anita Kvamme Model Exploration Whirlpool – Kenny Baas-Schwegler Domain-Driven Design as a Centered Set — Paul Rayner DDD — The Misunderstood Mantra — James O. Coplien Free the Collaboration Barrier - Mel Conway 7 Years of DDD: Tackling Complexity in a Large-Scale Marketing System — Vladik Khononov Tackling Complexity in ERP Software: a Love Song to Bounded Contexts — Machiel de Graaf and Michiel Overeem Calm Your Spirit with Bounded Contexts – Julie Lerman Notes