the software.”
The domain model is the basis for a software spec-
ification which could be created following a BDD ap-
proach.
The features defined in the software specification
represent the real world requirements. By implement-
ing those features the corresponding problem of the
real world is being addressed and solved appropri-
ately.
2.1 Ubiquitous Language
For the development of a domain model both domain
experts and technical experts have to be involved.
The domain experts have a comprehensive knowledge
and their own business-specific language describing
business-specific terms and concepts. Technical ex-
perts, on the other side, typically use a very technical
and highly specific language. They have great experi-
ence in the development of complex systems and are
adept at using state-of-the-art methods and technolo-
gies.
As a first step towards a domain model, it is cru-
cial to define a common and compulsory vocabulary
- a ubiquitous language. To achieve that, all involved
stakeholders enter into intense interactions with each
other. In a continuous, iterative and collaborative pro-
cess technical and domain experts determine a collec-
tion of common terms and specify a set of features.
This creative process is called knowledge crunching.
In knowledge crunching events all stakeholders
are brainstorming all their terms, concepts and issues
of the specific domain. The domain experts have to
abstract their knowledge, whereas the technical ex-
perts have to understand and formalize the domain
knowledge. Experiences of the stakeholders in simi-
lar domains or with earlier projects could be advanta-
geous and complement the domain knowledge. Sub-
sequently, the huge amount of input is being harmo-
nized, distilled, restructured and streamlined.
The result of this process is a collection of terms
and a feature list. All terms need to be clearly defined.
The relevant features have to be described accurately.
As a result, the ubiquitous language for the domain is
defined and ready to be used by all stakeholders in the
following development and operating phases.
When talking about a domain-specific term or
concept every involved stakeholder uses the same
word for it. Likewise, each involved stakeholder
should have a clear comprehension about every de-
fined term. As a consequence, in conversations and
written texts every stakeholder has the same under-
standing of a specific term or concept. This helps
avoiding ambiguities and misinterpretations and leads
to a clear and efficient communication and documen-
tation.
In case the team realizes that the definition or
name of a term or a concept is not useful or not correct
anymore, it needs to be revised and again collectively
defined and agreed upon. This procedure helps keep-
ing the ubiquitous language clean and up-to-date and
gives the flexibility to react on changes throughout
the whole development. The implications of a change
in the ubiquitous language and thereby in the domain
model will be examined in the next section.
2.2 Domain Model
The domain model is the pivotal point of a software
project following the principles of DDD. It describes
the interrelationship of central terms and concepts of
the determined common language and can therefore
be seen as the abstraction of the underlying domain.
According to (Evans, 2003) these terms and interrela-
tionships provide the semantics of a language that is
tailored to the domain while being precise enough for
technical development. The software specification,
forming the basis of the implementation, is build up
on the defined domain model which leads to a strong
binding between the domain model and the derived
implementation - the ”crucial cord that weaves the
model into development activity and binds it with the
code” (Evans, 2003).
The elaboration of the domain model is an iter-
ative process in which the experiences and insights
gleaned throughout the project are reflected. Thus,
the domain model may be subject of change all the
time. These changes are typically based on contri-
butions from domain experts and developers. If the
software project needs, at a given moment, some kind
of conceptual or linguistic change, e.g., additional
terms, new wording of existing terms or new relations
between concepts, this change is applied at domain
model level first. This change has implications to the
software specification (e.g., the class diagram) and in
turn to the code which again emphasizes the strong
binding between model and implementation.
2.2.1 Conceptual Modeling
DDD is not a technology or a methodology - it is a
way of thinking and a set of priorities for accelerating
software projects that have to deal with complicated
domains (Landre et al., 2007).
Effective modeling as defined in (Evans, 2003) is
obtained by performing the following five activities.
• Binding the model and the implementation;
• Cultivating a language based on the model;
Elaboration of a Domain Model for Migrating the Monolithic Software Architecture of a Data Management Server into a Microservice
Architecture
213