chapter 5, analysis: object modeling

33
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 5, Analysis: Object Modeling

Upload: remedy

Post on 12-Feb-2016

42 views

Category:

Documents


0 download

DESCRIPTION

Chapter 5, Analysis: Object Modeling. Outline. From use cases to objects Object modeling Class vs instance diagrams Attributes Operations and methods Links and associations. Requirements. Elicitation. system. specification. :Model. Analysis. analysis model. :Model. System. Design. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 5, Analysis: Object Modeling

Con

quer

ing

Com

plex

and

Cha

ngin

g Sy

stem

sO

bjec

t-O

rien

ted

Soft

war

e E

ngin

eeri

ng Chapter 5, Analysis:Object Modeling

Page 2: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 2

Outline

From use cases to objects Object modeling Class vs instance diagrams Attributes Operations and methods Links and associations

Page 3: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3

Products of requirements elicitation and analysis

SystemDesign

system model:Model

systemspecification

:Model

analysis model:Model

RequirementsElicitation

Analysis

Next chapter

Next chapter

Page 4: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4

The analysis model

analysismodel:Model

dynamicmodel:Model

objectmodel:Model

functionalmodel:Model

use casediagram:View

classdiagram:View

statechartdiagram:View

sequencediagram:View

Page 5: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5

From Use Cases to Objects

Level 1 Use Case

Level 2 Use Cases

Level 3 Use Cases

Operations

ParticipatingObjects

Level 2

Level 1

Level 2

Le vel 3 Le vel 3

Level 4 Level 4

Level 3

A B

Page 6: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6

From Use Cases to Objects: Why Functional Decomposition is not Enough

Scenarios

Level 1 Use Cases

Level 2 Use Cases

Operations

ParticipatingObjects

Level 2

Level 1

Level 2

Le vel 3 Le vel 3

Level 4 Level 4

Level 3

A B

Page 7: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7

From Use Cases to Objects

Starting from use cases and scenarios, analysis activities performed to obtain the analysis model are:

Identifying entity objects Identifying boundary objects Identifying control objects Mapping use cases to objects Identifying associations among objects Identifying object attributes Modeling behavior with statecharts Modeling generalization relationships Reviewing the analysis model

Page 8: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8

Object Modeling

Main goal: Find the important abstractions What happens if we find the wrong abstractions?

Iterate and correct the model Steps during object modeling

1. Class identification Based on the fundamental assumption that we can find abstractions

2. Find the attributes 3. Find the methods 4. Find the associations between classes

Order of steps Goal: get the desired abstractions Order of steps secondary, only a heuristic Iteration is important

Page 9: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10

Pieces of an Object Model Classes Associations (Relations)

Part of- Hierarchy (Aggregation) Kind of-Hierarchy (Generalization)

Attributes Detection of attributes Application specific Attributes in one system can be classes in another system Turning attributes to classes

Methods Detection of methods Generic methods: General world knowledge, design patterns Domain Methods: Dynamic model, Functional model

Page 10: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 11

UML: Class and Instance Diagrams

Inspector

joe:Inspector

mary:Inspector

anonymous:Inspector

Class Diagram

Instance Diagram

Page 11: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 12

Attributes and Values

name:stringage: integer

Inspector

name = “Joe”age = 24

joe:Inspector

name = “Mary”age = 18

mary: Inspector

Page 12: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 13

Links and Associations

Links and associations establish relationships among objects and classes.

Link: A connection between two object instances. A link is like a tuple. A link is an instance of an association

Association: Basically a bidirectional mapping. One-to-one, many-to-one, one-to-many, An association describes a set of links like a class describes a set of

objects.

Page 13: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 14

1-to-1 and 1-to-many Associations

Has-capital

One-to-one association

One-to-many association

City

name:String

Workorder

schedule()

StickyNote

x: Integery: Integerz: Integer

*

Country

name:String

Page 14: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 15

Object Instance Diagram

Example for 1-to-many

:Sticky

x,y,z=(-1,0,5)

:WorkOrder :Sticky

x,y,z=(1,10,1)

:Sticky

x,y,z=(10,1,2)

Page 15: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 23

Roles

A role name is the name that uniquely identifies one end of an association.

A role name is written next to the association line near the class that plays the role.

When do you use role names? Necessary for associations between two objects of the same class Also useful to distinguish between two associations between the same pair

of classes When do you not use role names?

If there is only a single association between a pair of distinct classes, the names of the classes serve as good role names

Page 16: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 24

Example of Role

Pr oblem Statement : A person assumes the role of repairer with respect to another person, who assumes the role of

