Building an Analysis Model of the System Under Development

28
1 Building an Analysis Model of the System Under Development

description

Building an Analysis Model of the System Under Development. Developing your design from the product specifications: Remember there is probably not a UNIQUE GOOD DESIGN for a given set of specifications But there are many BAD designs - PowerPoint PPT Presentation

Transcript of Building an Analysis Model of the System Under Development

Page 1: Building an Analysis Model of the System Under Development

1

Building an Analysis Model of the System Under Development

Page 2: Building an Analysis Model of the System Under Development

2

Developing your design from the product specifications:

Remember there is probably not a UNIQUE GOOD DESIGN for a given set of specifications

But there are many BAD designs

The goal of the design stage is to come up with a good design and to avoid bad design choices

We will use some of the UML tools to explore the design and test out our design choices with respect to the specifications we are given, before we invest time and energy in actual coding.

Page 3: Building an Analysis Model of the System Under Development

3

Question: How do you start an OO design?--components?--objects?--how will they interact?

Answer: One common method is to start with components, along with any design patterns which can be identified. In general:

•design is an iterative process•all team members should take an active part in exploring possible designs•simple designs are preferable to complex designs--but it may take several iterations to develop a simple design which meets the project requirements

As explained previously, we will use a subset of UML to do the project design.

Page 4: Building an Analysis Model of the System Under Development

4

Analysis model (UML version):

--functional model (use cases and scenarios)

--analysis object model (static: class and object diagrams)

--dynamic model (state and sequence diagrams)

As system is analyzed, specifications are refined and made more explicit; if necessary, requirements are also updated

Page 5: Building an Analysis Model of the System Under Development

5

Figure 5-19 of text: an activity diagram for analyzing the system you are building:

Page 6: Building an Analysis Model of the System Under Development

6

Arms/disarms system

Accesses system via internet

Responds to alarm event

Encounters an error condition

Reconfigures sensors

and related system features

Homeowner

System administrator

Sensors

Pressman, p. 163, Figure 7.3

“Review”: use case: Graphical description:

Text description: Use case name

Participating actors

Flow of events

Entry condition(s)

Exit condition(s)

Quality requirements

Page 7: Building an Analysis Model of the System Under Development

7

“Review”: Use case writing guide (p. 137 of text):

--each use case should be traceable to requirements

--name should be a verb phrase to indicate user goal

--actor names should be noun phrases

--system boundary needs to be clearly defined

--use active voice in describing flow of events, to make clear who does what

--make sure the flow of events describes a complete user transaction

---if there is a dependence among steps, this needs to be made clear

--describe exceptions separately

--DO NOT describe the user interface to the system, only functions

--DO NOT make the use case too long—use extends, includes instead

--as you develop use cases, develop associated tests (for example, scenarios can suggest some good test cases, try to be as thorough as is reasonable in developing tests)

Page 8: Building an Analysis Model of the System Under Development

8

“Review”: Use case additions—simplifications of use case descriptions

A. Include: one use case includes another in its flow of events (cases A and B both include case C)

B. Extend: extend one use case to include additional behavior (cases D and E are extensions of case F)

A

B

C<<include>>

<<include>>

FE

D

<<extend>>

<<extend>>

Page 9: Building an Analysis Model of the System Under Development

9

“Review”: Use case additions

C. Inheritance: one use case specializes the more general behavior of another G and H specialize behavior of J)

H

J

authenticate

Authenticate with card

Authenticate with password

G

Page 10: Building an Analysis Model of the System Under Development

10

Class and object diagrams:Identify Objects from Use Case Specifications:USE ENDUSER’s TERMS AS MUCH AS POSSIBLE

Entity objects: “things”, for example:--nouns (customer, hospital, infection)--real-world entities (resource, dispatcher)--real-world activities to be tracked (evacuation_plan)--data sources or sinks (printer)

