List of Figures

Figure 1.1:     A small piece of the UML meta-model

Figure 1.2:     Classification of UML diagram types

Figure 1.3:     An informal screen flow diagram for part of the wiki (http://c2.com/cgi/wiki)

Figure 3.1:     A simple class diagram

Figure 3.2:     Showing properties of an order as attributes

Figure 3.3:     Showing properties of an order as associations

Figure 3.4:     A bidirectional association

Figure 3.5:     Using a verb phrase to name an association

Figure 3.6:     A note is used as a comment on one or more diagram elements

Figure 3.7:     Example dependencies

Figure 4.1:     A sequence diagram for centralized control

Figure 4.2:     A sequence diagram for distributed control

Figure 4.3:     Creation and deletion of participants

Figure 4.4:     Interaction frames

Figure 4.5:     Older conventions for control logic

Figure 4.6:     A sample CRC card

Figure 5.1:     Showing responsibilities in a class diagram

Figure 5.2:     Static notation

Figure 5.3:     Aggregation

Figure 5.4:     Composition

Figure 5.5:     Derived attribute in a time period

Figure 5.6:     A Java example of interfaces and an abstract class

Figure 5.7:     Ball-and-socket notation

Figure 5.8:     Older dependencies with lollipops

Figure 5.9:     Using a lollipop to show polymorphism in a sequence diagram

Figure 5.10:   Qualified association

Figure 5.11:   Multiple classification

Figure 5.12:   Association class

Figure 5.13:   Promoting an association class to a full class

Figure 5.14:   Association class subtleties (Role should probably not be an association class)

Figure 5.15:   Using a class for a temporal relationship

Figure 5.16:   «Temporal» keyword for associations

Figure 5.17:   Template class

Figure 5.18:   Bound element (version 1)

Figure 5.19:   Bound element (version 2)

Figure 5.20:   Enumeration

Figure 5.21:   Active class

Figure 5.22:   Classes with messages

Figure 6.1:     Class diagram of Party composition structure

Figure 6.2:     Object diagram showing example instances of Party

Figure 7.1:     Ways of showing packages on diagrams

Figure 7.2:     Package diagram for an enterprise application

Figure 7.3:     Separating Figure 7.2 into two aspects

Figure 7.4:     A package implemented by other packages

Figure 7.5:     Defining a required interface in a client package

Figure 8.1:     Example deployment diagram

Figure 9.1:     Example use case text

Figure 9.2:     Use case diagram

Figure 10.1:   A simple state machine diagram

Figure 10.2:   Internal events shown with the typing state of a text field

Figure 10.3:   A state with an activity

Figure 10.4:   Superstate with nested substates

Figure 10.5:   Concurrent orthogonal states

Figure 10.6:   A C# nested switch to handle the state transition from Figure 10.1

Figure 10.7:   A State pattern implementation for Figure 10.1

Figure 11.1:   A simple activity diagram

Figure 11.2:   A subsidiary activity diagram

Figure 11.3:   The activity of Figure 11.1 modified to call Figure 11.2

Figure 11.4:   Partitions on an activity diagram

Figure 11.5:   Signals on an activity diagram

Figure 11.6:   Sending and receiving signals

Figure 11.7:   Four ways of showing an edge

Figure 11.8:   Transformation on a flow

Figure 11.9:   Expansion region

Figure 11.10: Shorthand for a single action in an expansion region

Figure 11.11: Flow finals in an activity

Figure 11.12: Join specification

Figure 12.1:   Communication diagram for centralized control

Figure 12.2:   Communication diagram with nested decimal numbering

Figure 13.1:   Two ways of showing a TV viewer and its interfaces

Figure 13.2:   Internal view of a component (example suggested by Jim Rumbaugh)

Figure 13.3:   A component with multiple ports

Figure 14.1:   Notation for components

Figure 14.2:   An example component diagram

Figure 15.1:   A collaboration with its class diagram of roles

Figure 15.2:   A sequence diagram for the auction collaboration

Figure 15.3:   A collaboration occurrence

Figure 15.4:   A nonstandard way of showing pattern use in JUnit (junit.org)

Figure 16.1:   Interaction summary diagram

Figure 17.1:   Timing diagram showing states as lines

Figure 17.2:   Timing diagram showing states as areas