Sequence Diagrams and Collaboration Diagrams

Reviews
Shared by: Dave Buster
Stats
views:
47
rating:
not rated
reviews:
0
posted:
4/23/2009
language:
English
pages:
0
Sequence Diagrams and Collaboration Diagrams Rajkumar Buyya Grid Computing and Distributed Systems (GRIDS) Laboratory Dept. of Computer Science and Software Engineering University of Melbourne, Australia http://www.cs.mu.oz.au/~raj or http://www.buyya.com 1 Introduction/Agenda  Pieces of UML:    Structural Diagrams Behavioural Diagrams      Class and object diagram Component and Deployment Diagram Use Case Diagram Activity Diagram Sequence Diagram Collaboration Diagram State Chart Diagram   Learned so far:   Today we will focus on:  Use case diagram, class and object diagram, class relationships Sequence Diagram Collaboration Diagram  2 Object Oriented Design  Design consists of the following steps :     Refine the class diagram. Draw the interaction diagrams for the system.  Sequence Diagram  Collaboration Diagram If objects go through complex state transitions – statechart diagrams Do the above steps iteratively as needed. 3 Sequence Diagram  Shows how objects communicate with each other over time.   That is, sequence diagrams are used to model object interactions arranged in time sequence and to distribute use case behavior to classes. They can also be used to illustrate all the paths a particular use case can ultimately produce.  The sequence diagram consists of Active Objects, Messages represented as solid-line arrows, and Time represented as a vertical progression. 4 Sequence Diagram - Objects  A life line illustrates what is happening to an object in a chronological fashion. :Name Object Life line Activation 5 Sequence Diagram – Time & Messages  Messages are used to illustrate communication between different active objects of a sequence diagram. :Name1 :Name2 Actor Message One Message Two 6 Types of Messages  Synchronous (flow interrupt until the message has completed. Asynchronous (don’t wait for response) Flat – no distinction between sysn/async    Return – control flow has returned to the caller. 7 Sequence Diagram – Compilation :Compiler Actor Compile Load Files Linker FileSystem Compile files Save OBJ Files Link Load OBJ files Link OBJ files Write EXE file 8 Branching Flow: flow goes to different objects [if condition is met] :Editor FileSystem Load File :BinaryViewer :TextViewer [text file] [binary file] 9 Alternative Flow: flow changes to alternative lifeline branch of the same object Editor Actor Exit App FileSystem [delete file] [save file] 10 Sequence diagram -example  Use case  Add Subject Use Case to URS (University Record System):  Scenario  Scenario 1 : Subject gets added successfully.  Scenario 2 : Adding the subject fails because the subject is already in the database. 11 System Design Principles  System input can take different forms. E.g.   From a graphical user interface From a command file   URS system should be designed such that the functionality can be re-used. Command reading and functionality implementation have to be separated. 12 Reading from a command file example class URS{ public static void main(String[] args){ URSDatabase u = new URSDatabase(); //Read command from file; while ( not end of file) { u.procCommand(cmd); //Read next commad; } //Close file } } 13 Sequence Diagram – URS Add Subject Scenario u:URSDatabase procCmd(cmd) parseCommand(cmd) {transient} << create >> a:AddSubCmd [if cmdN = ADDSUB] AddSubCmd(u,cmdA) execute() Subject(id,name) << create >> sub1:Subject addSubject(sub1) 14 Creating and Deleting objects c:Client <> setAction(a, d, 0) committed {transient} :Transaction p: ODBProxy setVales(a,d,3,4) <> 15 Collaboration Diagrams 16 Collaboration Diagrams       Class diagrams indicates what classes are part of our system, what they offer, how they relate, but they don’t tell us how they communicate. Collaboration diagrams show (used to model) how objects interact and their roles. They are very similar to sequence diagrams. Actually they are considered as a cross between class and sequence diagram. Sequence Diagrams are arranged according to Time. Collaboration Diagrams represent the structural organization of object. [Both sequence and collaboration diagrams are called interaction diagrams] 17 Collaboration Diagram – URS Add Subject Scenario 1:parseCommand(cmd) procCmd(cmd) <> 2:[if cmdN = ADDSUB] AddSubCmd(u,cmdA) {transient} u:URSDatabase 3: execute() {new} a:AddSubCmd 3.2: addSubject(sub1) <> {new} 3.1: Subject(id,name) sub1:Subject 18 Collaboration Diagram – URS Add Subject Scenario 1:parseCommand(cmd) procCommand(cmd) <> u:URSDatabase class URSDatabase{ private String cmdN; private String cmdA; private parseCommand(String cmd){ cmdN = …. cmdA = …. } public procCommand(String cmd){ parseCommand(cmd); } } 19 Collaboration Diagram – URS Add Subject Scenario {transient} u:URSDatabase 2: AddSubCmd(u,cmdA) {new} a:AddSubCmd class URSDatabase{ private String cmdN; private String cmdA; public procCommand(String cmd){ parseCommand(cmd); if (cmdN == ADDSUB){ AddSubCmd a = new AddSubCmd(u,cmdA); } } 20 } Collaboration Diagram – URS Add Subject Scenario class abstract Command { protected String cmd; protected URSDatabase u; public abstract void execute(); } class AddSubCmd extends Command{ public AddSubCmd(URSDatabase urs, String cmd){ u = urs; // parse command and set the arguments } public void execute(){ // implement here } } 21 Collaboration Diagram – URS Add Subject Scenario 3: execute() u:URSDatabase <> a:AddSubCmd class URSDatabase{ private String cmd; public procCommand(String cmd){ parseCommand(0); if (cmd == ADDSUB){ AddSubcmd a = new AddSubCmd(……); } a.execute(); } } 22 Collaboration Diagram – URS Add Subject Scenario class AddSubCmd{ URSDatabase u; public execute(){ subject sub1 = new Subject(id,name); } a:AddSubCmd 3.1: Subject(id,name) } sub1:Subject 23 Collaboration Diagram – URS Add Subject Scenario u:URSDatabase 3.2: addSubject(sub1) a:AddSubCmd class AddSubCmd{ URSDatabse u; public execute(){ subject sub1 = new Subject(……); u.addSubject(sub1); } } 24 Collaboration Diagram – URS Add Subject Scenario class URSDatabase{ private String cmd; private Hashtable subjectHash = new HashTable(); public procCommand(String cmd){ parseCommand(0); if (cmd == ADDSUB){ AddSubcmd a = new AddSubCmd(……); } a.execute(); } public addSubject(Subject sub); { subjectHash.put(sub.getKey(), sub); } } 25 URS -High Level Class Diagram URSDatabase 1 1 has has * * UniversityMember Subject 0…10 0..3 AcademicStaff 1 Student * takes teaches 26 Collaboration Diagrams  Collaborations Diagrams show transient links that exists between objects.     <> - A message from object to itself << local>> - A message sent due to the object begin defined as a local variable in the method. <> - The object reference was sent as a parameter to the method. <> The object is global. 27 Use Case Vs Scenarios  Use case  Enroll Subject Use Case:  Scenario Scenario 1 : Student is enrolled for the subject.  Scenario 2 : Enrollment fails since the student is already enrolled in 10 subjects.  28 Sequence Diagram – Enroll Student for subject successfully u:URSDatabase procCmd(cmd) stu:Student parseCommand(cmd) {transient} << create >> a:AssgSubCmd AssgSubCmd(u,cmdA) execute() getStudent(id) return stu getSubject(subId) return sub [if stu != NULL and sub != NULL] addSubject(sub) 29 Collaboration Diagram – Enroll Student in Subject Scenario 1:parseCommand() procCmd(cmd) <> {transient} 2:AddSubCmd(u,cmdA) {new} 3: execute() u:URSDatabase <> 3.1: stu: =getStudent(id) a:AssgSubCmd 3.2: sub: = getSubject(subId) {parameter} 3.3: [stu !=NULL and sub!= NULL]: addSubject(sub) stu:Student 30 Collaboration Diagram – Enroll Student in Subject subject - implementation {transient} procCmd(cmd) 3: execute() {new} u:URSDatabase <> 3.1: stu: =getStudent(id) 3.2: sub: = getSubject(subId) a:AssgSubCmd class AssgSubCmd{ private URSDatabase u; public execute(){ Student stu = u.getStudent(id); Subject sub = u.getSubject(subId); if (stu != null && sub != null){ stu.addSubject(sub); } } } {parameter} 3.3: [stu !=NULL and sub!= NULL]: addSubject(sub) stu:Student 31 Sequence Diagram – Enroll Student for subject - Failure u:URSDatabase procCmd(cmd) stu:Student parseCommand() {transient} << create >> a:AssgSubCmd AssgSubCmd(u,cmd) execute() [if stu != NULL and sub != NULL] addSubject(sub) return num [num >= 10] return e 32 getNumSubjects() Excp

