| |
| |
OMG Press Books in Print | |
| |
| |
About the OMG | |
| |
| |
2003 OMG Press Advisory Board | |
| |
| |
Preface for the Second Edition | |
| |
| |
About the Authors | |
| |
| |
Acknowledgments | |
| |
| |
| |
What Is UML? | |
| |
| |
The Purpose of Modeling | |
| |
| |
Software Development, Methods, and Models | |
| |
| |
The Method Wars | |
| |
| |
Acceptance of UML | |
| |
| |
The Object Management Group | |
| |
| |
Unified Modeling Language Elements | |
| |
| |
Methods and Modeling Languages | |
| |
| |
Object-Oriented Software Development | |
| |
| |
Concepts of Object Orientation | |
| |
| |
Business Engineering | |
| |
| |
Disciplines of System Development | |
| |
| |
Requirements | |
| |
| |
Analysis | |
| |
| |
Design | |
| |
| |
Implementation | |
| |
| |
Test | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
An Overview of UML | |
| |
| |
Views | |
| |
| |
Use-Case View | |
| |
| |
Logical View | |
| |
| |
Implementation View | |
| |
| |
Process View | |
| |
| |
Deployment View | |
| |
| |
Diagrams | |
| |
| |
Use-Case Diagram | |
| |
| |
Class Diagram | |
| |
| |
Object Diagram | |
| |
| |
State Machines | |
| |
| |
Activity Diagram | |
| |
| |
Interaction Diagrams | |
| |
| |
Sequence Diagram | |
| |
| |
Communication Diagram | |
| |
| |
Interaction Overview Diagram | |
| |
| |
Component Diagram | |
| |
| |
Deployment Diagram | |
| |
| |
Composite Structure Diagram | |
| |
| |
Model Elements | |
| |
| |
General Mechanisms | |
| |
| |
Adornments | |
| |
| |
Comments | |
| |
| |
Specifications | |
| |
| |
Extending UML | |
| |
| |
Stereotypes | |
| |
| |
Tagged Values | |
| |
| |
Constraints | |
| |
| |
Model Driven Architecture with UML | |
| |
| |
Software Development Process and UML | |
| |
| |
Tools | |
| |
| |
Drawing Support | |
| |
| |
Model Repository | |
| |
| |
Navigation | |
| |
| |
Multiuser Support | |
| |
| |
Code Generation | |
| |
| |
Reverse Engineering | |
| |
| |
Integration | |
| |
| |
Interchange of Models | |
| |
| |
Tool Options | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Use-Case Modeling | |
| |
| |
Basics of Use Cases | |
| |
| |
Use-Case Diagram | |
| |
| |
System | |
| |
| |
Actors | |
| |
| |
Finding Actors | |
| |
| |
Actors in UML | |
| |
| |
Relationships between Actors | |
| |
| |
Use Cases | |
| |
| |
Finding Use Cases | |
| |
| |
Use Cases in UML | |
| |
| |
Relationships between Use Cases | |
| |
| |
Generalization Relationship | |
| |
| |
Extend Relationship | |
| |
| |
Include Relationship | |
| |
| |
Organizing Use Cases | |
| |
| |
Describing Use Cases | |
| |
| |
Assessing Use Cases | |
| |
| |
Testing Use Cases | |
| |
| |
Use Cases and Requirements Management | |
| |
| |
Realizing Use Cases | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Classes, Objects, and Their Relationships | |
| |
| |
Classes and Objects | |
| |
| |
Class Diagram | |
| |
| |
Finding Classes | |
| |
| |
Name Compartment | |
| |
| |
Attributes Compartment | |
| |
| |
Java Implementation | |
| |
| |
Operations Compartment | |
| |
| |
Using Primitive Types | |
| |
| |
Relationships | |
| |
| |
Associations | |
| |
| |
Normal Association | |
| |
| |
Object Diagram | |
| |
| |
Recursive Association | |
| |
| |
Java Implementation | |
| |
| |
Roles in an Association | |
| |
| |
Qualified Association | |
| |
| |
Xor Constraint | |
| |
| |
Ordered Association | |
| |
| |
Association Class | |
| |
| |
Ternary Association | |
| |
| |
Aggregation | |
| |
| |
Aggregate | |
| |
| |
Shared Aggregation | |
| |
| |
Composition Aggregation | |
| |
| |
Generalization | |
| |
| |
Basic Generalization | |
| |
| |
Advanced Generalization | |
| |
| |
Generalization Set | |
| |
| |
Powertype | |
| |
| |
Dependencies and Abstractions | |
| |
| |
Constraints, Expressions, and Derivations | |
| |
| |
Interfaces and Ports | |
| |
| |
Java Implementation | |
| |
| |
Ports | |
| |
| |
Packages | |
| |
| |
Templates | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Dynamic Modeling | |
| |
| |
State Machines | |
| |
| |
States and Transitions | |
| |
| |
Event-Signature | |
| |
| |
Guard-Condition | |
| |
| |
Action-Expression | |
| |
| |
Send-Clause | |
| |
| |
Events | |
| |
| |
Java Implementation | |
| |
| |
Sending Messages Between State Machines | |
| |
| |
Substates | |
| |
| |
Entry, Exit, and Terminate Indicators | |
| |
| |
History Indicator | |
| |
| |
Activity Diagrams | |
| |
| |
Actions and Edges | |
| |
| |
Activity Partitions | |
| |
| |
Objects | |
| |
| |
Signals | |
| |
| |
Pins | |
| |
| |
Business Modeling with Activity Diagrams | |
| |
| |
Interaction Diagrams | |
| |
| |
Sequence Diagrams | |
| |
| |
Generic and Instance Form | |
| |
| |
Concurrent Objects | |
| |
| |
Combined Fragments | |
| |
| |
Interaction Occurrences | |
| |
| |
Creating and Destroying Objects | |
| |
| |
Recursion | |
| |
| |
Interaction Overviews | |
| |
| |
Communication Diagrams | |
| |
| |
Message Labels | |
| |
| |
Using Communication Diagrams | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Advanced Dynamic Modeling Illustrated by Real-Time Systems | |
| |
| |
What Is a Real-Time System? | |
| |
| |
Attributes of a Real-Time System | |
| |
| |
Types of Real-Time Systems | |
| |
| |
Concepts in UML for Real-Time Systems | |
| |
| |
Active Classes and Active Objects | |
| |
| |
Active Class Implementation | |
| |
| |
Active Object Interactions | |
| |
| |
Communication | |
| |
| |
Events and Triggers | |
| |
| |
Signals | |
| |
| |
Messages | |
| |
| |
Synchronization and Concurrency | |
| |
| |
Synchronization Issues | |
| |
| |
Synchronization Mechanisms | |
| |
| |
Fault Tolerance | |
| |
| |
Implementation in Java | |
| |
| |
UML Time Elements | |
| |
| |
Real-Time Modeling in UML Diagrams | |
| |
| |
Activity Diagrams | |
| |
| |
The Token Flow Model in Activity Diagrams | |
| |
| |
Chocolate Factory: Streaming Input and Output Example | |
| |
| |
Processing Applications: Expansion Regions and Structured Activities | |
| |
| |
Investment Simulation: Interruptible Regions and Storage | |
| |
| |
House Alarm: Static Structure for Dynamic Messages | |
| |
| |
Static Diagrams | |
| |
| |
Detailed Activity Diagram Showing Message Handling | |
| |
| |
Interaction Diagrams | |
| |
| |
Communication Diagrams | |
| |
| |
Basic Sequence Diagram | |
| |
| |
Advanced Sequence Diagrams with Combined Fragments | |
| |
| |
Timing Diagrams | |
| |
| |
Behavioral State Machines | |
| |
| |
Handling Active Classes and Objects | |
| |
| |
State Machine Regions and Concurrency | |
| |
| |
Handling Triggers on Events in Composite States | |
| |
| |
Transitions and Synchronization | |
| |
| |
Complex State Machines and Run-to-Completion Semantics | |
| |
| |
State Machine Redefinition and Reuse | |
| |
| |
Protocol State Machines | |
| |
| |
Advanced Modeling, Design, and Optimization | |
| |
| |
Design Overview | |
| |
| |
Modeling Processes and Threads with Objects | |
| |
| |
Designing Active Classes | |
| |
| |
Design and the Implementation Environment | |
| |
| |
Approaches to Showing Behavioral Diagrams | |
| |
| |
Performance Optimization | |
| |
| |
Design Optimization | |
| |
| |
Optimization and the Operating System | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Representing Architecture | |
| |
| |
Logical Architecture | |
| |
| |
Logical Architecture Structure | |
| |
| |
Components | |
| |
| |
Collaborations | |
| |
| |
Composite Structure Diagrams | |
| |
| |
Patterns in Architecture | |
| |
| |
The Proxy Pattern | |
| |
| |
Modeling Patterns in UML | |
| |
| |
Showing Patterns in Diagrams | |
| |
| |
Patterns and Use Cases | |
| |
| |
Physical Architecture | |
| |
| |
Hardware | |
| |
| |
Software | |
| |
| |
Component Diagram | |
| |
| |
Deployment Diagram | |
| |
| |
Nodes | |
| |
| |
Communication Paths | |
| |
| |
Deployed Artifacts | |
| |
| |
Allocating Artifacts to Nodes | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Extending UML | |
| |
| |
Standard Extensions Overview | |
| |
| |
Tagged Values and Properties | |
| |
| |
Standard Tag Value Examples | |
| |
| |
Tag Value from a Profile | |
| |
| |
Defining Your Own Tagged Values | |
| |
| |
Stereotypes | |
| |
| |
Creating a Stereotype | |
| |
| |
Examples of UML Stereotypes | |
| |
| |
Metainformation | |
| |
| |
Dependency Stereotypes | |
| |
| |
Customization with Components | |
| |
| |
Stereotypes Applied to Deployment Artifacts | |
| |
| |
Utility | |
| |
| |
Use Case Stereotypes | |
| |
| |
Signal | |
| |
| |
Control, Boundary, and Entity | |
| |
| |
Stereotypes for Creation and Destruction | |
| |
| |
Retired Standard Stereotypes | |
| |
| |
Defining Your Own Stereotypes | |
| |
| |
Constraints | |
| |
| |
Examples of UML Constraints | |
| |
| |
Constraints for Associations | |
| |
| |
Constraints for Association Roles and Properties | |
| |
| |
Defining Your Own Constraints | |
| |
| |
A Language for Expressing Constraints | |
| |
| |
OCL Metamodel | |
| |
| |
Basic Structure of OCL Expressions | |
| |
| |
Invariants, Preconditions, and Postconditions | |
| |
| |
Language Architecture and Kernel Overview | |
| |
| |
High-Level Language Constructs | |
| |
| |
Reviewing the UML Kernel | |
| |
| |
The Profile Package | |
| |
| |
Architecture Overview Summary and Observations | |
| |
| |
Relevant Changes in UML 2 | |
| |
| |
Summary | |
| |
| |
| |
Model Driven Architecture | |
| |
| |
MDA Evolution and Goals | |
| |
| |
Background and General Goals | |
| |
| |
Model Levels | |
| |
| |
Model Compilers | |
| |
| |
Mapping the Many Elements of MDA | |
| |
| |
From the Business Model to PIM and PSM | |
| |
| |
The High-Level Review | |
| |
| |
Defining Functionality with No Platform | |
| |
| |
Platform-Specific Models | |
| |
| |
Information Management Solution | |
| |
| |
Tips for Modeling in the MDA World | |
| |
| |
Modeling for Business and Functional Analysis | |
| |
| |
Modeling for the Software Architect | |
| |
| |
Modeling for the Developer | |
| |
| |
High-Level Assessment of MDA Opportunities | |
| |
| |
Opportunities | |
| |
| |
A Necessary Evolutionary Step for Increased Coordination | |
| |
| |
Cost-Aware MDA | |
| |
| |
Warnings | |
| |
| |
Too Much Modeling Overhead and Complexity | |
| |
| |
Lack of Universality in Tool Implementation | |
| |
| |
Untested Behavioral Modeling | |
| |
| |
Misuse of MDA | |
| |
| |
Summary | |
| |
| |
| |
A Process for Using UML | |
| |
| |
Defining and Understanding Software-Engineering Processes | |
| |
| |
Process Context | |
| |
| |
Process User | |
| |
| |
Process Steps | |
| |
| |
Problem Formulation | |
| |
| |
Solution Design | |
| |
| |
Implementation Design | |
| |
| |
Process Evaluation | |
| |
| |
The Basis for a UML Process | |
| |
| |
Use-Case-Driven Systems | |
| |
| |
Architecture-Centric Approach | |
| |
| |
Iterative Approach | |
| |
| |
Incremental Approach | |
| |
| |
A Traditional Object-Oriented Method | |
| |
| |
Requirements | |
| |
| |
Analysis | |
| |
| |
Design | |
| |
| |
Implementation | |
| |
| |
Test | |
| |
| |
The Unified Process | |
| |
| |
The Life Cycle | |
| |
| |
Inception | |
| |
| |
Elaboration | |
| |
| |
Construction | |
| |
| |
Transition | |
| |
| |
Comparing the Unified Process to a Traditional Process | |
| |
| |
Process Tools | |
| |
| |
Model Quality | |
| |
| |
What Is a Good Model? | |
| |
| |
Can You Communicate the Model? | |
| |
| |
Does the Model Fit Its Purpose? | |
| |
| |
Does the Model Capture the Essentials? | |
| |
| |
Naming Conventions | |
| |
| |
Model Coordination | |
| |
| |
Model Complexity | |
| |
| |
Summary | |
| |
| |
| |
Case Study | |
| |
| |
Requirements | |
| |
| |
Developing a Vision | |
| |
| |
Modeling Use Cases | |
| |
| |
Establishing the Domain Model | |
| |
| |
Analysis | |
| |
| |
Performing Use-Case Analysis | |
| |
| |
Not UML? How Can That Be? | |
| |
| |
Design | |
| |
| |
Designing the Architecture | |
| |
| |
System Structure | |
| |
| |
Architectural Mechanisms | |
| |
| |
Design Patterns | |
| |
| |
Design Policies | |
| |
| |
Performing Detailed Design | |
| |
| |
Business Package | |
| |
| |
Presentation Package | |
| |
| |
Use-Case Design | |
| |
| |
Designing the User Interface | |
| |
| |
Implementation | |
| |
| |
Test and Deployment | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Requirements and Analysis Exercises | |
| |
| |
Design and Construction Exercises | |
| |
| |
| |
Visual Glossary | |
| |
| |
| |
Glossary | |
| |
| |
| |
References | |
| |
| |
| |
What's on the CD-ROM? | |
| |
| |
Index | |
| |
| |
End-User License Agreement | |
| |
| |
GNU General Public License | |