86
CSE870: Advanced Software Eng ineering -- UML Dynamic Model s (Cheng) 1 R R R Object Modeling Approach

Object Modeling Approach

Embed Size (px)

DESCRIPTION

Object Modeling Approach. Object Modeling Approach. Start with a problem statement High-level requirements Define object model Identify objects and classes Prepare data dictionary Identify associations and aggregations Identify attributes of objects and links - PowerPoint PPT Presentation

Citation preview

Page 1: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

1

R

R

R

Object Modeling Approach

Page 2: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

2

R

R

RObject Modeling Approach

• Start with a problem statement– High-level requirements

• Define object model– Identify objects and classes– Prepare data dictionary– Identify associations and aggregations– Identify attributes of objects and links– Organize and simplify using inheritance– Iterate and refine the model– Group classes into modules

Page 3: Object Modeling Approach

90

80

70

60

50

On

Off

Controller

Fuel Valve

Burner

Water Pump

Hot Water

Fuel

Temp Sensor

Water Valve

Control Panel

Home

The Home Heating System

Page 4: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

4

R

R

RHome Heating Requirements

• The software shall control the heat in each room• The room shall be heated when the temperature

is 2F below desired temp• The room shall no longer be heated when the

temperature is 2F above desired temp• The flow of heat to each room shall be

individually controlled by opening and closing its water valve

• The valve shall be open when the room needs heat and closed otherwise

• The user shall set the desired temperature on the thermostat

• The operator shall be able to turn the heating system on and off

• The furnace must not run when the system is off

• When the furnace is not running and a room needs heat, the software shall turn the furnace on

• To turn the furnace on the software shall follow these steps

– open the fuel valve– turn the burner on

• The software shall turn the furnace off when heat is no longer needed in any room

• To turn the furnace off the software shall follow these steps

– close fuel valve– turn burner off

The purpose of the software for the Home Heating System is to control the heating system that heats the rooms of a house. The software shall maintain the temperature of each room within a specified range by controlling the heat flow to individual rooms.

Page 5: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

5

R

R

R

RequirementsStatements

ExtractNouns

TentativeObject Classes

EliminateSpurious Classes

ObjectClasses

Candidate ClassesController

Fuel Valve

Burner

Water Pump

Hot Water

Fuel Temp Sensor

Water Valve

software

Home Heating System

heating systemroom

house

temperature

heatdesired temp

operator

thermostatfurnace

on-off switch Control Panel

Home

range

Identify Object Classes

Page 6: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

6

R

R

REliminate Bad Classes

• Redundant classes– Classes that represent the

same thing with different words

• Irrelevant classes– Classes we simply do not

care about

• Vague classes– Classes with ill defined

boundaries

• Attributes– Things that describe

individual objects

• Operations– Sequences of actions are

often mistaken for classes

• Roles– The name of a class should

reflect what it is, not the role it plays

• Implementation details– Save that for

implementation

Page 7: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

7

R

R

R

Controller

Fuel Valve Burner

Water Pump

Hot Water

Fuel

Temp Sensor Water Valve

software

Home Heating System

heating system

room

house

temperature

heat desired temp

operatorthermostat

furnace

Redundant Irrelevant Vague Attributes

Operations ImplementationRolesNone NoneNone

heat flow

on-off switch Control Panel

homeuser

range

Eliminate Classes

Page 8: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

8

R

R

R

Controller

Fuel Valve

Burner

Water Pump

Temp Sensor

Water Valve

Home Heating System

Room

Operator

Thermostat Furnace

on-off switchControl Panel

Classes After Elimination

Page 9: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

9

R

R

RPrepare Data Dictionary

• Water Tank – The storage tank containing the water that

circulates in the system.

• Pump-1 – The pump pumping water from the Water

Tank to the radiators in the rooms

Page 10: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

10

R

R

RPossible Associations

• Not much information from the prose requirements

• A lot of information from the system design

• A room consists of a thermometer and a radiator• A radiator consists of a valve and a radiator element• The home heating system consists of a furnace,

