| |
| |
Introduction | |
| |
| |
How to Use This Book | |
| |
| |
Some Presumptuous Assumptions | |
| |
| |
How This Book Is Organized | |
| |
| |
Icons Used in This Book | |
| |
| |
Where to Go from Here | |
| |
| |
| |
UML and System Development | |
| |
| |
| |
What's UML About, Alfie? | |
| |
| |
Introducing UML | |
| |
| |
Appreciating the Power of UML | |
| |
| |
Choosing the Appropriate UML Diagram | |
| |
| |
Identifying Who Needs UML | |
| |
| |
Dispelling Misconceptions about UML | |
| |
| |
| |
Following Best Practices | |
| |
| |
Understanding UML Terminology and Concepts | |
| |
| |
Improving Your Productivity | |
| |
| |
| |
The Basics of Object Modeling | |
| |
| |
| |
Objects and Classes | |
| |
| |
Recognizing Classes and Objects | |
| |
| |
Naming Objects and Classes | |
| |
| |
Identifying Attributes | |
| |
| |
Performing Operations | |
| |
| |
Diagramming a System's Parts | |
| |
| |
Defining Visibility | |
| |
| |
| |
Relating Objects That Work Together | |
| |
| |
Showing Static Relationships in a Class Diagram | |
| |
| |
Linking Objects Together | |
| |
| |
Associating Classes | |
| |
| |
Naming Your Associations | |
| |
| |
Relating Many Objects (Multiplicity) | |
| |
| |
Understanding the Roles That Classes Can Play | |
| |
| |
Associating Classes with Themselves | |
| |
| |
Using Association Classes | |
| |
| |
Qualifying Relationships | |
| |
| |
Finding a Way--Navigation | |
| |
| |
Creating a Program | |
| |
| |
| |
Including the Parts with the Whole | |
| |
| |
Representing the Whole and the Parts | |
| |
| |
Showing Ownership: Composition | |
| |
| |
Showing What Can Be Shared: Aggregation | |
| |
| |
Deciding between Aggregation and Composition | |
| |
| |
Using Alternate Composite Notation | |
| |
| |
| |
Reusing Superclasses: Generalization and Inheritance | |
| |
| |
Making Generalizations | |
| |
| |
Specializing Classes | |
| |
| |
Using Generalization Sets | |
| |
| |
Inheriting from Ancestors | |
| |
| |
Exploring the Pros and Cons of Multiple Inheritances | |
| |
| |
Reusing Code | |
| |
| |
| |
Organizing UML Class Diagrams and Packages | |
| |
| |
Modeling Objects and Classes on Diagrams | |
| |
| |
Constructing Class Diagrams | |
| |
| |
Using Project-Oriented Class Diagrams | |
| |
| |
| |
The Basics of Use-Case Modeling | |
| |
| |
| |
Introducing Use-Case Diagrams | |
| |
| |
Identifying Your Audience | |
| |
| |
Casting the System's Actors | |
| |
| |
Exposing an Actor's Roles | |
| |
| |
Showing Your System's Use Cases | |
| |
| |
Distinguishing between Internal and External | |
| |
| |
Using Context Diagrams | |
| |
| |
Packaging Use Cases | |
| |
| |
| |
Defining the Inside of a Use Case | |
| |
| |
Creating a Use-Case Specification | |
| |
| |
Telling the Use-Case Story | |
| |
| |
Indicating Alternative Courses of Behavior | |
| |
| |
| |
Relating Use Cases to Each Other | |
| |
| |
Linking Use Cases with [double left angle bracket]include[double right angle bracket] | |
| |
| |
Using Generalization with Use Cases | |
| |
| |
Extending Use Cases | |
| |
| |
| |
The Basics of Functional Modeling | |
| |
| |
| |
Introducing Functional Modeling | |
| |
| |
Modeling Functions from an Object-Oriented Perspective | |
| |
| |
Writing Text-Based Behavioral Specifications | |
| |
| |
| |
Capturing Scenarios with Sequence Diagrams | |
| |
| |
Diagramming an Interaction Scenario | |
| |
| |
Composing Interaction Diagrams | |
| |
| |
| |
Specifying Workflows with Activity Diagrams | |
| |
| |
Ordering the Flow of Behavior | |
| |
| |
Working through Workflow Diagrams | |
| |
| |
| |
Capturing How Objects Collaborate | |
| |
| |
Developing a Collaboration | |
| |
| |
Constructing the Communication Diagram | |
| |
| |
Conquering Concurrency | |
| |
| |
Capturing the Collaboration's Design | |
| |
| |
| |
Capturing the Patterns of Behavior | |
| |
| |
Describing Patterns with Collaborations | |
| |
| |
Applying Patterns | |
| |
| |
Framing Frameworks | |
| |
| |
| |
Dynamic Modeling | |
| |
| |
| |
Defining the Object's Lives with States | |
| |
| |
Showing the Life of an Object | |
| |
| |
Programming an Object's Memory with State Attributes | |
| |
| |
Creating State Diagrams from Scenarios | |
| |
| |
| |
Interrupting the States by Hosting Events | |
| |
| |
Making Use of Events | |
| |
| |
Indicating Order of Execution on a Diagram | |
| |
| |
Showing Transitions as Icons | |
| |
| |
| |
Avoiding States of Confusion | |
| |
| |
Simplifying Large State Diagrams | |
| |
| |
Handling Concurrency with States | |
| |
| |
Building Protocol State Machines | |
| |
| |
| |
Modeling the System's Architecture | |
| |
| |
| |
Deploying the System's Components | |
| |
| |
Defining Your System | |
| |
| |
Constructing Logical Pieces | |
| |
| |
Working with Components | |
| |
| |
Deploying Physical Pieces (Implementation) | |
| |
| |
| |
Breaking the System into Packages/Subsystems | |
| |
| |
Using Packages and Subsystems | |
| |
| |
Exploring Dependencies | |
| |
| |
Patterning the Relationships | |
| |
| |
| |
The Part of Tens | |
| |
| |
| |
Ten Common Modeling Mistakes | |
| |
| |
Splitting Attributes and Operations | |
| |
| |
Using Too Few or Too Many Diagram Types | |
| |
| |
Showing Too Much Detail | |
| |
| |
Using Vague Terminology | |
| |
| |
Defining the Same Thing Twice | |
| |
| |
Linking Everything Together | |
| |
| |
Creating Too Many Use Cases | |
| |
| |
Completing One Diagram Before Moving On | |
| |
| |
Cycling Around Class Diagrams | |
| |
| |
Not Listening to the User | |
| |
| |
| |
Ten Useful UML Web Sites | |
| |
| |
Weave a Tangled Web | |
| |
| |
UML Home Page | |
| |
| |
UML Forum | |
| |
| |
UML 2 Submitters | |
| |
| |
OCL Center | |
| |
| |
Magazines and Information Portals | |
| |
| |
Search Engines | |
| |
| |
Tool Sites | |
| |
| |
Training Sites | |
| |
| |
Forums and Groups | |
| |
| |
Miscellaneous Sites | |
| |
| |
| |
Ten Useful UML Modeling Tools | |
| |
| |
Picking a Tool | |
| |
| |
Argo/UML | |
| |
| |
Cittera | |
| |
| |
Ideogramic UML | |
| |
| |
Objecteering | |
| |
| |
Rational Rose Suite | |
| |
| |
Rhapsody | |
| |
| |
System Architect | |
| |
| |
Tau | |
| |
| |
TogetherSoft | |
| |
| |
Visio | |
| |
| |
| |
Ten Diagrams for Quick Development | |
| |
| |
Context Diagram | |
| |
| |
Use-Case Diagram | |
| |
| |
Domain Class Diagram | |
| |
| |
Sequence Diagram | |
| |
| |
State Diagram | |
| |
| |
Application Class Diagram | |
| |
| |
Package Diagram | |
| |
| |
Deployment Diagram | |
| |
| |
Communication Diagram | |
| |
| |
Activity Diagram | |
| |
| |
Index | |