scalability, system design requirement, 317
scenarios of use case. See also sequence diagram
definition of, 155–160
list of diagrams for, 179
schedule
subsystems based on, 345
system design requirement, 317
«script» stereotype, 338
sd abbreviation, 191, 234
search engines, 374
secondary actors, 139, 141
semaphore message, 201
«semaphore» stereotype, 201
SendEvent, 195
sequence diagram
application-level sequence, 387
constructing, 190–192
constructing state diagram from, 272–276
creating and destroying objects in, 193–195
for design phase, 202
for frameworks, 257
high-level sequence, 387
multiple, summarizing in activity diagrams, 216
for object interaction in a collaboration, 254
sd abbreviation for, 191, 234
sending messages in, 195–201
uses of, 15, 179, 189, 202, 387
«serial» stereotype, 334
«service» stereotype, 331
SET operation. See accessor operations
shallow history pseudostate, 301
shapes and symbols in UML diagrams
ball and socket, for assemblies in a component, 331, 333
box
for actors, 138
for classes and objects, 52, 55–56, 59–60
with parallel vertical bars, for active object, 241
for qualifiers, 77
three-dimensional, for nodes, 333
box icon, with two small rectangles, for components, 327–328
boxes, stack of, in communication diagram, 240
bull’s eye, for final-activity nodes, 215
circle
filled in (large dot), for initial nodes, 215
filled in (large dot), for initial state, 263
labeled, for connectors, 215–216
with plus sign inside, for membership, 323
on a stick, for interfaces, 327
with X inside, for final-flow nodes, 215
diamond
for decision and merge nodes, 215
filled in, for composition, 86–87
hollow, for aggregation, 84, 87–88
folder, tabbed, for packages, 126, 146, 340
fork
for fork or join nodes, 215
for fork or join pseudostates, 306–307
fork icon, for system or subsystem, 181, 321
half circle, on a stick, for interfaces, 327
history of choices for, 53
line, dashed
with arrow, from object to class, 54–55
for dependencies, 76, 125, 347
dividing concurrent substates, 307
for included use cases, 162–163
for lifelines, 190
line, solid
for associations, 62
for links, 63
ovals
dashed, for collaborations, 250, 252–253, 355–356
for use cases, 140, 146
rectangle
action sequence icon, 291
for components, 327
for interaction-overview diagram, 221
rounded, for activities, 214
rounded, for events during states, 285
rounded, for states, 262
with triangular notch, signal receipt icon, 290
with triangular point, signal sending icon, 290
small square, for component ports, 331
socket, in pattern, 251–252
shell generation, UML modeling tools supporting, 33
signal receipt icon, 290
signal sending icon, 290
«signal» stereotype, 281
signature of operation, 50, 106
slash (/)
for an action or activity, 267
for derived attribute, 55
for event actions, 285–287
socket
ball and socket, for assemblies in a component, 331, 333
in patterns, 251–252
on a stick, for interfaces, 327
Softeam, Objecteering tool, 379–380
software. See also tools for UML modeling
software and system development. See also system design
automating from UML models, 16, 17, 378
component-based, 29–31
converting diagrams to code, 79–81
design phase, 202, 342, 390
diagrams for, 31
functional, 177–178
life cycles for, 34–35
methodologies for, 34–36, 129
object-oriented
benefits of, 177–178
encapsulation and information hiding used with, 24
history of UML and, 18
patterns in, 31
reusing code
with domain classes, 121–122
with frameworks, 255–258
with inheritance, 109–110
with patterns, 247–254
terminology used for, 28–29
types of systems being developed, 32–33
UML tools improving productivity of, 32–34
Software Development Magazine Web site, 374
source of association, 78–79
specialization
definition of, 21, 25–26
identifying superclass and subclasses with, 97–98
spell-checking diagrams, 43
«spin-lock» stereotype, 201
spiral life cycle, 35
square. See boxes
square brackets ([])
for multiplicity, 47, 90
for preconditions or postconditions, 310
stakeholders, 132
state attributes, 269–272
state diagram
avoiding data-flow diagram for, 309
complex, simplifying, 293–302
concurrent states in, 303–305
constructing, 263–266, 272–276
creating operations from events in, 278–281
definition of, 262–263
events as icons in, 290–292
order of execution defined in, 289–290
protocol state machines diagram, 308–312
uses of, 14, 15, 179, 312, 388
state transition, 195
state-machine diagram. See state diagram
states. See also events
activities or actions within, 267
attributes of, 269–272
concurrency with, 303–308
definition of, 262–263
diagramming, 262
do-forever, 309
do-until, 309
generalizing, 294–300
initial, 263, 264
pseudostates, connecting transitions with, 300–302
submachines for, 296–298
substates of, 294–296
transitions between, 267–269
types of, 266–267
static attributes, 58–60
static diagrams, 15
static operations, 58–60
stereotypes
for actors in use cases, 137–138
for artifacts, 337–338
for communication paths, 334–335
for components, 327
for constructor operation, 60
for creating and destroying objects, 195
for enumerations, 217, 284
for events treated as classes, 281
for extended use cases, 169–174
for importing subsystems, 351
for included use cases, 161–163
for instance of object, 55
for interfaces, 328–330
for internal parts of components, 331
for merging subsystems, 352
for messaging mechanism, 201
for nodes, 334
for subsystems, 321
syntax for, 54–55
for use-case controller, 230
for use-case levels, 143–144
for use-case packages, 146
stick figure. See actors
string datatype, 45
structural diagrams, 13–14. See also specific diagrams
structure of class. See attributes
subclasses
basis for discrimination between, 98–100
identifying with generalization, 94–97
identifying with specialization, 97–98
submachines, 296–298
substates
concurrent, pseudostates and, 305–308
definition of, 294–296
inheriting events in, 298–300
«subsystem» stereotype, 143, 181, 321
subsystems. See also components
aggregation and, 322
application, 322
cohesion in, 348, 350
as components, 325
converting packages to, 340–341, 343–345
coupling in, 348, 350
creating during decomposition, 318, 321–323
definition of, 321
dependencies in, 341, 347–350
diagramming, 321
for domain classes, 323
importing classes into, 351–352
interfaces for, 319
invoking interfaces from, 351–352
membership notation for, 323–324
merging, 352–354
in a package, 323
packages compared to, 340
relationships between, 318
responsibilities of, 323–325
types of, 322
for use cases, 322
superclasses
abstract operations for, 106
identifying with generalization, 94–97
identifying with specialization, 97–98
superstates, 294
surrogate class, 389
swim lanes, in activity diagram, 224–225
symbols in UML diagrams. See shapes and symbols in UML diagrams
symmetric association, 89
System Architect tool Web site, 380–381
system architecture modeling. See subsystems; system design
system design. See also software and system development; subsystems
architecture, physical, 333–338
architecture, system, 318
brittle systems, 339
categories of systems, 32–33
components for, 319, 325–333
current system, reviewing, 318
decomposition of system, 318, 320–325
deployment for, 333–338
interfaces for, 319, 327–330, 351–352
list of diagrams for, 320
object persistence for, 318
packages for, 339–343
patterns in, 354–357
priorities for, 316–318
process for, 316–319
strategies for, 319
subsystem interfaces for, 319
users’ terminology for, 370
system development. See software and system development
«system» stereotype, 143, 181
systems modeled by UML, 32–33