rooms, a water pump, a control panel, and a controller

• The furnace consists of a fuel pump and a burner• The control panel consists of an on-off switch and a

thermostat• The controller controls the fuel pump• The controller controls the burner• The controller controls the water pump• The controller monitors the temperature in each

room• The controller opens and closes the valves in the

rooms• The operator sets the desired temperature• The operator turns the system on and off• The controller gets notified of the new desired

temperature

Page 11: Object Modeling Approach

Home HeatingSystem

Control Panel

On-Off Switch Thermostat

Room

Operator

Water Valve Temp Sensor

Furnace

Burner

Water Pump

Fuel Valve

Controller

3 Pushes Adjusts8

Notifies

8

3Monitor3

Actuates

3 Ignites3 Opens/Closes

3 Runs

1..*

Object Model

Page 12: Object Modeling Approach

Home HeatingSystem

Control Panel

On-Off Switch Thermostat

Room

Operator

Water Valve Temp Sensor

Furnace

Burner

Water Pump

Fuel Valve

Controller

Pushes Adjusts

No

tifies

Mo

nito

r

He

ats

Ignites

Opens/Closes

Runs

1..*

1..*

1..*

Object Model - Modified

Page 13: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

13

R

R

R

Temp Sensortemperature

Thermostatdesired-temp

On-Off switchsetting

Attributes

Page 14: Object Modeling Approach

Home HeatingSystem

Control Panel

setting

On-Off Switch

desired-temp

Thermostat

Room

Operator

Water Valve

temperature

Temp Sensor

Furnace

Burner

Water Pump

Fuel Valve

Controller

Pushes Adjusts

No

tifies

M

on

itor

He

ats

Ignites

Opens/Closes

Runs

1..*

1..*

1..*

Final OO Model

Page 15: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

15

R

R

R

Iterate

Iterate the Model

• Keep on doing this until you, your customer, and your engineers are happy with the model

Page 16: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

16

R

R

ROperation vs Method

• Operation: specifies object behavior• Service: represented by set of operns.• Message: object requests execution of an opern.

from another object by sending it mesg.• Method: mesg is matched up with method defined

by the class to which the receiving object belongs (or any of its superclasses)

• Operations of class are public services offered by class.

• Methods of its classes are the implementations of these operations.

Page 17: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

17

R

R

R

OO Using UML:Dynamic Models

Defining how the objects behave

Page 18: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

18

R

R

R Overview

• The object model describes the structure of the system (objects, attributes, and operations)

• The dynamic model describes how the objects change state (how the attributes change) and in which order the state changes can take place

• Several models used to find the appropriate dynamic behavior– Interaction diagrams– Activity diagrams– State Diagrams

• Uses finite state machines and expresses the changes in terms of events and states

Page 19: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

19

R

R

R

Interaction Diagrams

Page 20: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

20

R

R

RWe Will Cover

• Why interaction diagrams?

• Sequence diagrams– Capturing use-cases– Dealing with concurrency

• Collaboration diagrams

• When to use what

• When to use interaction diagrams

Page 21: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

21

R

R

RDifferent Types of Interaction

Diagrams

• An Interaction Diagram typically captures a use-case – A sequence of user interactions

• Sequence diagrams– Highlight the sequencing of the interactions between

objects

• Collaboration diagrams – Highlight the structure of the components (objects)

involved in the interaction

Page 22: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

22

R

R

RHome Heating Use-Case

Use case: Power UpActors: Home Owner (initiator)Type: Primary and essentialDescription: The Home Owner turns the power on. Each room

is temperature checked. If a room is below thethe desired temperature the valve for the room is opened, the water pump started, the fuel valveopened, and the burner ignited. If the temperature in all rooms is above the desired

temperature, no actions are taken. Cross Ref.: Requirements XX, YY, and ZZUse-Cases: None

Page 23: Object Modeling Approach

Sequence Diagrams

a Home Owner the On-Off Switch the Controller a Room the Water Pump

System On

powerOn()