inspector with respect to the first person.

Person*Creates Workorders

inspector

repairperson

*Creates Workorders

Person Person

Person

Page 17: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 25

Roles in Associations

Client Role: An object that can operate upon other objects but that is never operated

upon by other objects.

Server Role: An object that never operates upon other objects. It is only operated

upon by other objects.

Agent Role: An object that can both operate upon other objects and be operated upon

by other objects. An agent is usually created to do some work on behalf of an actor or another agent.

Page 18: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 29

How do you find classes?

Finding objects is the central piece in object modeling Learn about problem domain: Observe your client Apply general world knowledge and intuition Take the flow of events and find participating objects in use cases Try to establish a taxonomy Do a syntactic analysis of problem statement, scenario or flow of events Abbott Textual Analysis, 1983, also called noun-verb analysis

Nouns are good candidates for classes Verbs are good candidates for opeations

Apply design knowledge: Distinguish different types of objects Apply design patterns (Lecture on design patterns)

Page 19: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 31

Mapping parts of speech to object model components [Abbot 1983]

Part of speech Model component

Proper noun object

Improper noun class

Doing verb method

being verb inheritance

having verb aggregation

modal verb constraint

adjective attribute

transitive verb method

intransitive verb method (event) Example

Page 20: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 32

Example of application of the Abbot technique

Jim Smith enters a store with the intention of buying a toy for his 3 year old child.

Help must be available within less than one minute. The store owner gives advice to the customer. The advice depends

on the age range of the child and the attributes of the toy. Jim selects a dangerous toy which is unsuitable for the child. The store owner recommends a more yellow doll.

Page 21: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 33

Mapping parts of speech to object model components [Abbot 1983]

Part of speech Model component Example

Proper noun object Jim Smith

Improper noun class Toy, doll

Doing verb method Buy, recommend

being verb inheritance is-a (kind-of)

having verb aggregation has an

modal verb constraint must be

adjective attribute 3 years old

transitive verb method enter

intransitive verb method (event) depends on

Page 22: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 34

Avoid Ravioli Models

Customer

Name

CustomerId

Account

BalanceAccountID

Deposit()Withdraw()GetBalance()

Bank

Name Has**

Don’t put too many classes into the same package:7+-2 (or even 5+-2)

Page 23: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 35

Object Types Entity Objects

Represent the persistent information tracked by the system (Application domain objects, “Business objects”)

Boundary Objects Represent the interaction between the user and the system

Control Objects: Represent the control tasks performed by the system

Having three types of objects leads to models that are more resilient to change. The interface of a system changes more likely than the control The control of the system change more likely than the application domain

Object types originated in Smalltalk: Model, View, Controller (MVC)

Page 24: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 36

Example: 2BWatch Objects

UML provides several mechanisms to extend the language UML provides the stereotype mechanism to present new modeling elements

<<entity>>Year

<<entity>>Month

<<entity>>Day

<<control>>ChangeDateControl

<<boundary>>LCDDisplayBoundary

<<boundary>>ButtonBoundary

Page 25: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 37

How to identify entity objects

terms that developers or users need to clarify in order to understand the use case

recurring nouns in the use cases (e.g., Incident) real-world entities that the system needs to keep track of (e.g.,

FieldOfficer, Dispatcher, Resource) real-world activities that the system needs to keep track of (e.g.,

Emergencyoperationsplan) use cases (e.g., ReportEmergency) data sources or sinks (e.g., Printer) always use the user’s terms

Page 26: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 38

How to identify boundary objects

Identify forms and windows the users needs to enter data into the system (e.g., EmergencyReportForm, ReportEmergencyButton).

Identify notices and messages the system uses to respond to the user (e.g., AcknowledgmentNotice).

Do not model the visual aspects of the interface with boundary objects (user mock-ups are better suited for that).

Always use the user’s terms for describing interfaces as opposed to terms from the implementation technology.

Page 27: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 39

How to identify control objects

Identify one control object per use case or more if the use case is complex and if it can be divided into shorter flows of events.

Identify one control object per actor in the use case.

The life span of a control object should be extent of the use case or the extent of a user session. If it is difficult to identify the beginning and the end of a control object activation, the corresponding use case may not have a well-defined entry and exit condition.

Page 28: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 40

An example: the ReportEmergency use caseUse case name: ReportEmergency

Entry condition: The FieldOfficer activates the “Report Emergency” function of her terminal.

Flow of events: 1. FRIEND responds by presenting a form to the officer. The form includes an emergency type menu

