Chapter 9 Domain Models CS 6359 Fall 2012

  • Slides: 30
Download presentation
Chapter 9 Domain Models CS 6359 Fall 2012 John Cole 1

Chapter 9 Domain Models CS 6359 Fall 2012 John Cole 1

Why do this? • If you don’t understand the domain, you can’t program for

Why do this? • If you don’t understand the domain, you can’t program for it effectively • Lower the representational gap between mental model and software model CS 6359 Fall 2012 John Cole 2

Objectives • Identify conceptual classes related to the current iteration • Create an initial

Objectives • Identify conceptual classes related to the current iteration • Create an initial domain model • Model appropriate attributes and associations CS 6359 Fall 2012 John Cole 3

What is a Domain Model? • Illustrates noteworthy concepts in a domain. That is,

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 CS 6359 Fall 2012 John Cole 4

What’s the Difference? Conceptual Class: Sale amt item Software Artifacts: Sales. Database Sale Double

What’s the Difference? Conceptual Class: Sale amt item Software Artifacts: Sales. Database Sale Double amt; Item item; void print() CS 6359 Fall 2012 John Cole 5

Business Object Model • • Class diagrams with no methods, just fields May show

Business Object Model • • Class diagrams with no methods, just fields May show domain objects Associations between classes Attributes of conceptual classes CS 6359 Fall 2012 John Cole 6

Domain Model, visually CS 6359 Fall 2012 John Cole 7

Domain Model, visually CS 6359 Fall 2012 John Cole 7

Conceptual Classes • An idea, thing, or object • Symbol—Words or images representing a

Conceptual Classes • An idea, thing, or object • Symbol—Words or images representing a conceptual class • Intension—Definition of a conceptual class • Extension—The set of examples to which the class applies • It is not a data model CS 6359 Fall 2012 John Cole 8

How to Create a Domain Model • Find the conceptual classes • Draw them

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 CS 6359 Fall 2012 John Cole 9

How do I find Conceptual Classes? • Reuse or modify existing models. If there

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) CS 6359 Fall 2012 John Cole 10

Noun Phrase Identification • Consider the following problem description, analyzed for Subjects, Verbs, Objects:

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 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 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 customer’s account balance on a receipt. O V S V O O CS 6359 Fall 2012 John Cole 11

Noun Phrases Analyze each subject and object as follows: • Does it represent a

Noun Phrases Analyze each subject and object as follows: • Does it represent a person performing an action? Then it’s 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 CS 6359 Fall 2012 John Cole 12

Where are the Terms? • Some are in the use case • Some come

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 CS 6359 Fall 2012 John Cole 13

POS example You can create a list, or you can use a set of

POS example You can create a list, or you can use a set of class diagrams, per the table below CS 6359 Fall 2012 John Cole 14

Monopoly Game Domain Model CS 6359 Fall 2012 John Cole 15

Monopoly Game Domain Model CS 6359 Fall 2012 John Cole 15

Maintaining the Model • Usually the model is a guideline to thinking, not an

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? CS 6359 Fall 2012 John Cole 16

Report Objects • Including reports in a domain model usually isn’t useful because the

Report Objects • Including reports in a domain model usually isn’t useful because the information is derived from other objects. • There are special cases, such as receipts, that should be in the model. CS 6359 Fall 2012 John Cole 17

Mapmaker (domain terms) Strategy • Use existing names so far as possible. Learn the

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, don’t 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. CS 6359 Fall 2012 John Cole 18

Attributes vs. Classes • Common mistake: representing something as an attribute when it should

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? CS 6359 Fall 2012 John Cole 19

Description Classes • A description class contains information that describes something else • E.

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 CS 6359 Fall 2012 John Cole 20

Why Use Them? • If we keep all the information in, say, a sales

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? CS 6359 Fall 2012 John Cole 21

Associations • Relationship between (instances of) classes that indicates some interesting and meaningful connection

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 CS 6359 Fall 2012 John Cole 22

Associations (cont’d) • Avoid having too many; this adds communication paths and complexity •

Associations (cont’d) • 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 Verb. Phrase-Class. Name format. E. g. Sale Paid By Cash. Payment • Each end of an association is called a Role CS 6359 Fall 2012 John Cole 23

Associations (cont’d) • Multiplicity: how many instances of class A can be associated with

Associations (cont’d) • 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 Flies. To and Flies. From an airport • Common Associations List on p. 155 CS 6359 Fall 2012 John Cole 24

Attributes • An Attribute is a logical data value of an object • You

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} CS 6359 Fall 2012 John Cole 25

Attribute Types • Usually primitive data types, as well as things like Color, Date.

Attribute Types • Usually primitive data types, as well as things like Color, Date. Time, 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 CS 6359 Fall 2012 John Cole 26

New Data Type Classes • Things like Item. ID or Claim. Number are not

New Data Type Classes • Things like Item. ID or Claim. Number 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 CS 6359 Fall 2012 John Cole 27

New Data Type Classes (cont’d) • If it has other attributes, such as a

New Data Type Classes (cont’d) • 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 CS 6359 Fall 2012 John Cole 28

Quantities with Units • Represent them with distinct classes with an associated unit CS

Quantities with Units • Represent them with distinct classes with an associated unit CS 6359 Fall 2012 John Cole 29

Is the Domain Model Correct? • No, but it’s a good approximation • It

Is the Domain Model Correct? • No, but it’s a good approximation • It gets better with each iteration; don’t try to get it all at once • Domain model usually done in the elaboration phase CS 6359 Fall 2012 John Cole 30