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