a multi-level methodology for developing uml sequence diagrams

36
A MULTI-LEVEL METHODOLOGY FOR DEVELOPING UML SEQUENCE DIAGRAMS Il-Yeol Song Ritu Khare Yuan An Margaret Hilsbos (Unites States of America) ER CONFERENCE 2008 1 :A ctor :Som eEntity :BoundaryObject :ControllerO bject 3:doSomething() 4:doWhenever() 1:enterV alues() 2:create 5:doA now_thenR eturn() 7:self_doA () 8:return 6:return

Upload: ritu-khare

Post on 25-May-2015

536 views

Category:

Education


0 download

TRANSCRIPT

Page 1: A Multi-level Methodology for Developing UML Sequence Diagrams

1

A MULTI-LEVEL METHODOLOGY FOR DEVELOPING

UML SEQUENCE DIAGRAMS

Il-Yeol Song

Ritu Khare

Yuan An Margaret Hilsbos

(Unites States of America)

ER CONFERENCE 2008

:Actor:Actor :SomeEntity:SomeEntity:BoundaryObject:BoundaryObject

:ControllerObject:ControllerObject

3: doSomething()

4: doWhenever()

1: enterValues()

2: create

5: doAnow_thenReturn()

7: self_doA()

8: return

6: return

Page 2: A Multi-level Methodology for Developing UML Sequence Diagrams

2

Order of the Presentation

SQD: Background Related Research

SQD Semantics Detecting Errors Translating Use-case to

SQD Others

Notations of SQD Key Features

Multi-level Correctness Consistency

Assumptions Component Diagram

Steps Object Framework Level

Object Assembly Stage Object Rearrangement Stage

Responsibility Assignment Level Action Message Mapping

Stage Message Responsibility Stage

Visual Pattern Level High Cohesion Check Low Coupling Check Fork or Stair Check Central Class Check

Conclusion Future Work

Page 3: A Multi-level Methodology for Developing UML Sequence Diagrams

3

1. Sequence Diargams: Background

Help in Object Oriented Programming by presenting a visual logic flow.

Development Process is intricate. As new objects and messages are identified, the

diagram gets more packed and complicated. At every step, multiple factors (which object to

choose, which message to assign to what object) need to be taken care of simultaneously.

Developer ends up making mistakes. Hence, we present an easy-to-use and

practical method for SQD development.

Page 4: A Multi-level Methodology for Developing UML Sequence Diagrams

4

2. 1 Related Research: SQD Semantics

Xia and Kane (2003) present an excellent attribute grammar based approach on defining the semantics of UML SQD to make it easily convertible to code, and to make these formal methods more usable in the industry.

Aredo (2000) prepares a framework for defining the semantics of an SQD to create a shared understanding across a design team.

Research Gap: The problem of designing an SQD still remains

unresolved especially for the novices who do not hail from computer science background. Hence novices continue to commit errors.

Page 5: A Multi-level Methodology for Developing UML Sequence Diagrams

5

2.2. Related Research: Detecting Errors

Baker et al (2005) address the problem of automatically detecting and resolving the semantic errors that occur in SQD scenarios. The tool proposed in this paper is successful in detecting semantic inconsistencies in industrial case studies.

Research Gap: Our method takes a preventive action to deal with

the semantic inconsistencies by basing itself on the commonly occurring valid patterns in SQD and avoiding the frequently committed mistakes by UML students.

Page 6: A Multi-level Methodology for Developing UML Sequence Diagrams

6

2.3 Related Research: Translate Use-case to SQD

Li (2000) presents a semi-automated approach to translate a use case to a sequence diagram. The work is based on syntactic structure of the sentences of use-case description. It presents a parser that makes a tabular analysis distinguishing between the static information (classes, objects attributes and operations) and the dynamic information (message sends from use case description).

Research Gap: This motivated us to separate the static and the dynamic

elements of an SQD, and deal with them at different levels of the process. Although this paper provides useful rules for novices, e.g. converting a use case to “message sends”, it does not avoid the common mistakes made by novices.

Page 7: A Multi-level Methodology for Developing UML Sequence Diagrams

7

2.4 Related Research: Others

Selonen et al (2001) present a method to generate implementation schemes (pseudo codes) using UML sequence diagrams.

Both Rountev and Connell (2005), and Merdes and Dorsch (2006), present reverse engineering techniques to extract an SQD from a program.

Another interesting work ‘REUSER’ by Robinson and Woo (2004) automatically retrieves reusable SQDs from UML artifacts.

Research Gap: Research effort for developing an easy-to-use method for