(Genera1 emergency, fire, transportation), a location, incident description, resource request, and hazardous material fields.

2. The FieldOfficer fills the form, by specifying minimally the emergency type and description fields. The FieldOfficer may also describes possible responses to the emergency situation and request specific resources. Once the form is completed, the FieldOfficer submits the form by pressing the “Send Report” button, at which point, the Dispatcher is notified.

3. The Dispatcher reviews the information submitted by the FieldOf f icer and creates an incident in the database by invoking the OpenIncident use case. Al1 the information contained in the FieldOfficer’s form is automatically included in the incident. The Dispatcher selects a response by allocating resources to the incident (with the AllocateResources use case) and acknowledges the emergency report by sending a FRIENDgram to the FieldOfficer.

Exit condition: The FieldOfficer receives the acknowledgment and the selected response.

Page 29: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 41

Entity objects in the exampleDispatcher

Police officer who manages Incidents. A Dispatcher opens, documents, and closes Incidents in response to Emergency Reports and other communication with FieldOfficers. Dispatchers are identified by badge numbers.

EmergencyReport Initial report about an Incident from a FieldOfficer to a Dispatcher. An EmergencyReport usually triggers the creation of an Incident by the Dispatcher. An EmergencyReport is composed of a emergency level, a type (fire, road accident, or other), a location, and a description.

Fieldofficer Police or fire officer on duty. A FieldOfficer can be allocated to, at most, one Incident at a time. FieldOfficers are identified by badge numbers. NOT TRUE in this UC. Here FieldOfficers are actors, they can be entity objects in the Allocateresource UC

IncidentSituation requiring attention from a FieldOfficer. An Incident may be reported in the system by a FieldOfficer or anybody else external to the system. An Incident is composed of a description, a response, a status (open, closed, documented), a location, and a number of FieldOfficers.

Page 30: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 42

Boundary Objects in the exampleAcknowledgmentNotice

Notice used for displaying the Dispatcher’s acknowledgment to the FieldOfficer.DispatcherStation

Computer used by the Dispatcher. ReportEmergencyButton

Button used by a FieldOfficer to initiate the ReportEmergency use case.EmergencyReportForm

Form used for the input of the ReportEmergency. This form is presented to the FieldOfficer on the FieldOfficerstation when the “Report Emergency” function is selected. The EmergencyReportForm contains fields for specifying all attributes of an emergency report and a button (or other control) for submitting the form once it is completed.

FieldOfficerStation Mobile computer used by the FieldOfficer.

Incident Form Form used for the creation of Incidents. This form is presented to the Dispatcher on the DispatcherStation when the EmergencyReport is received. The Dispatcher also uses this form to allocate resources and to acknowledge the FieldOfficer’s report.

Page 31: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 43

Control objects in the exampleReportEmergencyControl

Manages the report emergency reporting function on the FieldOfficerstation. This object is created when the FieldOfficer selects the “Report Emergency” button. It then creates an EmergencyReportFom and presents it to the FieldOfficer. After submission of the form, this object then collects the information from the form, creates an EmergencyReport, and forwards it to the Dispatcher. The control object then waits for an acknowledgment to come back from the DispatcherStation. When the acknowledgment is received, the ReportEmergencyControl object creates an AcknowledgmentNotice and displays it to the Fie1dOfficer .

ManageEmergencyControl Manages the report emergency reporting function on the DispatcherStation. This object is created when an EmergencyReport is received. It then creates an IncidentFom and displays it to the Dispatcher. Once the Dispatcher has created an Incident, allocated Resources, and submitted an acknowledgment, ManageEmergencyControl forwards the acknowledgment to the FieldOfficerstation.

Page 32: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 44

Order of activities in modeling

1. Formulate a few scenarios with help from the end user and/or application domain expert.

2. Extract the use cases from the scenarios, with the help of application domain expert.

3. Analyse the flow of events, for example with Abbot's textual analysis.4. Generate the class diagrams, which includes the following steps:

1. Class identification (textual analysis, domain experts). 2. Identification of attributes and operations (sometimes before the classes are

found!)3. Identification of associations between classes4. Identification of multiplicities5. Identification of roles6. Identification of constraints

Page 33: Chapter 5, Analysis: Object Modeling

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 46

Summary

In this lecture, we reviewed the construction of the object model from use case model. In particular, we described:

Identification of objects (entity, boundary, control) Refinement of objects with attributes and operations Generalization of concrete classes Identification of associations Reduction of multiplicity using qualification.

In the next lecture, we describe the construction of the dynamic model from the use case and object models.