*[for all rooms]tempStatus:=checkTemp()

[tempStatus == low]pumpOn()

[tempStatus == low]openValve()

[tempStatus == low]startBurner()

Page 24: Object Modeling Approach

Example from Fowler

an Order entryWindow

an Order an Order Line a Stock Item

prepare()*[for all order lines]

prepare()

hasStock := check()

[hasStock]remove()

needsReorder := needsToReorder()

a Reorder Item

[needsReorder]new

[hasStock] newa Delivery Item

MH

Page 25: Object Modeling Approach

Concurrency

a Transaction

a TransactionCoordinator

a first TransactionChecker

a secondTransaction

Checker

allDone?

new

new

new

new

allValid

ok

ok

allDone?

Page 26: Object Modeling Approach

Another Example

a Home Owner the On-Off Switch the Controller

a Room

the Water Pump

System OnpowerOn()

[tempLow]pumpOn()

[tempLow]openValve()

[tempLow]startBurner()

*[for each room in house]new

checkTemp()

tempLow

MH

Page 27: Object Modeling Approach

Comment the Diagram

a Home Owner the On-Off Switch the Controller

a Room

the Water Pump

System OnpowerOn()

[tempLow]pumpOn()

[tempLow]openValve()

[tempLow]startBurner()

*[for each room in house]new

checkTemp()

tempLow

MH

When the ownerturns the system on

the on switch notifiesthe controller

The controllercreates a room objectfor each room in thebuilding

The rooms samplethe temperature inthe toom every 5 s.When a low temp isdetected the roomnotifies thecontroller.

Page 28: Object Modeling Approach

Collaboration Diagrams

:Order EntryWindow

:Order

Winter line : Order LineWinter stock :

Stock Item

1 : prepare()

2 : *[for all order lines]:prepare() 3 : hasStock := check()

4 : [hasStock]:remove()

5 : needsReorder := needsToReorder()

a Reorder Item

6 : [needsReorder]:new

7 : [hasStock] :new

:Delivery Item

MH

Page 29: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

29

R

R

RConditional Behavior

• Something you will encounter trying to capture complex use-cases– The user does something. If this something is X do

this… If this something is Y do something else… If this something is Z…

• Split the diagram into several– Split the use-case also

• Use the conditional message– Could become messy

• Remember, clarity is the goal!

Page 30: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

30

R

R

RComparison

• Both diagrams capture the same information– People just have different preferences

• We prefer sequence diagrams– They clearly highlight the order of things– Invaluable when reasoning about multi-tasking

• Others like collaboration diagrams– Shows the static structure

• Very useful when organizing classes into packages

• We get the structure from the Class Diagrams

Page 31: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

31

R

R

R When to Use Interaction Diagrams

• When you want to clarify and explore single use-cases involving several objects– Quickly becomes unruly if you do not watch it

• If you are interested in one object over many use-cases -- state transition diagrams

• If you are interested in many objects over many use cases -- activity diagrams

Page 32: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

32

R

R

R

State Diagrams

Page 33: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

33

R

R

RWe Will Cover

• State Machines– An alternate way of capturing scenarios

• Large classes of scenarios

• Syntax and Semantics

• When to use state machines

Page 34: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

34

R

R

REvents, Conditions, and States

• Event: something that happens at a point in time• Operator presses self-test button

• The alarm goes off

• Condition: something that has a duration• The fuel level is high

• The alarm is on

• State : an abstraction of the attributes and links of an object (or entire system)

• The controller is in the state self-test after the self-test button has been pressed and the reset-button has not yet been pressed

• The tank is in the state too-low when the fuel level has been below level-low for alarm-threshold seconds

Page 35: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

35

R

R

RMaking a Phone Call Scenario

To make a call, the caller lifts receiver. The caller gets a dial dial tone and the caller dials digit (x). The dial tone ends. The caller completes dialing the number. The callee phone begins ringing at the same time a ringing begins in caller phone. When the callee answers the called phone stops ringing and ringing ends in caller phone. The phones are now connected. The caller hangs up and the phones are disconnected. The callee hangs up.

