This book provides an indispensable guide to the complex process of object-oriented analysis and design using the Unified Modeling Language (UML). It describes how the process of OO analysis and design fits into the software development life cycle, as defined by the Unified Process (UP). UML and the Unified Process contains a wealth of practical and useful techniques that can be applied immediately. You will learn OO analysis and design techniques, UML syntax and relevant aspects of the UP as you progress through the text. It also provides an accessible, accurate and succinct summary of both UML and UP from the point of view of the OO analyst and designer. This book provides:l Chapter roadmaps, detailed diagrams and margin notes allowing a rapid overview, enabling you to focus on your needsl Outline summaries for each chapter, making it ideal for revision, and a comprehensive index so that the book can be used as a reference. The accompanying website provides:l A complete worked example of a simple e-commerce systeml Useful links to Open Source and proprietary software.www.umlandtheunifiedprocess.com About the authors:Jim Arlow has been programming and designing object-oriented systems since 1990 and during this time he has created object models for companies such as Mannesmann and British Airways. He is a respected OO consultant in Europe and has written and delivered many training courses which are given regularly in London, Frankfurt and Zurich. Jim is a regular speaker at conferences such as Object World and has been an invited speaker at City University and the British Computer Society. Ila Neustadt has worked in British Airways' IT department for 18 years and during this time has had experience of all parts of the IT development life cycle. She developed BA's data quality methodology and analyzed and formalized the company's approach to developing business and system architectures.Find more information about the Object Technology Series atwww.aw.com/cseng/otseries
Part 1 Introducing UML and UP 1
1 What is UML? 3
1.1 Chapter roadmap 3
1.2 What is UML? 5
1.3 The birth of UML 5
1.4 Why "unified"? 7
1.5 Objects and UML 7
1.6 UML structure 8
1.7 UML building blocks 8
1.8 UML common mechanisms 12
1.9 Architecture 18
1.10 What we have learned 20
2 What is the Unified Process? 22
2.1 Chapter roadmap 22
2.2 What is UP? 23
2.3 The birth of UP 24
2.4 UP and the Rational Unified Process 27
2.5 Instantiating UP for your project 28
2.6 UP axioms 29
2.7 UP is an iterative and incremental process 29
2.8 UP structure 31
2.9 UP phases 33
2.10 What we have learned 38
Part 2 Requirements 41
3 The requirements workflow 43
3.1 Chapter roadmap 43
3.2 The requirements workflow 45
3.3 Software requirements ß metamodel 46
3.4 Requirements workflow detail 47
3.5 The importance of requirements 49
3.6 Defining requirements 49
3.7 What we have learned 53
4 Use case modeling 55
4.1 Chapter roadmap 55
4.2 Use case modeling 57
4.3 UP activity: find actors and use cases 57
4.4 UP activity: detail a use case 63
4.5 Complex use cases 71
4.6 When to apply use case modeling 74
4.7 What we have learned 75
5 Advanced use case modeling 78
5.1 Chapter roadmap 78
5.2 Actor generalization 79
5.3 Use case generalization 81
5.4 ´includeª 84
5.5 ´extendª 86
5.6 When to use advanced features 90
5.7 What we have learned 91
Part 3 Analysis 95
6 The analysis workflow 97
6.1 Chapter roadmap 97
6.2 The analysis workflow 98
6.3 Analysis model ß rules of thumb 100
6.4 What we have learned 102
7 Classes and objects 103
7.1 Chapter roadmap 103
7.2 What are objects? 104
7.3 UML object notation 108
7.4 What are classes? 110
7.5 UML class notation 114
7.6 Scope 120
7.7 Object construction and destruction 122
7.8 What we have learned 124
8 Finding analysis classes 127
8.1 Chapter roadmap 127
8.2 UP activity: analyze a use case 129
8.3 What are analysis classes? 129
8.4 Finding classes 134
8.5 Creating a first cut analysis model 138
8.6 What we have learned 139
9 Relationships 142
9.1 Chapter roadmap 142
9.2 What is a relationship? 144
9.3 What is a link? 144
9.4 What is an association? 147
9.5 What is a dependency? 160
9.6 What we have learned 166
10 Inheritance and polymorphism 170
10.1 Chapter roadmap 170
10.2 Generalization 171
10.3 Class inheritance 173
10.4 Polymorphism 176
10.5 What we have learned 180
11 Analysis packages 182
11.1 Chapter roadmap 182
11.2 What is a package? 182
11.3 Package dependencies 185
11.4 Transitivity 186
11.5 Nested packages 187
11.6 Package generalization 189
11.7 Package stereotypes 190
11.8 Architectural analysis 191
11.
This book provides an accurate, concise and practical guide to the processes and techniques of object oriented analysis and design using the Unified Modelling Language (UML) and the Unified Process (UP). The reader will learn to apply the relevant activities defined by the Unified Process, and learn how to use the UML to create effective and valuable OO models. As such, one could reasonably view this book as a presentation of the UDSP from the point of view of the OO analyst/designer.
UML and UP are still, by themselves, not enough. There are OO modelling techniques and processes that the modeller needs to have at his or her fingertips that are not described in the UP, and we'll try to present these where appropriate and show how they fit into the UP framework in a structured manner.
We attempt to be as accurate and rigorous in our use of UML as possible. This is important as many UML presentations are constrained by the limited features offered by specific CASE tools and so give a distorted and incomplete perspective on the rich and powerful UML syntax and semantics. We believe that creating a good OO model is a matter of both creativity and craftsmanship. A key aspect of craftsmanship is precision and this summarises our approach to UML modelling.
This book is biased towards the beginning of the software development lifecycle -- towards OO requirements engineering and analysis. This is because these are exactly the areas where the OO analyst/designer can add most value. As we will see, most projects that fail do so due to a failure in requirements or analysis, and so that it is the beginning of the software development lifecycle that is of paramount importance for success. OO requirements engineering and analysis tends to be of strategic importance, whilst OO design is in some sense more tactical in nature. As well, OO design is always predicated on a technical infrastructure and, as such, is hard to teach without the reader having some knowledge of the particular technical infrastructure chosen.
Although OO design may be harder to teach than OO analysis, it is often easier to do! This is because many OO analyst/designers come from a programming background, and are used to working at the lower level of abstraction required by design. Abstraction is the primary skill of the accomplished OO analyst/designer, and by focussing on requirements and analysis in this book, we aim to try to inculcate or enhance this skill in the reader.
Finally, we'd like to point out that there are no easy shortcuts to OO analysis/design nirvana. A book like this can certainly help. But one really only becomes good at OO analysis and design through direct experience and practical application. Some of us seem to naturally have an innate ability to work at high levels of abstraction, and therefore make good OO analysts. Others of us have the sort of attention to detail and craftsmanship to make excellent OO designers. However, for the rest of us, these are skills that can be learned. We hope that this book will help the reader in this learning process!