developing SQDs is still rare and far from satisfactory.

Page 8: A Multi-level Methodology for Developing UML Sequence Diagrams

8

3. Notation of SQD

UML 2.0:Actor:Actor :SomeEntity:SomeEntity:BoundaryObject:BoundaryObject

:ControllerObject:ControllerObject

3: doSomething()

4: doWhenever()

1: enterValues()

2: create

5: doAnow_thenReturn()

7: self_doA()

8: return

6: return

Page 9: A Multi-level Methodology for Developing UML Sequence Diagrams

9

4. Key Features

Extend 10-step heuristics (Song,2001) using use-case and class diagrams.

Purpose: To serve as a reference guide for novice SQD modelers

Key features: Multi-level Guidelines and Patterns Consistency checks

Page 10: A Multi-level Methodology for Developing UML Sequence Diagrams

10

4.1 Key Features: Multi-level

Re-organize the steps in Song (2001) into three levels and each level is further divided into several stages so that we can focus on one issue at a time. 1. Object

Framework

Central

2. Responsibility Assignment

3. Visual Pattern

Object Assembly Stage

Object Rearrangement Stage

Action Message Mapping stage

Message Rearrangement Stage

High Cohesion Check

Low Coupling Check

Fork or Stair Check

Central Class Check

Use-case Diagram and Description

Class Diagram

Sequence Diagram

Complete SQD

Level1 SQD Level2

SQD

Page 11: A Multi-level Methodology for Developing UML Sequence Diagrams

11

4.2 Key Features: Guidelines and Patterns

Our subjects include students from different backgrounds including computer science, information science, psychology, biosciences, biomedical, and business.

Correctness of the SQD by making use of certain rules and visual patterns. The guidelines were tested and examples were collected for

the past five years of teaching SQDs in a graduate class. Warnings to stay away from frequently committed

mistakes in drawing SQDs. Incorrect patterns have been found on the basis of our

observation of the mistakes students make in SQD assignments to develop SQDs using use-case and class diagrams.

Page 12: A Multi-level Methodology for Developing UML Sequence Diagrams

12

4.3 Key Features: Consistency Checks

Provide consistency checks between an SQD and use cases and class diagrams.

Use CaseDescriptions

AnalysisClass Diagram

SequenceDiagrams

DesignClass Diagram

Actions Post-condtions Objects

Classes with attributes Associations Relationships

Messages Operations

Classes withattributes & operations

Associations with navigability Relationships Dependencies

Page 13: A Multi-level Methodology for Developing UML Sequence Diagrams

13

5. Assumptions

The construction of SQDs begins the transition from analysis to design. Elaboration of the model is an iterative process, and the models will be updated several times to reflect learning as they become more detailed.

For many projects, a complete set of sequence diagrams will not be created. (Ambler, 2008b;Ambler 2008a; and Chonoles and Schardt, 2003)

There are other UML diagrams (State, Activity, and Communication) which may be involved, depending on the extent of modeling performed on a project. The consistency checks presented here are generally applicable to Communication diagrams, which are simply a different view of the same information presented in an SQD.

The scope of the SQD has already been decided. More information on the definition of scope could be found in Song(2001).

Page 14: A Multi-level Methodology for Developing UML Sequence Diagrams

14

6. Component Diargam

1. Object Framework

Central

2. Responsibility Assignment

3. Visual Pattern

Object Assembly Stage

Object Rearrangement Stage

Action Message Mapping stage

Message Rearrangement Stage

High Cohesion Check

Low Coupling Check

Fork or Stair Check

Central Class Check

Use-case Diagram and Description

Class Diagram

Sequence Diagram

Complete SQD

Level1 SQD Level2

SQD

Page 15: A Multi-level Methodology for Developing UML Sequence Diagrams

15

7. Method Steps

1. Object Framework Level: Identify the building participants which constitute the basic framework of an SQD.

1.1 Object Assembly Stage: Identify the actor, primary BO, primary CO, secondary CO(s), secondary BO(s) for the SQD.

1.2 Object Rearrangement Stage: Rearrange the classes (and also the actor) in the following order: Actor, Primary BO, Primary CO, EOs (list in the order of access), and Secondary COs and Secondary BOs in the order of access.

2. Responsibility Assignment Level: Assign correct responsibilities to each object. 2.1 Action-Message Mapping Stage: Map every automated action in the use-case description to

a message in the SQD. Each message would fall under one of the following categories: Instance creation and destruction, Association forming, Attribute modification, Attribute access, Input/Output/Interface, and Integrity-constraint checking.