Page 36: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

36

R

R

RPartial Class Diagram

Line Phone1

1

Caller

1

1

Callee

Connected by

Connected by

Page 37: Object Modeling Approach

Caller CalleeLinecaller lifts receiver

dial tone begins

dials digit (4)

dial tone ends

dials digit (2)

dials digit (3)

dials digit (4)

dials digit (5)

phone ringsringing tone

callee answers

ringing stopstone stops

phones connected phones connected

caller hangs up

phones disconnected phones disconnected

callee hangs up

Event Trace

Page 38: Object Modeling Approach

Idle

Dial tone

off-hook

Dialing

Ringing

Connected

Disconnected

digit(x)

valid-number

called-phone-answers

called-phone-hangs-up

digit(x)

on-hook

State Diagram for Scenario

Page 39: Object Modeling Approach

Caller CalleeLinecaller lifts receiver

dial tone begins

dials digit (4)

dial tone ends

dials digit (2)

dials digit (3)

dials digit (4)

dials digit (5)

busy tone

caller hangs up

Scenario 2

Page 40: Object Modeling Approach

Idle

Dial tone

off-hook

Dialing

Connecting

Busy tone

Ringing

Connected

Disconnected

digit(x)

valid-number

called-phone-answers

called-phone-hangs-up

digit(x)

on-hook

routed

number-busy

Modified State Machine

Page 41: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

41

R

R

R

• Sometimes the state transitions are conditional

Conditions

Idle

Dial tone

off-hook

Dialing

ConnectingBusy tone

Ringing

digit(x)

valid-number

digit(x) [x = 8]

on-hook

routed

number-busy

digit(x) [x != 8]

Dial tone(external)

Dialing

digit(x) digit(x)

valid-number

Page 42: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

42

R

R

R

• Actions are performed when a transition is taken or performed while in a state

• Actions are terminated when leaving the state

Operations (AKA Actions)

Idle

Dial tone

off-hook

Dialing

ConnectingBusy tone

Ringing

Connected

Disconnected

digit(x)

valid-number

called-phone-answers / connect line

called-phone-hangs-up / disconnect line

digit(x)

on-hook

routed

number-busy

do/ sound dial tone

do/ find connection

do/ ring bell

do/ busy tone

on-hook / disconnect line

on-hook

on-hook

on-hook

on-hook

on-hook

Page 43: Object Modeling Approach

• Group states with similar characteristics

• Enables information hiding

• Simplifies the diagrams

Idle Dial tone

on-hook

dial(x) [x is a digit]

do/ sound dial tone

Voice Mail

Make Calldial(x) [x = *]

Dialing

Connecting

valid-number

do/ find connectionBusy tone

Ringing

Connected

Disconnected

do/ ring bell

do/ busy tone

Establish calldial(x)

routed

called-phone-answers / connect line

called-phone-hangs-up / disconnect line

on-hook

number-busy

on-hook / disconnect line

off-hook

on-hook

Hierarchical State Machines

Page 44: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

44

R

R

R

Dialing

Connecting

valid-number

do/ find connectionBusy tone

Ringingdo/ ring bell

do/ busy tone

Establish calldial(x)

routed

number-busy

Information Hiding

Idle Dial tone

on-hook

dial(x) [x is a digit]

do/ sound dial tone

Voice Mail

Make Call

dial(x) [x = *]

Connected

Disconnected

Establish call

called-phone-answers / connect line

called-phone-hangs-up / disconnect line

on-hook

on-hook /disconnect line

on-hook

off-hook

Page 45: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

45

R

R

R

user-inputdevice

mouse-buttonlocation

keyboard-keycharacter

mouse-down mouse-up

eventtime

Event Generalization

• Related events can inherit properties from each other

• If an event at a lower level occurs - the event at a higher level also occurred

• Event attributes– mouse-up.location– mouse-down.device– mouse-button.time

Page 46: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

46

R

R

RConcurrency

