Slides Taken from : Dr.
Michael Eichberg's Software Engineering Course
Domain Model
• Why:
Domain modeling helps us to identify the relevant
concepts and ideas of a domain
• When:
Domain modeling is done during object-oriented
analysis
• Guideline:
Only create a domain model for the tasks at hand
The Domain Model illustrates noteworthy concepts in a
domain.
Domain Model =dt. Analysemodell (Konzeptmodell)
Domain Model | 4
• The domain model is created during object-oriented analysis to
decompose the domain into concepts or objects in the real world
• The model should identify the set of conceptual classes
(The domain model is iteratively completed.)
• It is the basis for the design of the software
The domain model is also called conceptual model, domain object model or
analysis object model.
Conceptual Classes Domain Model | 5
• Conceptual classes are ideas, things or objects in the domain
A conceptual class has a symbol representing the class, an intension and
an extension that defines the set of examples to which the conceptual
class applies.
intension =dt.(hier) Bedeutung
extension =dt.(hier) Ausprägung
• Domain concepts / conceptual classes are not necessarily
software objects as, e.g., in Java, C#, Ruby, ...!
To visualize domain models the UML class diagram
notation is used.
Visualizing the Domain Model | 6
• However, no operations are defined in domain models
• Only ...
• domain objects and conceptual classes
• associations between them
• attributes of conceptual classes
The result is a conceptual perspective model.
Visualizing
Domain Models
• Exemplified
(By means of a basic course management system.)
Statements about a Course Management System
Visualizing the Domain Model | 8
• During a semester a lecturer reads one or more lectures
• Sometimes the lecturer is on leave to do research, in this case
(s)he does not give a lecture
• A student usually attends one or more lectures, unless (s)he has
something better to do
• During the semester there will be several exercises which are
meant to be solved by small study groups
• Each student is assigned to one particular study group for the
whole semester
• A study group consists of two to three students
• After submission of a solution by a study group it is graded by a
tutor
• ...
A class describes a set of objects with the same
semantics, properties and behavior.
When used for domain modeling, it is a visualization of a real world
concept.
Visualizing the Domain Model | 9
• During a semester a lecturer
Exercise
reads one or more lectures Tutor
• A student usually attends one
or more lectures, ... Semester
Student
• During the semester there will
be several exercises...
Lecture
• Each student is assigned to one Lecturer
particular study group for the
whole semester Grade
Study
• ... it is graded by a tutor Group
Attributes are logical data values of an object.
It is useful to identify those attributes of conceptual classes that are
needed to satisfy the information requirements of the current
scenarios under development.
Visualizing the Domain Model | 10
• ... after submitting a solution it
is graded by a tutor
• The bonus is a relative bonus Student
that reflects the relative number attributes
name
/bonus : Percentage
of exercise points gained
during the semester derived attribute ("/")
• ... Exercise
The bonus is derived.
Solution task
submission date
achieved exercise points exercise points
An association is a relationship between classes.
The ends of an association are called roles.
Roles optionally have a multiplicity, name and navigability.
Visualizing the Domain Model | 11
• A lecturer reads one or more
lectures... name
• A student usually attends one Student
Study consists of ‣
or more lectures... Group 1 2..3 name
/bonus : Percentage
• A study group consists of two
to three students... association
multiplicity
• During the semester there will
be several exercises
reads ‣ *
• ... Lecturer
*
Lecture
The multiplicity defines how many instances of a class A can be associated
with one instance of a class B at any particular moment.
(e.g., * ≙ zero or more; 1..10 between 1 and 10; 1,2 one or two)
Visualizing the Domain Model | 12
• A student usually attends one
or more lectures, unless (s)he
has something better to do
• A study group consists of two Student
to three students... Study
1 2,3 name
Group
• ... /bonus : Percentage
1..*
*
Lecture
Two classes can have multiple associations.
Visualizing the Domain Model | 13
• A student usually attends one
or more lectures, unless the
student has something better
to do attends ‣
Student 1..* * Lecture
• A study group consists of two
is tutor for ‣ * description
name
to three students; after *
submitting a solution it is
graded by a tutor who is also a
student
A preliminary domain model for a course management
system.
Visualizing the Domain Model | 14
Student
attends ‣ Lecture reads Lecturer
*
name *
1..* *
/bonus : description name
Percentage
1
2..3
owns ‣
consists of ‣
12..14
Exercise
1
solves ‣ task
StudyGroup submission
* *
date
exercise
Solution
points The Domain Model is
sometimes also called
achieved exercise
points a Visual Dictionary.
Domain Modeling
• Overview
Excerpt Of the Domain Model For the POS System
Domain Modeling | 16
?
Which are noteworthy
domain concepts / domain objects?
How to create the domain model?
(If we are not readily familiar with the domain.)
Domain Modeling | 17
1. Find the conceptual classes
Strategies:
}
a. Reuse or modify an existing model
explained in
b. Use a category list the following
c. Identify noun phrases
2. Draw them as classes in a UML class diagram
3. Add associations and attributes
Use the domain vocabulary; e.g. a model for a library should use names like
“Borrower” instead of customer.
How to create the domain model?
Use a category list to find the conceptual classes.
line item =dt. Einzelposten
transaction =dt. Abwicklung / Durchführung; Geschäftsvorfall
Domain Modeling | 19
Classes
Conceptual Class Category
(for the POS system)
Business transactions... Sale, Payment
Transaction line items... SalesLineItem
Product or service related to a transaction or
Item
transaction line item.
Where is the transaction recorded? Register
Roles of people or organizations related to the
Cashier, Customer, Store
transaction; actors in use cases.
Place of transactions. Store
Noteworthy events, often with a time or place that
Sale, Payment
needs to be remembered.
... ...
How to create the domain model?
Identify noun phrases to find the conceptual
classes(linguistic analysis).
Domain Modeling | 20
• Identify the nouns and noun phrases in textual descriptions of a
domain and consider them as candidate conceptual classes or
attributes
• A mechanical noun-to-class mapping isn’t possible; words in natural
languages are ambiguous; i.e. the same noun can mean multiple
things and multiple nouns can actually mean the same thing
“Use Cases” are also an excellent source for identifying conceptual classes.
How to create the domain model?
Identify noun phrases to find the conceptual classes.
Domain Modeling | 21
Process Sale: A customer arrives at a checkout with items to
purchase. The cashier uses the POS system to record each
item. The system presents a running total and line-item
details. The customer enters payment information, which the
system validates and records. The system updates the
inventory. The customer receives a receipt from the system
and then leaves the store with the items.
How to create the domain model?
Identify noun phrases to find the conceptual classes.
Domain Modeling | 22
Process Sale: A customer arrives at a checkout with items to
purchase. The cashier uses the POS system to record each
item. The system presents a running total and line-item
details. The customer enters payment information, which the
system validates and records. The system updates the
inventory. The customer receives a receipt from the system
and then leaves the store with the items.
How to create the domain model?
Identify noun phrases to find the conceptual classes.
Domain Modeling | 23
Process Sale: A customer arrives at a checkout with items to
purchase. The cashier uses the POS system to record each
item. The system presents a running total
Identified candidate conceptual classes:and line-item
details. The customer
Customer, enters
Item, payment
Cashier, information,
Store, Payment, which the
Sales
system validates
Line and records. The
Item, Inventory, system
Receipt, Sale. updates the
inventory. The customer receives a receipt from the system
and then leaves the store with the items.
How to create the domain model?
Identify noun phrases to find the conceptual classes.
Domain Modeling | 24
Process Sale: A customer arrives at a checkout with items to
purchase. The cashier uses the POS system to record each
item. The system presents a running total
Identified candidate conceptual classes:and line-item
details. The customer
Customer, enters
Item, payment
Cashier, information,
Store, Payment, which the
Sales
system validates
Line and records. The
Item, Inventory, system
Receipt, Sale. updates the
inventory. The customer receives a receipt from the system
Should Receipt be in
and then leaves the store with the items.
the domain model?
Guidelines when to include a candidate conceptual
class that reports Information into the domain model
Domain Modeling | 25
• In general, it is not useful since all information is derived or
duplicated from other sources
• If it has a specific semantics w.r.t. the business, then it should be
included
Identified candidate conceptual classes:
Customer, Item, Cashier, Store, Payment, Sales
Line Item, Inventory, Receipt, Sale.
Should Receipt be in
the domain model?
Guidelines when to include a candidate conceptual
class that reports Information into the domain model
Domain Modeling | 26
• In general, it is not useful since all information is derived or
duplicated from other sources
• If it has a specific semantics w.r.t. the business, then it should be
included
Identified candidate conceptual classes:
Customer, Item, Cashier, Store, Payment, Sales
Line Item, Inventory, Receipt, Sale.
A receipt is just a report of
a sale and a payment...
Guidelines when to include a candidate conceptual
class that reports Information into the domain model
Domain Modeling | 27
• “Facts”:
• Identified candidate conceptual classes: ... Receipt, .…
• A receipt is just a report of a sale and a payment...
• Should Receipt be in the domain model?
• Well, it depends….
• … if we just consider the current scenario then receipt should not
be part of the domain model; a receipt is just a report
• … if we also consider how to handle returns then a receipt
represents an important concept on its own Domain
• How about legal restrictions...? Requirement
Guidelines when to include a description class into the
domain model
Domain Modeling | 28
• A description class contains information that describes something
else
Examples:
• a product description records the price, picture and text of an item
• a flight description contains information about the flight (number)
and the source and target destinations
Guidelines when to include a description class into the
domain model
Domain Modeling | 29
• A description class should be added to the domain model when:
• There needs to be a description about an item or service,
independent of the current existence of any examples of those
items or services
• Deleting instances of things they describe results in a loss of
information that needs to be maintained, but was incorrectly
associated with the deleted thing
• It reduces redundant or duplicated information
When should I model something as
an attribute or a class?
Domain Modeling | 30
• Rule of Thumb:
If we do not think of some
conceptual class X as a number,
date or text in the real world, X Exercise
is probably a conceptual class, task
StudyGroup
not an attribute. submission
date
exercise
points
Solution
achieved exercise
points
When should I model something as
an attribute or a class?
Let’s assume that we develop an airline reservation system.
Domain Modeling | 31
• Rule of Thumb:
If we do not think of some conceptual class X as a number or text
in the real world, X is probably a conceptual class, not an
attribute.
• Should destination be an attribute of flight, or a conceptual class
airport?
• A destination airport is a building at a specific place, it is not just a
number or some text.
• Hence, it should be a conceptual class.
Flies-from 1
*
• How about the name of the airport? Flight Airport
* Flies-to 1
When should I add an association to the domain model?
Domain Modeling | 32
• Rule of Thumb:
Include associations in the
domain model for which
knowledge of the relationship
needs to be preserved for
some duration.
We are working on the
conceptual model; we are not
modeling associations at the
software level.
When should I add an association to the domain model?
Domain Modeling | 33
• When an association is among the common associations list:
• A is a transaction related to another transaction B
• A is a line item of a transaction B
• A is a product or service for a transaction B
• A is a role related to a transaction B
• A is physical or logical part of B
• ...
When should I add an association to the domain model?
Domain Modeling | 34
• E.g. the relation between a Sale and a SalesLineItem needs to
be remembered
• However, it is not necessary to store the relation between a
Cashier and a ProductDescription that he looks up
Name an association based on a ClassName-
VerbPhrase-ClassName format.
The verb phrase creates a sequence that is readable and meaningful.
Domain Modeling | 35
• Good examples:
• Player Is-on Square
• Sale Paid-by CashPayment
• Bad examples:
• Sale Uses CashPayment
(Uses is usually generic and doesn’t tell us anything.)
• Player Has Square
(Has is usually generic and doesn’t tell us anything.)
The attributes in a domain model should preferably be
“primitive” data types (w.r.t. the domain!).
Domain Modeling | 36
• Very common data types
include: Boolean, Date, Cashier
Number, Character, String, name
Address, Color, Phone Number, currentRegister
?
…
• Consider modeling quantities
as classes to be able to
associate units
e.g. the data type of the amount
attribute of a payment should
indicate the currency
The attributes in a domain model should preferably be
“primitive” data types.
Domain Modeling | 37
• Very common data types
include: Boolean, Date, Cashier
avoid:
Number, Character, String, name
Address, Color, Phone Number, currentRegister
…
• Consider modeling quantities Cashier
recommended:
as classes to be able to name
associate units Use associations to
e.g. the data type of the amount model dependencies Register
attribute of a payment should between conceptual number
indicate the currency classes; do not use
attributes.
Consider defining a new data type class for something
that is initially considered a string.
Domain Modeling | 38
• If the string is composed of
separate sections
ProductDescription
e.g., phone number, name of avoid:
itemId : ItemId
person,...
• If different operations are
ProductDescription
associated with the string recommended:
e.g., social security number 1
• If the string has other attributes 1
Item
• If the string is a quantity with a id
countryCode
unit
e.g., money has a unit for currency
Excerpt Of the Domain Model For the POS System
Domain Modeling | 39
?
Which are noteworthy
domain concepts / domain objects?
Excerpt Of the Domain Model For the POS System
Domain Modeling | 40
Records-sale-of
Sales LineItem Item
quantity 0..1 1
*
1..*
Stocked-in
Contained-in
1 1
Sale Store
date address
time name
0..1
Captured-on ▶
Paid-by Houses
1
Payment Register
amount
Domain Model and
Domain Modeling
• Summary
The domain model serves as a source of inspiration for
the design model which will be discussed later on.
Purpose of Domain Modeling | 42
Domain Model 1 1 Sale
Payment
date
amount
time
inspiration / basis
1 1 Sale
Payment
date: Date
amount: Money
startTime: Time
getBalance():Money
getTotal(): Money
Design Model
By using the domain model as a direct inspiration for software classes the
representational gap between the domain concepts and the program is
(relatively) small.
Goal of the Lecture | 43
The goal of this lecture is to enable you to
systematically carry out small(er) software projects
that produce well-designed software.
- Domain Modeling is useful to understand the ideas and
concepts of the domain and their interrelationships
- A Domain Model is usually created at the beginning of a project
and is a basis for the design model
- A Domain Model is created using a subset of the UML class
diagram notation
Goal of the Lecture | 44
• The goal of this lecture is to enable you to systematically
carry out small(er) commercial or open-source projects.
Domain Modeling
…
Software Project Management
Project Project
Start Start of an iteration End
Requirements Management
Domain Modeling