Intro
Not all of a large system will be well designed.
Not all of a large system will be well designed.
Not all of a large system will be well designed.
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Precision designs are fragile
Boundaries
Context Boundaries
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
There are always multiple models.
context
"Context Map"
"Context Map"
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
Shipping Reference Scenarios
cooperative upstream/downstream
cooperative upstream/downstream
uncooperative upstream/downstream
uncooperative upstream/downstream
Map What Is
Push Translation to the Borders
Push Translation to the Borders
Benefits of Context Mapping
Benefits of Context Mapping
Distilling the Core Domain
More Stuff Our System Does
More Stuff Our System Does
More Stuff Our System Does
More Stuff Our System Does
Distilling the Core Domain
Which Parts are Generic?
Which Parts are Generic?
Distilling the Core Domain
Which Parts are Supporting?
Which Parts are Supporting?
Distilling the Core Domain
Which Parts are Generic?
Which Parts are Core Domain?
Distilling the Core Domain
Distilling the Core Domain
Distilling the Core Domain
Distilling the Core Domain
What Makes Us Special?
What Makes Us Special?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Core of an Efficient Routing System
What Makes Us Special?
What Makes Us Special?
What Makes Us Special?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Which Parts are Core Domain?
Can We Break This Clump?
Which Parts are Core Domain?
Which Parts are Core Domain?
Core of a Low-Hassles System
Non-Core Strategies
Non-Core Strategies
Non-Core Strategies
Non-Core Strategies
Benefits of Distillation
Benefits of Distillation
Benefits of Distillation
Strategic Quick Wins
Strategic Quick Wins
Strategic Quick Wins
Strategic Quick Wins
DDD Resources
Some design decisions have an impact on the trajectory of the whole project. Modeling is most needed in complex circumstances, yet the typical dynamics of the large projects that might benefit from it too often derail it or disconnect it from the real design. Conversely, modeling is best carried out by small, dynamic teams with a lot of autonomy, yet creating large systems requires coordination and project-spanning decisions. Managers and developers alike need to pay close attention to this intersection of design, project organization, and politics.
This talk briefly introduces two broad principles for strategic design.
First, 'context mapping' addresses a vital fact of life: Different groups think differently. Ignoring these realities leads to dumbed-down models, costly, buggy integrations, and disruption of project plans where they depend on other teams.
Then, 'distilling the core domain' concentrates effort on real business assets and gives a system focus, based on a shared vision. This view provides a systematic guide to when software must be developed by a team close to the business and could be outsourced or might better be purchased off-the-shelf. It suggests when "good enough" is good enough versus when it matters to push for excellence.
Eric Evans is the author of Domain-Driven Design: Tackling Complexity in Software, Addison-Wesley 2004. Since the early 1990s, he has worked on many projects developing large business systems with objects with many different approaches and many different outcomes. The book is a synthesis of that experience. It presents a system of modeling and design techniques, both tactical and strategic, that successful teams have used to align complex software systems with business needs and to keep projects agile as systems grow large. Eric now leads Domain Language, a consulting group which coaches and trains teams applying domain-driven design, helping them to make their development work more productive and more valuable to their business.