• Some states represent several concurrent concepts

• Concurrency is supported by the state machines

• Concurrent state machines are separated by dashed lines

Alarms EnabledVisual Alarm

Aural Alarm

On

On

Off

Off

reset

reset

aural-on

visual-on

Alarms Disabled

out-of-bounds-event

Page 47: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

47

R

R

RState Machines - Summary

• Events– instances in time

• Conditions– conditions over time

• States– abstraction of the attributes

and associations

• Transitions– Takes the state machine

from one state to the next• Triggered by events• Guarded by conditions• Cause actions to happen

• Internal actions– something performed in a

state

• Hierarchies– allows abstraction and

information hiding

• Parallelism– models concurrent

concepts

Page 48: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

48

R

R

RWhen to use State Machines

• When you want to describe the behavior of one object for all (or at least many) scenarios that affect that object

• Not good at showing the interaction between objects– Use interaction diagrams or activity diagrams

• Do not use them for all classes– Some methods prescribe this – Very time consuming and questionable benefit

Page 49: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

49

R

R

R

Coming up with the State Diagrams

Page 50: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

50

R

R

RModeling Approach

• Prepare scenarios– Work with the customer– Start with normal scenarios– Add abnormal scenarios

• Identify events (often messages)– Group into event classes

• Draw some sequence diagrams– Find objects with complex functionality you want to

understand better

• Build a state diagram for the complex classes

Page 51: Object Modeling Approach

RoomFuel

ValveController

open-valve

BurnerWaterPump

start-burner

pump-on

request-temp

respond-tempEvery 5s

Temp Low

request-temp

respond-temp

Temp Normal

Every 5s

close-valve

stop-burner

pump-off

open-water-valve

close-water-valve

Scenario-1

Page 52: Object Modeling Approach

RoomFuel

ValveController

open-valve

BurnerWaterPump

start-burner

pump-on

request-temp

respond-tempEvery 5s

Desired temp change

Temp Normal

Every 5s

ControlPanel

request-temp

respond-temp

close-valve

stop-burner

pump-off

request-temp

respond-tempEvery 5s

Temp Low

desired-temp-change

open-water-valve

close-water-valve

Scenario-2

Page 53: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

53

R

R

R

Water Pump pump-on

OffOn

pump-off

Burner start-burner

OffOn

stop-burner

Fuel Valve open-valve

ClosedOpen

close-valve

Dynamic Model

Page 54: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

54

R

R

R

Room

open-water-valve/wv-open

Idle

Valve

close-water-valve/wv-close Processing

Request

Temp-Sensor

request-temp temp-report(x)/respond-temp(x)

Water-Valve

More Dynamic Model

Page 55: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

55

R

R

R

Controller

timeout(5s)\request-temp Temp-Low

timeout(1s)/start-burnerHome Heating System

Temperature

Temp-Normal

All-Running

Burner-On Fuel-Open

Water-Off Fuel-Off

All-Off

respond-temp(x)[x<desired-temp-2]/start-heating

respond-temp(x)[x>desired-temp+2]/stop-heating

timeout(5s)\request-temp

timeout(1s)/pump-on,open-water-valve

start-heating/open-valve

timeout(1s)/stop-burner

timeout(1s)/close-valvestop-heating/pump-off,close-water-valve

Even More Dynamic Model

Page 56: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

56

R

R

RIdentify Key Operations

• Operations from the object model– Accessing and setting attributes

and associations (often not shown)

• Operations from events– All events represent some

operation

• Operations from actions and activities– Actions and activities represent

some processing activity within some object

• Operations from functions– Each function typically

represent one or more operations

• Shopping list operations– Inherent operations (what

should be there)

Page 57: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

57

R

R

R

open-valve()close-valve()room-temp()

Room

Home HeatingSystem

setting

On-Off Switch

desired-temp

Thermostat

Operator

Water Valve

temperature

Temp Sensor

Furnace

Controller

3 Pushes Adjusts8Notifies

83Monitor

3Heats

3 Ignites3 Opens/Closes

