language, while connecting team communication to the software implementation. That language
can be ubiquitous in the team's work.
The vocabulary of that
UBIQUITOUS
LANGUAGE
includes the names of classes and prominent
operations. The
LANGUAGE
includes terms to discuss rules that have been made explicit in the
model. It is supplemented with terms from high-level organizing principles imposed on the model
(such as
CONTEXT MAPS
and large-scale structures, which will be discussed in Chapters 14 and 16).
Finally, this language is enriched with the names of patterns the team commonly applies to the
domain model.
The model relationships become the combinatory rules all languages have.
The meanings of words
and phrases echo the semantics of the model.
The model-based language should be used among developers to describe not only artifacts in the
system, but tasks and functionality. This same model should supply the language for the
developers and domain experts to communicate with each other, and for the domain experts to
communicate among themselves about requirements,
development planning, and features. The
more pervasively the language is used, the more smoothly understanding will flow.
At least, this is where we need to go. But initially the model may simply not be good enough to fill
these roles. It may lack the semantic richness of the specialized jargons of the field. But those
jargons can't be used unadulterated because they contain ambiguities and contradictions. It may
lack the more subtle and active features the developers have created in the code, either because
they do not think
of those as part of a model, or because the coding style is procedural and only
implicitly carries those concepts of the domain.
But although the sequence seems circular, the knowledge crunching process that can produce a
more useful kind of model depends on the team's commitment to model-based language.
Persistent use of the
UBIQUITOUS LANGUAGE
will force the model's weaknesses into the open. The
team will experiment and find alternatives to awkward terms or combinations.
As gaps are found
in the language, new words will enter the discussion.
These changes to the language will be
recognized as changes in the domain model
and will lead the team to update class diagrams and
rename classes and methods in the code,
or even change behavior, when the meaning of a term
changes.
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.
Of course, domain experts will speak outside the scope of the
UBIQUITOUS LANGUAGE
,
to explain and
give broader context. But within the scope the model addresses, they should use
LANGUAGE
and
raise concerns when they find it awkward or incomplete—or wrong. By using the model-based
language pervasively and not being satisfied until it flows, we approach a model that is complete
and
comprehensible, made up of simple elements that combine to express complex ideas.
Therefore:
Do'stlaringiz bilan baham: