1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
1
00:00:00,080 --> 00:00:02,400
Now that we have seen use cases, the next behavioral
2
00:00:02,400 --> 00:00:05,540
diagram I want to discuss is the sequence diagram. So
3
00:00:05,540 --> 00:00:08,070
what is a sequence diagram? It is an interaction diagram
4
00:00:08,070 --> 00:00:12,710
that emphasizes how objects communicate and the time ordering of
5
00:00:12,710 --> 00:00:15,940
the messages between objects. To illustrate sequence diagrams in a
6
00:00:15,940 --> 00:00:18,600
practical way, and hopefully in a clear way, I will
7
00:00:18,600 --> 00:00:21,960
introduce them by creating an actual sequence diagram using an
8
00:00:21,960 --> 00:00:25,160
example taken from our course management system. So let's see what
9
00:00:25,160 --> 00:00:28,050
are the steps needed to build such a sequence diagram. The first
10
00:00:28,050 --> 00:00:30,900
thing we want to do is place the objects that participate in
11
00:00:30,900 --> 00:00:34,460
the interaction at the top of the diagram along the x-axis, and
12
00:00:34,460 --> 00:00:36,410
you also want to place them in a specific way. You want
13
00:00:36,410 --> 00:00:39,770
to place objects that initiate the interaction at the left, and place
14
00:00:39,770 --> 00:00:42,260
increasingly more subordinate objects to the
15
00:00:42,260 --> 00:00:44,430
right. So basically, this should reflect
16
00:00:44,430 --> 00:00:47,660
the way the events will flow for the majority of the interactions
17
00:00:47,660 --> 00:00:50,202
in the system. Next thing you want to do is to add
18
00:00:50,202 --> 00:00:53,910
what is called the object lifeline. It's a vertical line that
19
00:00:53,910 --> 00:00:57,300
shows the existence of objects over a period of time. And
20
00:00:57,300 --> 00:01:00,660
it's normally represented with a dashed line, except for the outermost
21
00:01:00,660 --> 00:01:03,190
object for which it is a solid line. Now that you
22
00:01:03,190 --> 00:01:06,450
have your object lifeline you can start placing messages that these
23
00:01:06,450 --> 00:01:09,285
objects send and receive. You want to put them along the
24
00:01:09,285 --> 00:01:12,860
y-axis in order of increasing time, from top to bottom. And
25
00:01:12,860 --> 00:01:15,550
you can also put a number on the message to further
26
00:01:15,550 --> 00:01:18,230
clarify the sequence. So in this case what we're showing
27
00:01:18,230 --> 00:01:21,550
is that the student will send the fill in info
28
00:01:21,550 --> 00:01:24,330
message to the registration form. And this is the first
29
00:01:24,330 --> 00:01:27,960
message in the sequence diagram, the first interaction. Then the student
30
00:01:27,960 --> 00:01:30,900
might submit the form and this is also a message
31
00:01:30,900 --> 00:01:33,370
that goes to the registration form. At this point, when
32
00:01:33,370 --> 00:01:36,440
the submission takes place, the registration form will send the
33
00:01:36,440 --> 00:01:39,990
message, so it will invoke some functionality in the registration manager.
34
00:01:39,990 --> 00:01:43,560
Specifically you will invoke the add course functionality
35
00:01:43,560 --> 00:01:46,400
and pass Joe, the name of the student and
36
00:01:46,400 --> 00:01:49,410
Math 101 which is the specific course for which
37
00:01:49,410 --> 00:01:53,180
Joe is registering. Then the registration manager will ask
38
00:01:53,180 --> 00:01:56,780
the Math 101 course whether it accepts registrations,
39
00:01:56,780 --> 00:01:59,780
and the interaction will continue. So that Math 101
40
00:01:59,780 --> 00:02:02,820
will actually check for a specific offering, if everything
41
00:02:02,820 --> 00:02:05,070
goes fine, you will receive an ack, you'll send
42
00:02:05,070 --> 00:02:07,180
back the act to the registration manager and so
43
00:02:07,180 --> 00:02:10,650
on. Until at the end, Joe will be registered for
44
00:02:10,650 --> 00:02:13,390
Math 101. As you can see, it is very
45
00:02:13,390 --> 00:02:17,600
easy to see how the interaction occurs between these different
46
00:02:17,600 --> 00:02:21,010
objects at run time, dynamically. So what the behavior
47
00:02:21,010 --> 00:02:24,070
of the system is for this specific scenario. So the
48
00:02:24,070 --> 00:02:26,780
last notational element that I want to add to this
49
00:02:26,780 --> 00:02:30,350
diagram is the focus of control. Which is this tall
50
00:02:30,350 --> 00:02:32,880
thin rectangle, that shows the period of time
51
00:02:32,880 --> 00:02:35,190
that an object is performing an action, either
52
00:02:35,190 --> 00:02:37,270
directly or indirectly. So if we look at
53
00:02:37,270 --> 00:02:39,240
the registration form, this is telling us that
54
00:02:39,240 --> 00:02:41,670
the registration form is active for this amount
55
00:02:41,670 --> 00:02:43,170
of time. And the same thing we can
56
00:02:43,170 --> 00:02:45,520
do for the registration manager, the Math 101
57
00:02:45,520 --> 00:02:49,170
course offering, and the Math 101 specific section.
|