0% found this document useful (0 votes)
168 views44 pages

WS11 EiSE 07 Domain - Modeling PDF

The document discusses domain modeling and provides an example domain model for a course management system. It defines key concepts such as the domain model, conceptual classes, associations, attributes, and multiplicity. The domain model for a course management system visualizes conceptual classes like Student, Lecture, StudyGroup and their relationships. It shows attributes of classes and associations between classes with multiplicity constraints. The domain model provides a conceptual view of the domain to support software analysis and design.

Uploaded by

Soumak Banerjee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
168 views44 pages

WS11 EiSE 07 Domain - Modeling PDF

The document discusses domain modeling and provides an example domain model for a course management system. It defines key concepts such as the domain model, conceptual classes, associations, attributes, and multiplicity. The domain model for a course management system visualizes conceptual classes like Student, Lecture, StudyGroup and their relationships. It shows attributes of classes and associations between classes with multiplicity constraints. The domain model provides a conceptual view of the domain to support software analysis and design.

Uploaded by

Soumak Banerjee
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

Dr.

Michael Eichberg
Software Engineering
Department of Computer Science
Technische Universität Darmstadt

Introduction to Software Engineering

Domain Model and


Domain Modeling
• Resources:
Craig Larman; Applying UML and Patterns: An Introduction
to Object-Oriented Analysis and Design and the Unified
Process; Prentice Hall, 2001
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

Domain Model | 3

“Curtis’law: […] Good designs require deep


application knowledge.”

Sinngemäß: “Ein guter (Software-)Entwurf benötigt ein


tiefgreifendes Verständnis des Einsatzgebiets (der zu erstellenden
Software.)”

Albert Endres and Dieter Rombach


A Handbook of Software and Systems Engineering; Addison
Wesley 2003
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


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 focus on doing
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


reads one or more lectures Tutor
Exercise

• A student usually attends


one or more lectures, ...
Semester
Student
• During the semester there
will be several exercises...
• Each student is assigned to
Lecture
one particular study group for Lecturer
the whole semester
• ... it is graded by a tutor Grade
Study 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
Student
• The bonus is a relative bonus
that reflects the relative name
attributes
number of exercise points /bonus : Percentage

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 or more lectures... Student
consists of ‣
Study Group
• A study group consists of two 1 2..3 name

to three students... /bonus : Percentage

• During the semester there association


multiplicity
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
Student
• A study group consists of two
Study Group
to three students... 1 2,3 name
/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
• A study group consists of attends ‣
two to three students; after Student 1..*
* Lecture
submitting a solution it is is tutor for ‣
name * description
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..* *
description name
/bonus : Percentage
1
2..3

owns ‣
consists of ‣

12..14

1 Exercise
solves ‣
StudyGroup task
* *
submission date
exercise points
Solution
The Domain Model is
achieved exercise points sometimes also called
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
b. Use a category list in the
c. Identify noun phrases following
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?
To find the conceptual classes reuse or modify an
existing model.
Domain Modeling | 18

Example: existing model for bank accounts and associated entries.

{balance = sum(entries.amount)}

1 0..* Entry
Acount
amount: Quantity
balance: Quantity
whenChanged: Timepoint

[One possible source]


Martin Fowler; Analysis Patterns - Reusable Object Models; Addison-Wesley, 1997
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 present 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
Identified present
candidate a runningclasses:
conceptual total and line-
Customer, Item, Cashier, Store, Payment,
item details. The customer enters payment information,
Sales Line Item, Inventory, Receipt, Sale.
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 | 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
Identified present
candidate a runningclasses:
conceptual total and line-
Customer, Item, Cashier, Store, Payment,
item details. The customer enters payment information,
Sales Line Item, Inventory, Receipt, Sale.
which the system validates and records. The system
updates the inventory. The customer
Should receives
Receipt be in a receipt
the domain
from the system and then leaves model?
the store with the items.
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
• How about legal restrictions...? Domain
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
Exercise
world, X is probably a
conceptual class, not an StudyGroup task
submission date
attribute.
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.
• How about the name of the airport?
Flies-from 1
*
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,
Number, Character, String, Cashier
Address, Color, Phone avoid: name
currentRegister
Number,…

?
• Consider modeling
quantities as classes to be Cashier
recommended:
able to associate units name
e.g. the data type of the amount
attribute of a payment should Register
indicate the currency number
The attributes in a domain model should preferably
be “primitive” data types.
Domain Modeling | 37

• Very common data types


include: Boolean, Date,
Number, Character, String, Cashier
Address, Color, Phone avoid: name
currentRegister
Number,…
• Consider modeling
quantities as classes to be Cashier
recommended:
able to associate units name
e.g. the data type of the amount
attribute of a payment should Use associations to
Register
indicate the currency model dependencies number
between conceptual
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
e.g., phone number, name of ProductDescription
avoid:
person,... itemId : ItemId

• If different operations are


associated with the string ProductDescription
e.g., social security number recommended:

• If the string has other 1

attributes 1
ItemId
• If the string is a quantity id
countryCode
with a 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
Item
LineItem
0..1 1
quantity
*
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

You might also like