2.2 Message Re-arrangement Stage: Perform arrangement checks such as: making sure that each message is traceable to the primary actor through activated objects, giving meaningful names to each message, checking consistency of SQD with class diagram, removing any unnecessary return messages, and checking for continuity of focus of control.

3. Visual Pattern Level: Apply final checks based on the visual patterns illustrated by the SQD. 3.1 High Cohesion Check: Make sure that the responsibilities assigned to a class are related, and

there exists a high cohesion within a class. 3.2 Low Coupling Check: Re-arrange messages from one class to another class to reduce

coupling. 3.3 Fork or Stair Check: Choose between the “fork” and the “stair” pattern depending on the

relationship between classes, and taking into account the pros and cons of both patterns. 3.4 Central Class Check: It should be kept in mind that the class, which looks central in the class

diagram, is likely to send most messages to other classes in the SQD.

Page 16: A Multi-level Methodology for Developing UML Sequence Diagrams

16

7.1 Object Framework Level

In this level, we identify the building blocks which constitute the basic framework of an SQD.

Page 17: A Multi-level Methodology for Developing UML Sequence Diagrams

17

7.1.1Object Assembly Stage

Select the initiating actor and initiating event from the use case description.

Identify the primary display screen needed for implementing the use case. Call it the primary boundary object.

Create a primary control object to handle communication between the primary boundary object and domain objects.

If the use case involves any included or extended use case, create one secondary CO for each of them.

Identify the number of major screens necessary to implement the use case.

From the class diagram, list all domain classes participating in the use case by reviewing the use case description.

:Actor:Actor :PrimaryBO:PrimaryBO

:PrimaryCO:PrimaryCO

:SomeEO:SomeEO

:SecondaryCO:SecondaryCO

1: submitInfo()

2: create

3: create

4: doSomething()

5: create

Page 18: A Multi-level Methodology for Developing UML Sequence Diagrams

18

7.1.2 Object Rearrangement Stage

Use the classes just identified as participant names in the SQD.

In a logical sequence of actions, tasks begin with an actor interacting with an interface (BO). The BO then passes control to a CO that has resources to carry the required actions, which then passes control to relevant EOs, and so on.

Hence, list the actor and the classes in the following order: Actor, Primary BO, Primary CO, EOs (list in the order of access), Secondary BOs, and Secondary COs in the order of access.

Page 19: A Multi-level Methodology for Developing UML Sequence Diagrams

19

7.2 Responsibility Assignment Level Responsibility assignment refers to the

determination of which class should implement a message (the target), and which class should send the message (the source).

A segment of a SQD and the class in the design class diagram:SomeEntity:SomeEntity:SomeController:SomeController

1: doSomething()SomeEntity

doSomething()

Page 20: A Multi-level Methodology for Developing UML Sequence Diagrams

20

7.2.1 Action-Message Mapping Stage

The messages are identified through the following procedure: Identify verbs from the use-case description. Remove verbs that describe the problem. Select verbs that solve the

problem and call them problem-solving verbs. From the problem-solving verbs (PSVs), select verbs that represent an

automatic operation or a manual operation by the actor. We call these PSVs problem-solving operations (PSOs) and use them as messages in the SQD.

 Larman (2004) uses three types of postconditions: Instance creation and destruction, Association forming, and Attribute modification.

In this paper, we treat them as PSO categories. Here, we add three more PSO categories: Attribute access, Input/Output/Interface, and Integrity-constraint checking.

We use these six PSO categories to identify messages from a use case description. These six types of PSOs can also be used in identifying messages that are necessary but not explicit in the use case descriptions.

 

Page 21: A Multi-level Methodology for Developing UML Sequence Diagrams

21

7.2.1 Action-Message Mapping StageA. Instance Creation and Desctruction

B should have the responsibility to send the create() message to A: B aggregates A objects B contains A objects B records instances of

A objects B closely uses A objects B has the initializing

data that will be passed to A when it is created.

AA

BB2: create

:SomeCO:SomeCO :SomeEO:SomeEO :AnotherEO:AnotherEO

1: getX()

3: getY()

4: create

:SomeCO:SomeCO

:SomeEO:SomeEO

:AnotherEO:AnotherEO

1: create(AnotherEO_id)

2: getX()

4: getY()

3: X

5: Y

X

Page 22: A Multi-level Methodology for Developing UML Sequence Diagrams

22

7.2.1 Action-Message Mapping StageB. Association Forming

If there is an association between two classes, then at least one of the SQDs must include a message that forms this association.

If a depicted association is never supposed to be used at all, then there must be an error either in the class diagram or the SQD (Ambler, 2008b).

Associations can be formed by creating the object with the appropriate parameters or by updating the appropriate parameter in the object.

Figure shows an example where the association is formed between :SomeEO and :AnotherEO by the parameter (AnotherEO_id) being passed to :SomeEO at creation. This makes the getX() message possible.

:SomeCO:SomeCO

:SomeEO:SomeEO

:AnotherEO:AnotherEO

1: create(AnotherEO_id)

2: getX()

4: getY()

3: X

5: Y

Page 23: A Multi-level Methodology for Developing UML Sequence Diagrams

23

7.2.1 Action-Message Mapping StageC. Attribute Modification (Set/ Compute/

Convert)

For each postcondition that causes a state change, there should be a message. The messages change the value of attributes such as deposit_amount(), calc_subscription_charge(), and convert_cm_to_inch().

Any message that sets a value, computes a value, or converts one unit to another belongs to this message type.

Simple Calculation

Complex Calculation

:SomeCO:SomeCO :SomeEO:SomeEO

1: calcSomething(x,y)

:SomeEntity:SomeEntity:SomeCO:SomeCO :Obj1:Obj1 :Obj2:Obj2

1: getX()

2: getY()

3: calcZ()

4: doSomething(z)

Page 24: A Multi-level Methodology for Developing UML Sequence Diagrams

24

7.2.1 Action-Message Mapping StageD. Attribute Access(Get/ Find/

Compare/ Sort) This type of message

reads values of attributes. Any message that gets a value, finds a value, compares values, and sorts values belongs to this message type.

A frequent mistake of novice developers is to try to update an attribute of a read-only class in the use case.

:Subscription:Subscription :PricingPolicy:PricingPolicy

1: getBeginEndDates()

3: setDescription()

4: updatePrice()

2: BeginEndDates

:Subscription:Subscription :PricingPolicy:PricingPolicy

1: getPrice(beginDate,endDate,price)

2: Price

X

Page 25: A Multi-level Methodology for Developing UML Sequence Diagrams

25

7.2.1 Action-Message Mapping StageE. Input/ Output/ Interface

This type of messages is used to input data to display output,

generate report to save a data to

a storage to interface with

external objects or systems.

:Actor:Actor :BO:BO

:CO:CO

:EO:EO

1: submitInfo()

2: create

3: getNewInfo()

4: getNewInfo()

5: newInfo

6: newInfo

7: displayNewInfo()

X

:Actor:Actor :BO:BO

:CO:CO

:EO:EO

1: submitInfo()

2: create

3: getNewInfo()

4: getNewInfo()

5: newInfo

6: displayNewInfo()

Page 26: A Multi-level Methodology for Developing UML Sequence Diagrams

26

7.2.1 Action-Message Mapping StageF. Integrity-constraint (IC) Checking

Another message type in an SQD is an IC checking operation.

Checking a complex integrity constraint usually requires passing of multiple messages among objects.

Examples include validating a user input or computing a discount amount based on the current order and customer credit rating.

Page 27: A Multi-level Methodology for Developing UML Sequence Diagrams

27

7.2.2 Message Rearrangement Stage

Make sure that each message is traceable to the primary Actor through activated objects.

Name each message with meaningful names

Check the SQD for consistency with the Class Diagram.

:Subscriber:Subscriber :WebInterface:WebInterface

;Subscription Handler

;Subscription Handler

:Individual Subscriber:Individual Subscriber

:Pricing Policy:Pricing Policy :Payment Handler

:Payment Handler

:Payment:Payment

1: selectOption()

3: create

4: create

5: getPrice(beginDate,endDate,price)

2: create

6: price

X

6: create

:Subscriber:Subscriber :Web Interface:Web Interface

:Subscription Handler

:Subscription Handler

:Individual Subscriber:Individual Subscriber

:Pricing Policy:Pricing Policy

:Payment Handler

:Payment Handler

:Payment:Payment

1: submitInfo()

2: create

3: create

4: getPrice(beginDate,endDate,price)

7: create

5: Price

Page 28: A Multi-level Methodology for Developing UML Sequence Diagrams

28

7.2.2 Message Rearrangement Stage

Check if return messages are implied or required.

Check for the correctness of focus of control.

:Obj2:Obj2:Obj1:Obj1

1: getStatus()

2: status

3: confirmation

:Subscriber:Subscriber :Payment Window

:Payment Window

:Payment Handler

:Payment Handler

1: enterPaymentData()

2: submitCC_Info()

:Payment Handler

:Payment Handler

:Subscriber:Subscriber :Payment Window

