Domain-Driven Design: Tackling Complexity in the Heart of Software
Rate it:
Open Preview
Read between May 28, 2022 - September 10, 2023
7%
Flag icon
When the model objects couldn’t carry us through an important scenario, we brainstormed new ones or changed old ones, crunching their knowledge.
7%
Flag icon
We refined the model; the cod...
This highlight has been truncated due to consecutive passage length restrictions.
7%
Flag icon
As the team went through scenarios, the spoken expressions themselves provided a quick viability test of a proposed model, as the ear could quickly detect either the clarity and ease or the awkwardness of expression.
7%
Flag icon
It is the creativity of brainstorming and massive experimentation, leveraged through a model-based language and disciplined by the feedback loop through implementation, that makes it possible to find a knowledge-rich model and distill it.
7%
Flag icon
Effective domain modelers are knowledge crunchers.
7%
Flag icon
They take a torrent of information and probe for the relevant trickle.
7%
Flag icon
They try one organizing idea after another, searching for the simple view that ...
This highlight has been truncated due to consecutive passage length restrictions.
7%
Flag icon
Many models are tried and rejected or...
This highlight has been truncated due to consecutive passage length restrictions.
7%
Flag icon
Success comes in an emerging set of abstract concepts that makes sen...
This highlight has been truncated due to consecutive passage length restrictions.
8%
Flag icon
Knowledge trickles in one direction, but does not accumulate.
8%
Flag icon
but if programmers are not interested in the domain, they learn only what the application should do, not the principles behind it.
8%
Flag icon
Now an important business rule is hidden as a guard clause in an application method.
8%
Flag icon
As written, it is unlikely that any business expert could read this code to verify the rule, even with the guidance of a developer.
8%
Flag icon
It would be difficult for a technical, non-businessperson to connect the requirement text with the code.
8%
Flag icon
We can change the design to better capture this knowledge.
8%
Flag icon
The overbooking rule is a policy.
9%
Flag icon
It will be clear to all that overbooking is a distinct policy, and the implementation of that rule is explicit and separate.
9%
Flag icon
This example is meant to show that a domain model and corresponding design can be used to secure and share knowledge.
9%
Flag icon
Programmers can show business experts technical artifacts, even code, that should be intelligible to domain experts (with guidance), thereby closing the feedback loop.
9%
Flag icon
Rather than the logistics of the itinerary, what came to the fore were legal documents such as the bill of lading, and processes leading to the release of payments.
9%
Flag icon
Our view of shipping changed from moving containers from place to place, to transferring responsibility for cargo from entity to entity.
Alexandre Gomes
New insight from moving containers from place to place into transferring responsibility of cargo from entity to entity
9%
Flag icon
These terms and interrelationships provide the semantics of a language that is tailored to the domain while being precise enough for technical development.
9%
Flag icon
The effort of translation prevents the interplay of knowledge and ideas that lead to deep model insights.
9%
Flag icon
The vocabulary of that UBIQUITOUS LANGUAGE includes the names of classes and prominent operations.
9%
Flag icon
The LANGUAGE includes terms to discuss
9%
Flag icon
rules that have been made explicit ...
This highlight has been truncated due to consecutive passage length restrictions.
9%
Flag icon
roles. It may lack the semantic richness of the specialized jargons of the field.
9%
Flag icon
But those jargons can’t be used unadulterated because they contain ambiguities and contradictions.
9%
Flag icon
Committed to using this language in the context of implementation, the developers will point out imprecision or contradictions, engaging the domain experts in discovering workable alternatives.
9%
Flag icon
Use the model as the backbone of a language.
10%
Flag icon
Recognize that a change in the UBIQUITOUS LANGUAGE is a change to the model.
10%
Flag icon
Domain experts should object to terms or structures that are awkward or inadequate to convey domain understanding; developers should watch for ambiguity or inconsistency that will trip up design.
10%
Flag icon
One of the best ways to refine a model is to explore with speech, trying out loud various constructs from possible model variations. Rough edges are easy to hear.
10%
Flag icon
It is vital that we play around with words and phrases, harnessing our linguistic abilities to the modeling effort, just as it is vital to engage our visual/spatial reasoning by sketching diagrams.
10%
Flag icon
Just as we employ our analytical abilities with methodical analysis and design, and that mysterious “feel” of the code.
10%
Flag icon
These ways of thinking complement each other, and it takes all of them to find us...
This highlight has been truncated due to consecutive passage length restrictions.
10%
Flag icon
Of all of these, experimenting with language is most ...
This highlight has been truncated due to consecutive passage length restrictions.
11%
Flag icon
Play with the model as you talk about the system. Describe scenarios out loud using the elements and interactions of the model, combining concepts in ways allowed by the model. Find easier ways to say what you need to say, and then take those new ideas back down to the diagrams and code.
11%
Flag icon
Simple, informal UML diagrams can anchor a discussion.
11%
Flag icon
Sketch a diagram of three to five objects central to the issue at hand, and everyone can stay focused.
11%
Flag icon
Object interaction diagrams can illustrate some tricky hotspots in the design, but the bulk of the interactions can’t be shown that way.
11%
Flag icon
is just too much work, both to create the diagrams and to
11%
Flag icon
read ...
This highlight has been truncated due to consecutive passage length restrictions.
11%
Flag icon
Diagrams are a means of communication and explanation, and they facilitate brainstorming.
11%
Flag icon
They serve these ends best if they are minimal.
11%
Flag icon
Rather than a diagram annotated with text, I write a text document illustrated with selective and simplified diagrams.
11%
Flag icon
Always remember that the model is not the diagram.
12%
Flag icon
By keeping documents minimal and focusing them on complementing code and conversation, documents can stay connected to the project.
13%
Flag icon
If the managers perceive analysis to be a separate process, the development team may not be given adequate access to domain experts.
13%
Flag icon
Whatever the cause, software that lacks a concept at the foundation of its design is, at best, a mechanism that does useful things without explaining its actions.