Boundary objects: system interfaces, for example:--controls (report(emergencybutton)--forms (savings_deposit_form)--messages (notify_of_error)

Control objects: usually one per use case--coordinate boundary and entity objects in the use case

Use the identified objects in a sequence diagram to carry out the use case

Page 11: Building an Analysis Model of the System Under Development

11

Common classes

Other common types of classes which the developer can look for include:

•tangible things, e.g., Mailbox, Document

•system interfaces and devices, e.g., DisplayWindow, Input Reader

•agents, e.g., Paginator, which computes document page breaks, or InputReader

•events and transactions, e.g., MouseEvent,CustomerArrival

•users and roles, e.g., Administrator, User

•systems, e.g., mailsystem (overall), InitializationSystem (initializes)

•containers, e.g., Mailbox, Invoice, Event

•foundation classes, e.g., String, Date, Vector, etc.

Page 12: Building an Analysis Model of the System Under Development

12

Sequence Diagram

Sequence Diagram:

a sequence diagram also models dynamic behavior

typically a sequence diagram shows how objects act together to implement a single use case

messages passed between the objects are also shown

sequence diagrams help to show the overall flow of control in the part of the program being modeled

they can also be used to show:concurrent processesasynchronous behavior

Page 13: Building an Analysis Model of the System Under Development

13

Sequence Diagram--Syntax

Objects in the sequence diagram are shown as boxes at the top

below each object is a dashed vertical line--the object’s “lifeline”

an arrow between two lifelines represents each message

arrows are labeled with message names and can also include information on arguments and control information

two types of control:condition, e.g., [is greaterthan zero]iteration, e.g., *[for all array items]

“return” arrows can also be included

Page 14: Building an Analysis Model of the System Under Development

14

Sequence Diagram

Example—text,

chapter 5

Page 15: Building an Analysis Model of the System Under Development

15

ER diagrams

Useful object relationships

These diagrams represent the relationships between the classes in the system. These represent a static view of the system.

There are three basic types of relationship:

•inheritance ("is-a") (NOT the same as use case inheritance)

•aggregation ("has-a”)

•association ("uses")

These are commonly diagrammed as follows:

Page 16: Building an Analysis Model of the System Under Development

16

ER diagram: is-a

is-a: draw an arrow from the derived to the base class:

manager employee

Page 17: Building an Analysis Model of the System Under Development

17

ER diagram--has-a

has-a: draw a line with a diamond on the end at the "container" class. Cardinalities may also be shown (1:1, 1:n, 1:0…m; 1:*, i.e., any number > 0, 1:1…*, i.e., any number > 1):

car tire1 4tire & car can exist independently—shared aggregation

person arm1 2arm is part of the person– composition aggregation

Page 18: Building an Analysis Model of the System Under Development

18

ER diagram--uses

uses or association: there are many ways to represent this relationship, e.g.,

car gasstationcompany

employee

employs

works for

*

1

*

n

1

*

Page 19: Building an Analysis Model of the System Under Development

19

CRC cards

CRC cards: class--responsibilities--collaborators cards

"responsibilities" = operators, methods

"collaborators" = related classes (for a particular operator or method)

Make one actual card for each discovered class, with responsibilities and collaborators on the front, data fields on the back. CRC cards are not really part of UML, but are often used in conjunction with it. The CRC card contains information about what is inside the class (data, structures, methods).

Page 20: Building an Analysis Model of the System Under Development

20

CRC card--example

Example (based on Horstmann, Practical Object-Oriented Development in C++ and Java):

front back

Class Mailbox

Operations Relationships(Responsibilities) (Collaborators)

get current message Message, Messagequeue

play greeting -----------

Queue of new messagesQueue of kept messagesGreetingExtension numberPasscode

Class Mailbox

Note: Bruegge & Dutoit DO NOT include CRC cards—(they do show some internal information on their “class” boxes)—YOU NEED TO USE CRC CARDS, they provide more information

Page 21: Building an Analysis Model of the System Under Development

21

State Diagram

State Diagram:

another way of adding detail to the design--models dynamic behavior

describes all the possible states a particular object can be in and how that object's state changes as a result of events that affect that object

usually drawn for a single class to show behavior of a single object

used to clarify dynamic behavior within the system, as needed

Page 22: Building an Analysis Model of the System Under Development

22

State Diagram--Properties

A state diagram contains a "start" point, states, and transitions from one state to another.

Each state is labeled by its name and by the activities which occur when in that state.

Transitions can have three optional labels: Event [Guard] / Action.

A transition is triggered by an Event.

If there is no Event, then the transition is triggered as soon as the state activities are completed.

A Guard can be true or false. If the Guard is false, the transition is not taken.

An Action is completed during the transition.

Page 23: Building an Analysis Model of the System Under Development

23

State Diagram--Example

Example: this state diagram example for an "order" in an order-processing system is from Fowler and Scott, UML Distilled (Addison-Wesley, 1997):

Checking

check item

Dispatching

initiate delivery

Waiting Delivered

start/get first item

[not all items checked]/get next item

[all items checked && all items available]

[all items checked && some items not instock]

item received[some items not in stock]

item received[all items in stock]

delivered

Page 24: Building an Analysis Model of the System Under Development

24

Example—bank simulation (Horstmann)

Teller 1

Teller 2

Teller 3

Teller 4

Customer 1Customer 3 Customer 2

Horstmann, Mastering Object-Oriented Design in C++, Wiley, 1995

Page 25: Building an Analysis Model of the System Under Development

25

Example—bank simulation (Horstmann), cont.

An initial solution (Horstmann, p. 388):

Event

Departure

Arrival

Customer Bank

EventQueue

Application

Bank Statistics

Page 26: Building an Analysis Model of the System Under Development

26

Example—bank simulation (Horstmann), cont.

An improved solution (Horstmann, p. 391):

Event

Departure

Arrival

Customer Bank

EventQueue

Simulation

Bank Statistics

Page 27: Building an Analysis Model of the System Under Development

27

Comparison

What simplifications

have been made?

Why?

Event

Departure

Arrival

Customer Bank

EventQueue

Application

Bank Statistics

Event

Departure

Arrival

Customer Bank

EventQueue

Simulation

Bank Statistics

Page 28: Building an Analysis Model of the System Under Development

28

Example:

How would we use the tools described so far to design a “state-of-the art” vending machine? How would we develop test cases at each stage?

Use cases?

Class diagram?

Sequence diagram?

Classes / CRC cards?