:Payment Window

1: enterPaymentData()

2: submitCC_Info()

3: status

X

Page 29: A Multi-level Methodology for Developing UML Sequence Diagrams

29

7.3 Visual Pattern Level

Using GRASP Patterns

High Cohesion Check Low Coupling Check Fork or Stair Check Central Class Check

Page 30: A Multi-level Methodology for Developing UML Sequence Diagrams

30

7.3.1 High Cohesion Check

Responsibilities of a class are closely related

A class should not have diverse responsibilities.

As in figure, logically :PaidSubscriber should not be responsible to edit/create the subscription information.

Hence, a Controller is used to create a new subscription.

:Subscription:Subscription :Paid Subscriber

:Paid Subscriber

1: setExpDate()

2: setExpWarningDate()

3: updateSubStatus()

:Subscription Handler

:Subscription Handler

:Subscription:Subscription1: create(subsBeginDate,subLength)

2: setExpDate()

3: setExpWarningDate()

4: updateSubsStatus()

X

Page 31: A Multi-level Methodology for Developing UML Sequence Diagrams

31

7.3.2 Low Coupling Check

Ensure that every recipient of a message and every parameter in the message is either part of the state of the object that is sending it; passed as a parameter to the method sending the new

message; or returned from a previous message sent within the current

method. (Law of Demeter; Rowlett, 2001) To send a message, use a source class that is already

coupled to the target class. Introduce a CO if many messages are being passed

between two classes. In this way the CO can coordinate among multiple objects.

Make sure a parameter is not passed again and again in multiple messages.

Page 32: A Multi-level Methodology for Developing UML Sequence Diagrams

32

7.3.3 Fork or Stair Check

Application of the aforementioned guidelines result in a visual pattern to the SQD, which is descriptively called a “fork” or “stair” pattern (Jacobson, 1992).

A “fork” structure is recommended When messages could change the

order When there is a central object that

controls many messages as in the case of enforcing an integrity constraint.

A “stair” structure is recommended When there is no central object in

the SQD When messages have strong

connections among objects based on relationships such as temporal relationships or an aggregation hierarchy.

Fork Pattern

Stair Pattern

;Some CO;Some CO :Obj1:Obj1 :Obj2:Obj2 :Obj3:Obj3 :Obj4:Obj4

1: doA()

2: doB()

3: doC()

4: doD()

:SomeCO:SomeCO :Obj1:Obj1 :Obj2:Obj2 :Obj3:Obj3 :Obj4:Obj4

1: doA()

2: doB()

3: doC()

4: doD()

Page 33: A Multi-level Methodology for Developing UML Sequence Diagrams

33

7.3.4 Central Class Check

The “central class” concept of Chonoles and Schardt(2003) is helpful.

They suggest identifying a central class for a use case, and note that this class will probably do a large part of the work in the interaction.

It can be seen that Obj2 is the central class – it has the shortest access route (least hops) to all the other classes in the interaction.

It might be an indication that responsibilities are incorrectly assigned. (Obj5 has the most difficult access to the other classes).

Obj1 Obj3Obj2

10..1 10..*

Obj4

1

0..*

Obj5

0..11

0..* 1

1 0..1

0..*

1

10..1

:SomeCO:SomeCO :Obj5:Obj5 :Obj4:Obj4 :Obj2:Obj2 :Obj1:Obj1 :Obj3:Obj3

1:

2:

3:

4:

5:

X

Page 34: A Multi-level Methodology for Developing UML Sequence Diagrams

34

8. Conclusion

We have presented a multi-level development methodology for developing SQDs in UML.

We have included guidelines and common visual patterns in SQDs while highlighting the frequently committed mistakes by novices.

The guidelines were tested and examples were collected for the past five years of teaching SQDs in a graduate class. The students found our guidelines usable and effective.

Page 35: A Multi-level Methodology for Developing UML Sequence Diagrams

35

9. Future Work

Perform a more extensive study to measure the number and the nature of mistakes they make at each level of the proposed methodology.

Handle loops and conditionals. Create and Delete participants. Deal with Timing Inconsistency. Enhance the resulting SQD to make it

easily convertible to the source code.

Page 36: A Multi-level Methodology for Developing UML Sequence Diagrams

36

Questions, Comments, Thoughts, Ideas???

Thank You!!!

:Actor:Actor :SomeEntity:SomeEntity:BoundaryObject:BoundaryObject

:ControllerObject:ControllerObject

3: doSomething()

4: doWhenever()

1: enterValues()

2: create

5: doAnow_thenReturn()

7: self_doA()

8: return

6: return