Preface
1 Introduction to UML
1.1 Models and modelling
1.2 Methodologies
1.3 The Unified Modeling Language
1.4 Design models and code
1.5 The software development process
1.6 Summary
1.7 Exercises
2 Modelling with Objects
2.1 The object model
2.2 Classes and objects
2.3 Object properties
2.4 Avoiding data replication
2.5 Links
2.6 Associations
2.7 Message passing
2.8 Polymorphism
2.9 Dynamic binding
2.10 The applicability of the object model
2. l 1 Summary
2.12 Exercises
3 Software Development Processes
3.1 The waterfall model
3.2 Alternatives to the waterfall model
3.3 The Unified Process
3.4 The role of models in development
3.5 The use of UML in the Unified Process
3.6 Summary
3.7 Exercises
4 Restaurant System: Business Modelling
4.1 Informal requirements
4.2 Use case modelling
4.3 Describing use cases
4.4 Structuring the use case model
4.5 Completing the use case model
4.6 Domain modelling
4.7 Glossaries
4.8 Summary
4.9 Exercises
5 Restaurant System: Analysis
5.1 The purpose of analysis
5.2 Object design
5.3 Software architecture
5.4 Use case realization
5.5 Recording new bookings
5.6 Cancelling bookings
5.7 Updating bookings
5.8 Completing the analysis model
5.9 Summary
5.10 Exercises
6 Restaurant System: Design
6.1 Receiving input from the user
6.2 Producing output
6.3 Persistent data storage
6.4 The design model
6.5 Detailed class design
6.6 Dynamic modelling of behaviour
6.7 A statechart for the booking system
6.8 A statechart for reservations
6.9 Summary
6.10 Exercises
7 Restaurant System: Implementation
7.1 Implementation diagrams
7.2 Implementation strategies
7.3 Application frameworks
7.4 The Java AWT framework
7.5 Implementation of classes
7.6 Implementation of associations
7.7 Implementation of operations
7.8 Summary
7.9 Exercises
8 Class and Object Diagrams
8.1 Data types
8.2 Classes
8.3 Describing objects with classes
8.4 Associations
8.5 Generalization arid specialization
8.6 Inheritance of attributes and operations
8.7 Aggregation
8.8 Composition
8.9 Association classes
8.10 N-ary associations
8.1 1 Qualified associations
8.12 Interfaces
8.13 Templates
8.14 Summary
8.15 Exercises
9 Interaction Diagrams
9.1 Collaborations
9.2 Classifier roles
9.3 Association roles
9.4 Interaction diagrams
9.5 Object creation
9.6 Object destruction
9.7 Role multiplicity and iterated messages
9.8 Multiobjects
9.9 Conditional messages
9.10 Messages to self
9.11 Summary
9.12 Exercises
10 Statecharts
10.1 State-dependent behaviour
10.2 States, events and transitions
10.3 Initial and final states
10.4 Guard conditions
10.5 Actions
10.6 Activities
10.7 Composite states
10.8 History states
10.9 Summary of the CD player
10.10 Dynamic modelling in practice
10.11 Time events
10.12 Activity states
10.13 Summary of the ticket machine
10.14 Summary
10.15 Exercises
11 Component Diagrams
11.1 Dependencies
11.2 Components and artefacts
11.3 Component diagrams
11.4 Some common physical relationships
11.5 Compilation dependencies
11.6 Components and interfaces
11.7 Summary
11.8 Exercises
12 Consiraints
12.1 Standard constraints
12.2 The Object Constraint Language
12.3 The context of a constraint
12,4 Navigation expressions
12.5 OCL data types and operations
12.6 Constraints
12.7 Stereotyped constraints
12.8 Constraints aped generalization
12.9 Summary
12.10 Exercises
13 Implementation Strategies
13.1 Implementing associations
13.2 Unidirectional implementations
B.4 Model Types
B.5 Collections
Appendix C A Template for use case descriptions
References and Bibliography
Index