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 5.1: Showing responsibilities in a class diagram
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.18: Bound element (version 1)
Figure 5.19: Bound element (version 2)
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 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.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