Sie sind auf Seite 1von 30

Chapter 9

Domain Models

CS6359 Fall 2012 John Cole

Why do this?
If you dont understand the domain, you cant program for it effectively Lower the representational gap between mental model and software model

CS6359 Fall 2012 John Cole

Objectives
Identify conceptual classes related to the current iteration Create an initial domain model Model appropriate attributes and associations

CS6359 Fall 2012 John Cole

What is a Domain Model?


Illustrates noteworthy concepts in a domain. That is, defines what the system is about Models the things in your system and the way they relate to each other A domain model is conceptual, not a software artifact A visual dictionary

CS6359 Fall 2012 John Cole

Whats the Difference?


Conceptual Class:
Sale amt item

Software Artifacts:
SalesDatabase

Sale Double amt; Item item; void print()


CS6359 Fall 2012 John Cole 5

Business Object Model


Class diagrams with no methods, just fields May show domain objects Associations between classes Attributes of conceptual classes

CS6359 Fall 2012 John Cole

Domain Model, visually

CS6359 Fall 2012 John Cole

Conceptual Classes
An idea, thing, or object SymbolWords or images representing a conceptual class IntensionDefinition of a conceptual class ExtensionThe set of examples to which the class applies It is not a data model

CS6359 Fall 2012 John Cole

How to Create a Domain Model


Find the conceptual classes Draw them as classes in a UML class diagram Add associations necessary to record relationships Add attributes necessary for information to be preserved Use existing names, the vocabulary of the domain
CS6359 Fall 2012 John Cole 9

How do I find Conceptual Classes?


Reuse or modify existing models. If there are published models, prior art, or books, use them Use a category list (Table 9.1) Identify noun phrases (linguistic analysis)

CS6359 Fall 2012 John Cole

10

Noun Phrase Identification


Consider the following problem description, analyzed for Subjects, Verbs, Objects:
The ATM verifies whether the customer's card number and PIN are correct. S V O O O If it is, then the customer can check the account balance, deposit cash, and withdraw cash. S V O V O V O Checking the balance simply displays the account balance. S O V O Depositing asks the customer to enter the amount, then updates the account balance. S V O V O V O Withdraw cash asks the customer for the amount to withdraw; if the account has enough cash, S O V O O V S V O the account balance is updated. The ATM prints the customers account balance on a receipt. O V S V O O

CS6359 Fall 2012 John Cole

11

Noun Phrases
Analyze each subject and object as follows:
Does it represent a person performing an action? Then its an actor, R. Is it also a verb (such as deposit)? Then it may be a method, M. Is it a simple value, such as color (string) or money (number)? Then it is probably an attribute, A. Which NPs are unmarked? Make it C for class. Verbs can also be classes, for example: Deposit is a class if it retains state information
CS6359 Fall 2012 John Cole 12

Where are the Terms?


Some are in the use case Some come from domain experts Natural language is imprecise and ambiguous, so you need to use judgment

CS6359 Fall 2012 John Cole

13

POS example
You can create a list, or you can use a set of class diagrams, per the table below
Register Item Store Sale

Sales LineItem

Cashier

Customer

Manager

Payment

Product Catalog

Product Specification

CS6359 Fall 2012 John Cole

14

Monopoly Game Domain Model

CS6359 Fall 2012 John Cole

15

Maintaining the Model


Usually the model is a guideline to thinking, not an end in itself. Thus it will change as you learn more Who will use the updated model?

CS6359 Fall 2012 John Cole

16

Report Objects
Including reports in a domain model usually isnt useful because the information is derived from other objects. There are special cases, such as receipts, that should be in the model.

CS6359 Fall 2012 John Cole

17

Mapmaker (domain terms) Strategy


Use existing names so far as possible. Learn the terms your users use. Exclude out-of-scope features. If a feature is not in the current iteration, dont use it. Model the unreal world (i. e. Telecom) by listening carefully to the vocabulary of experts. Port means two different things in telecom and shipping.
CS6359 Fall 2012 John Cole 18

Attributes vs. Classes


Common mistake: representing something as an attribute when it should have been a class. If we do not think of some conceptual class X as a number or text in the real world, it should probably be a class, not an attribute. Should store be an attribute of Sale or should it be a class?

CS6359 Fall 2012 John Cole

19

Description Classes
A description class contains information that describes something else E. g. Product Description records the price, picture, text description (and what else?) of an item

CS6359 Fall 2012 John Cole

20

Why Use Them?


If we keep all the information in, say, a sales line item, once all of that item are sold, there is no record of what the item was How does this relate to database design?

CS6359 Fall 2012 John Cole

21

Associations
Relationship between (instances of) classes that indicates some interesting and meaningful connection What objects need memory of a relationship? In Monopoly, where each piece is and which player owns which token No need to remember numbers on the dice

CS6359 Fall 2012 John Cole

22

Associations (contd)
Avoid having too many; this adds communication paths and complexity Will they be implemented in software? UML: Line between classes with the name of the association Name with VerbPhrase-ClassName format. E. g. Sale Paid By CashPayment Each end of an association is called a Role
CS6359 Fall 2012 John Cole 23

Associations (contd)
Multiplicity: how many instances of class A can be associated with an instance of class B. E. g. an instance of Store can be associated with many (zero or more) Items This is at a particular moment, not over time Discussion of 0..1 or 1 Multiple associations: Flight FliesTo and FliesFrom an airport Common Associations List on p. 155
CS6359 Fall 2012 John Cole 24

Attributes
An Attribute is a logical data value of an object You can also have derived attributes denoted by / before the name Full syntax: visibility Name : type multiplicity = default {property string} +pi : Real=3.14159 {read-only}
Sale date startTime : Time
CS6359 Fall 2012 John Cole 25

attributes

Attribute Types
Usually primitive data types, as well as things like Color, DateTime, Zip code, etc. The latter are specializations of primitive types It should not normally be a class, such as Sale or Airport Relate conceptual classes with an association, not an attribute. No foreign keys Attributes in code are okay
CS6359 Fall 2012 John Cole 26

New Data Type Classes


Things like ItemID or ClaimNumber are not always simple data types, even though they look like them If the attribute contains separable pieces, it can be its own class. For example, a Claim Number has the state, year, and day encoded in it If it has operations associated with it
CS6359 Fall 2012 John Cole 27

New Data Type Classes (contd)


If it has other attributes, such as a sale price If it has units, such as currency If it is an abstraction of one or more types with these properties

CS6359 Fall 2012 John Cole

28

Quantities with Units


Represent them with distinct classes with an associated unit
Payment amount : Number not useful

Payment

Has-amount

Quantity 1 amount : Number

Is-in

Unit 1 ...

*
Payment amount : Quantity

quantities are pure data values, so suitable to show in attribute section

better

Payment amount : Money

variation: Money is a specialized Quantity whose unit is a currency

CS6359 Fall 2012 John Cole

29

Is the Domain Model Correct?


No, but its a good approximation It gets better with each iteration; dont try to get it all at once Domain model usually done in the elaboration phase

CS6359 Fall 2012 John Cole

30

Das könnte Ihnen auch gefallen