Related docs
Sequence Diagrams
Views: 11  |  Downloads: 2
Sequence Diagrams
Views: 21  |  Downloads: 7
UML Sequence Diagrams
Views: 84  |  Downloads: 22
System Sequence Diagrams
Views: 12  |  Downloads: 6
UML Class Diagrams Sequence Diagrams
Views: 24  |  Downloads: 1
Design - Sequence Diagrams
Views: 1  |  Downloads: 0
OBJECT SEQUENCE DIAGRAMS
Views: 0  |  Downloads: 0
Lecture 5 Collaboration Diagrams
Views: 2  |  Downloads: 0
05 Sequence diagrams
Views: 0  |  Downloads: 0
premium docs
Other docs by Dave Buster
Business Idea Analysis Worksheet[0]
Views: 545  |  Downloads: 47
i-9
Views: 204  |  Downloads: 10
I Have Decided to Follow Jesus
Views: 274  |  Downloads: 1
Nohting But the Blood
Views: 154  |  Downloads: 4
dv200k
Views: 85  |  Downloads: 0
Applying to Graduate School
Views: 932  |  Downloads: 15
Above All Else
Views: 218  |  Downloads: 1
Contracts Outline
Views: 2243  |  Downloads: 174
Contract Outline -- Alford
Views: 2146  |  Downloads: 31
That s Why We Praise Him
Views: 263  |  Downloads: 2
A Common Love
Views: 175  |  Downloads: 0
I Will Enter His Gates
Views: 918  |  Downloads: 5
Get the Facts: Acupuncture
Views: 856  |  Downloads: 17
cr110
Views: 165  |  Downloads: 0
GREGMAT Math Workbook, Third Edition: Errors
Views: 2322  |  Downloads: 71