3 Runs

1..*

1..*

1..*

operating()target-temp()

Control Panel

on()off()

Water Pump

open()close()

Fuel Valve

on()off()

Burner

Complete OO Model

Page 58: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

58

R

R

R

Iterate

Iterate the Model

• Keep on doing this until you, your customer, and your engineers are happy with the model

Page 59: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

59

R

R

R

Activity Diagrams

Page 60: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

60

R

R

RWe Will Cover

• History of activity diagrams in UML– A highly personal perspective

• Activity diagrams

• Swimlanes

• When to use activity diagrams– When not to

Page 61: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

61

R

R

RActivity Diagrams

• Shows how activities are connected together– Shows the order of processing– Captures parallelism

• Mechanisms to express– Processing– Synchronization– Conditional selection of processing

• A glorified flowchart

Page 62: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

62

R

R

RWhy Activity Diagrams

• Very good question– Not part of any previous (UML related) method– Introduced to sell products

• Suitable for modeling of business activities– UML and OO is becoming more prevalent in business applications– Object frameworks are making an inroad– Stay within one development approach and notation

• Generally a flowchart and I do not really see the need in OO modeling– Probably because I do not do business systems

Page 63: Object Modeling Approach

Coffee Example

MH

Find Beverage

Get Can of CokePut Coffee in Filter

Put Filter inMachine

Turn On Machine

Brew Coffee

Pour Coffee

Drink Beverage

Decision[no coffee]

[found coffee]

^coffePot.TurnOn

Get CupsAdd Water to

Reservoir

[found coke]

[no coke]

Page 64: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

64

R

R

RHACS Use-Cases

Use case: Distribute AssignmentsActors: Instructor (initiator), StudentType: Primary and essentialDescription: The Instructor completes an assignment and submits

it to the system. The instructor will also submit the

delivery date, due date, and the class the assignment

is assigned for. The system will at the due date mail

the assignment to the student.Cross Ref.: Requirements XX, YY, and ZZUse-Cases: Configure HACS must be done before any user

(Instructor or Student) can use HACS

Page 65: Object Modeling Approach

Activity Diagrams for Use CasesWrite

Assignment

SubmitAssignment

MailAssignment

SolveAssignmentWrite Solution

Mail Solution

Submit SolvedAssignmentSubmit

Solution

ReviewSolution

Hit the Pub

GradeAssignment

[submission time]

Page 66: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

66

R

R

RSwimlanes (Who Does What?)

WriteAssignment

SubmitAssignment

MailAssignment

SolveAssignmentWrite Solution

Mail Solution

Submit SolvedAssignmentSubmit

Solution

ReviewSolution

Hit the Pub

[submission time]

GradeAssignment

Instructor HACS Student

Page 67: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

67

R

R

RProblems with Activity Diagrams

• They are glorified flowcharts– Very easy to make a traditional data-flow oriented

design

• Switching to the OO paradigm is hard enough as it is– Extensive use of activity charts can make this shift

even harder

• However...– Very powerful when you know how to use them

correctly

Page 68: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

68

R

R

RWhen to Use Activity Diagrams

• Not clear how useful in OO modeling– Particularly when modeling control systems

• Useful when– Analyzing a use case (or collection of use cases)– Understanding workflow in an organization– Working with multi-threaded applications

• For instance, process control applications

– Do not use activity diagrams• To figure out how objects collaborate• See how objects behave over time

Page 69: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

69

R

R

R

Approaching a Problem

Where do we start?

How do we proceed?

Page 70: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

70

R

R

RWhere Do We Start?

• Start with the requirements– Capture your goals and possible constraints– Environmental assumptions

• Use-case analysis to better understand your requirements– Find actors and a first round of use-cases

• Start conceptual modeling– Conceptual class diagram– Interaction diagrams to clarify use-cases– Activity diagrams to understand major processing

Page 71: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

71

R

R

RHow Do We Continue?

• Refine use-cases– Possibly some “real” use-cases

• Using interface mockups

• Refine (or restructure) your class diagram– Based on your hardware architecture

• For instance, client server

• Refine and expand your dynamic model– Until you are comfortable that you understand the

required behavior

• Identify most operations and attributes

Page 72: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

72

R

R

RHow Do We Wrap Up?

• Refine the class diagram based on platform and language properties– Navigability, public, private, etc– Class libraries

• Identify all operations– Not the trivial get, set, etc.

• Write a contract for each operation• Define a collection of invariants for each class• Implement

Page 73: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

73

R

R

RWhy is requirements analysis difficult?

• Communication: misunderstandings between the customer and the analyst– Analyst doesn’t understand the domain– Customer doesn’t understand alternatives and

trade-offs

• Problem complexity– Inconsistencies in problem statement– Omissions/incompleteness in problem statement– Inappropriate detail in problem statement

Page 74: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

74

R

R

RWhy is requirements analysis difficult?

• Need to accommodate change– Hard to predict change– Hard to plan for change– Hard to forsee the impact of change

Page 75: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

75

R

R

RFirst Law of Software Engineering

“No matter where you are in the

system lifecycle, the system will

change, and the desire to change it

will persist throughout the lifecycle.”

Page 76: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

76

R

R

RReasons for changing requirements

• Poor communication• Inaccurate requirements

analysis• Failure to consider

alternatives• New users• New customer goals

• New customer environment

• New technology

• Competition

• Software is seen as malleable

Changes made after the requirements are approved increase cost and schedule

Page 77: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

77

R

R

RRequirements Products

• Specification document– Agreement between customer and developer– Validation criteria for software

• Preliminary users manual

• Prototype– If user interaction is important– If resources are available

• Review by customer and developer – Iteration is almost always required

Page 78: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

78

R

R

RAnalysis: Steps to follow

• Obtain a problem statement• Develop use cases (depict scenarios of use)• Build an object model and data dictionary• Develop a dynamic model

– state and sequence diagrams

• Verify, iterate, and refine the models• Produce analysis document

Page 79: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

79

R

R

RUse Cases

• High-level overview of system use• Identify scenarios of usage• Identify actors of the system:

– External entities (e.g., users, systems, etc.)

• Identify system activities• Draw connections between actors and

activities• Identify dependencies between activities (i.e.,

extends, uses)

Page 80: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

80

R

R

RAnalysis: Object Model

• Organization of system into classes

connected by associations

– Shows the static structure

– Organizes and decomposes system into

more manageable subsystems

– Describes real world classes and

relationships

Page 81: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

81

R

R

RAnalysis: Object Model

• Object model precedes the dynamic model

because

– static structure is usually better defined

– less dependent on details

– more stable as the system evolves

Page 82: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

82

R

R

RAnalysis: Object Model

• Information comes from– The problem statement and use cases– Expert knowledge of the application

domain• Interviews with customer• Consultation with experts• Outside research performed by analyst

– General knowledge of the real world

Page 83: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

83

R

R

RObject Model: Steps to follow

• Identify classes and associations

– nouns and verbs in a problem description

• Create data dictionary entry for each

• Add attributes

• Combine and organize classes using

inheritance

Page 84: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

84

R

R

RAnalysis: Dynamic model

• Shows the time dependent behavior of the system and the objects in it

• Expressed in terms of– states of objects and activities in states– events and actions

• State diagram summarizes permissible event

sequences for objects with important dynamic

behavior

Page 85: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

85

R

R

RDynamic Model: Steps to follow

• Use cases provide scenarios of typical interaction

sequences

• Identify events between objects (Sequence

Diagram)

• Prepare an event trace for each scenario

• Build state diagrams

• Match events between objects to verify

consistency

Page 86: Object Modeling Approach

CSE870: Advanced Software Engineering -- UML Dynamic Models (Cheng)

86

R

R

RAnalysis: Iteration

• Analysis model will require multiple passes to complete

• Look for inconsistencies and revise

• Look for omissions/vagueness and revise

• Validate the final model with the customer