Object-Oriented Analysis and Design
WAZLAWICK, R. S. (2014). Object-Oriented Analysis and Design for Information Systems: Modeling with UML, OCL, and IFML. New York: Morgan-Kaufman.
This book presents, in a deep and didactic way, elements of object oriented analysis and design for information systems.
The area of software development for information systems have been organized during last years around the Unified Modeling Language (UML) and the Unified Process (UP), adopted as international standards by the Object Management Group (OMG). Even agile developing methods nowadays use object oriented development as the leading paradigm.
In contrast to some other books in this area, which are organized around the presentation of the UML diagrams and their many possible uses, this book concentrates on the daily analyst’s and designer’s activities, and explains how the different diagrams can help them.
Although the object oriented culture has more than forty years of existence, there are still companies that find it hard to produce good quality software, especially due to the lack of maintainability and flexibility on the systems they produce. This book presents information and techniques to minimize that deficiency.
The techniques described here were applied with success by the author in many software development companies, as well as in research projects in academy. The last project lead by the author in 2013 involved the production of an information system to integrate more than fifty thousand Brazilian public health centers, in more than five thousand cities with more than a million users.
This book is intended to computing professionals (analysts, designers and programmers), and Computer Science students, both in under graduation or graduation studies with at least some knowledge about object oriented development. Beginners and experienced people developing software with object oriented technology will find guidance presented in this book useful in order to improve design quality. This book was written to help them achieving the best design possible.
Summary
- 1 Introduction. 13
- 1.1 Object Oriented Systems Development. 14
- 1.2 Unified Modeling Language – UML. 15
- 1.3 Unified Process – UP. 15
- 1.4 Analysis and Design Activities in the Context of UP and the Contents of this Book. 17
- 1.5 The Process So Far. 20
- 1.6 Questions. 20
- 2 Business Modeling. 21
- 2.1 Initial Documentation for a Project. 23
- 2.2 Business Use Cases. 26
- 2.2.1 Business Actors and Business Workers. 27
- 2.2.2 Automation Opportunities. 28
- 2.3 Business Activity Diagram.. 31
- 2.3.1 Basic Elements. 31
- 2.3.2 Control Flow Structures. 33
- 2.3.3 Simplified Notation. 35
- 2.4 State Dependant Business Aspects. 37
- 2.5 Remarks. 42
- 2.6 The Process So Far. 43
- 2.7 Questions. 43
- 3 High Level Requirements. 44
- 3.1 System Actors. 45
- 3.2 System Use Cases. 45
- 3.2.1 Single Session. 47
- 3.2.2 Interactive. 49
- 3.2.3 Consistent Result. 49
- 3.2.4 System Frontier. 51
- 3.3 How to Find System Use Cases in the Business Model. 51
- 3.4 Requirements. 55
- 3.4.1 Requirements Elicitation. 55
- 3.4.2 Eliciting Requirements is not Design! 57
- 3.4.3 Requirements Challenges. 58
- 3.4.4 Evident and Hidden Functional Requirements. 59
- 3.4.5 Non Functional Requirements. 59
- 3.4.6 Permanence and Transience of Non Funcional Requirements. 60
- 3.4.7 Mandatory and Desired Requirements. 61
- 3.4.8 Supplementary Requirements. 62
- 3.5 Preliminary Conceptual Model. 66
- 3.6 The Process So Far. 70
- 3.7 Questions. 70
- 4 Use Case Based Project Planning. 71
- 4.1 Use case point analysis. 71
- 4.1.1 UAW – Unadjusted Actors Weight72
- 4.1.2 UUCW – Use Case Complexity. 72
- 4.1.3 UUCP – Unadjusted Use Case Points. 73
- 4.1.4 TCF – Technical Factors. 74
- 4.1.5 EF – Environmental Factors. 81
- 4.1.6 UCP – Adjusted Use Case Points. 84
- 4.1.7 Effort85
- 4.1.8 Linear Time and Average Team Size. 86
- 4.1.9 Counting Methods for Detailed Use Cases. 87
- 4.2 Project Planning with Iterative Cycles. 88
- 4.2.1 Time Estimation for Iterative Cycles. 88
- 4.2.2 Number of Iterative Cycles. 89
- 4.2.3 Effort per Use Case Point89
- 4.2.4 Team Capacity per Cycle. 90
- 4.2.5 Use Cases Priorities. 90
- 4.2.6 Deliveries Planning. 91
- 4.3 The Process So Far. 92
- 4.4 Questions. 93
- 5 Detailed Use Cases. 94
- 5.1 Main Flow.. 94
- 5.2 Alternate Flows. 96
- 5.2.1 Scenarios. 96
- 5.2.2 Variants. 97
- 5.2.3 Exception Handling. 98
- 5.3 Writing Recommendations. 101
- 5.3.1 Essential versus Real Use Case. 103
- 5.3.2 Explicit Information. 104
- 5.3.3 Identification and Selection. 104
- 5.3.4 Mandatory Steps. 104
- 5.3.5 Complementary Steps. 108
- 5.3.6 Unsuitable Steps. 109
- 5.4 Included Use Cases. 110
- 5.5 Expansion of Predefined Use Cases. 111
- 5.5.1 Report Expanded. 111
- 5.5.2 CRUD Expanded. 112
- 5.6 Other Sections of an Expanded Use Case. 116
- 5.6.1 Stakeholders. 116
- 5.6.2 Preconditions. 116
- 5.6.3 Success Post Conditions. 117
- 5.6.4 Open Issues. 117
- 5.7 System Sequence Diagrams. 117
- 5.7.1 Elements of a Sequence Diagram.. 118
- 5.7.2 Expanded Use Cases as System Sequence Diagrams. 120
- 5.7.3 Connecting the Interface to the Façade-Controller. 122
- 5.7.4 Statefull and Stateless Strategies. 126
- 5.7.5 Alternate Flows in System Sequence Diagrams. 128
- 5.8 The Process So Far. 131
- 5.9 Questions. 131
- 6 Conceptual Modeling – Fundamentals. 132
- 6.1 Attributes. 134
- 6.1.1 Attribute Types. 135
- 6.1.2 Initial Values. 135
- 6.1.3 Derived Attributes. 136
- 6.1.4 Enumerations. 137
- 6.1.5 Primitive Types. 138
- 6.2 Concepts. 139
- 6.2.1 Identifiers. 139
- 6.2.2 System Control Class. 140
- 6.3 Associations. 141
- 6.3.1 Role Multiplicity. 143
- 6.3.2 Association Direction. 144
- 6.3.3 Derived Association. 145
- 6.3.4 Aggregation and Composition. 147
- 6.3.5 N-ary Associations. 148
- 6.4 Collections. 150
- 6.4.1 Set151
- 6.4.2 Ordered Set. 151
- 6.4.3 Bag. 152
- 6.4.4 Sequence. 152
- 6.4.5 Map. 153
- 6.4.6 Partition. 154
- 6.4.7 Relation. 155
- 6.5 Organization of the Conceptual Model. 155
- 6.5.1 Generalization, Specialization and Inheritance. 156
- 6.5.2 Association Classes. 159
- 6.5.3 Modal Classes. 164
- 6.6 Invariants. 169
- 6.7 Iterative Construction of the Conceptual Model. 171
- 6.7.1 How to Find Concepts and Attributes. 172
- 6.7.2 Dependent and Independent Concepts. 175
- 6.7.3 How to Find Associations. 177
- 6.7.4 Example of Iterative Construction of the Conceptual Model. 178
- 6.8 Answer. 181
- 6.9 The Process So Far. 181
- 6.10 Questions. 182
- 7 Conceptual Modeling – Patterns. 183
- 7.1 High Cohesion. 183
- 7.2 Specification Classes. 186
- 7.3 Quantity. 187
- 7.4 Measure. 188
- 7.5 Strategy. 189
- 7.6 Composite. 191
- 7.7 Organizational Hierarchy. 191
- 7.8 Objects Joining. 192
- 7.8.1 Copy and Replace. 192
- 7.8.2 Superseding. 193
- 7.8.3 Essence/Appearance. 194
- 7.8.4 Undoing Joining. 194
- 7.9 Account/Transaction. 195
- 7.10 History Association. 201
- 7.11 Interval. 203
- 7.12 Discussion. 204
- 7.13 The Process So Far. 204
- 7.14 Questions. 205
- 8 Functional Modeling with OCL Contracts. 206
- 8.1 Preconditions. 207
- 8.1.1 Parameter Guarantee. 209
- 8.1.2 Complementary Constraints. 210
- 8.1.3 Preconditions Assurance. 210
- 8.1.4 Precondition versus Invariant. 211
- 8.2 Temporary Associations. 211
- 8.3 Query Return. 212
- 8.4 Post conditions. 213
- 8.4.1 Changing an Attribute Value. 215
- 8.4.2 Creating an Instance. 216
- 8.4.3 Adding a Link. 218
- 8.4.4 Destroying an Instance. 219
- 8.4.5 Removing a Link. 220
- 8.4.6 Well Formed Post conditions. 220
- 8.4.7 Combinations of Post conditions. 221
- 8.4.8 Former Values. 222
- 8.4.9 Post conditions over Collections of Objects. 223
- 8.4.10 Post conditions and Real World Events. 223
- 8.5 Exceptions. 224
- 8.6 Pattern Contracts for CRUD. 225
- 8.6.1 Create Contract. 226
- 8.6.2 Update Contract. 226
- 8.6.3 Delete Contract. 227
- 8.6.4 Retrieve Contract. 229
- 8.7 Pattern Contracts for Listing. 229
- 8.8 Pattern Contracts Related to Use Cases. 230
- 8.8.1 Contracts for the Stateless Strategy. 230
- 8.8.2 Contracts for the Statefull Strategy. 235
- 8.9 The Process So Far. 237
- 8.10 Questions. 238
- 9 Domain Tier Design. 239
- 9.1 Responsibility Distribution and Basic Operations. 240
- 9.2 Visibility. 243
- 9.2.1 Visibility by Association. 243
- 9.2.2 Visibility by Parameter. 251
- 9.2.3 Locally Declared Visibility. 254
- 9.2.4 Global Visibility. 256
- 9.3 Dynamic Modeling for Post Conditions. 256
- 9.3.1 Instance Creation. 257
- 9.3.2 Link Adding. 260
- 9.3.3 Attribute Value Modification. 261
- 9.3.4 Instance Destruction. 262
- 9.3.5 Link Removing. 263
- 9.3.6 Conditional Post Conditions and Exceptions. 264
- 9.3.7 Post Conditions over Collections. 266
- 9.4 System Queries. 268
- 9.5 Delegation and Low Coupling. 270
- 9.6 Design Class Diagram.. 277
- 9.7 The Process so Far. 280
- 9.8 Questions. 281
- 10 Code Generation. 282
- 10.1 Classes and Attributes. 282
- 10.2 Unidirectional Associations. 283
- 10.2.1 Unidirectional Association to One. 285
- 10.2.2 Unidirectional Association to Many. 286
- 10.2.3 Unidirectional Qualified Association. 287
- 10.2.4 Unidirectional Association with Association Class. 290
- 10.3 Bidirectional Associations. 291
- 10.3.1 Mutual Friends. 292
- 10.3.2 Unidirectional Implementation. 293
- 10.3.3 Implementation with an Intermediary Object295
- 10.4 Delegated Methods and System Operations. 295
- 10.5 Patterns for Filtered Queries. 299
- 10.6 The Process So Far. 302
- 10.7 Questions. 303
- 11 Test. 304
- 11.1 Functional Test. 305
- 11.2 Unit Test. 306
- 11.3 System Operations Test (Integration). 308
- 11.4 Use Case Test (System Test). 311
- 11.5 Acceptance Test. 313
- 11.6 Business Cycle Test. 313
- 11.7 Regression Test. 314
- 11.8 The Process So Far. 314
- 11.9 Questions. 315
- 12 Interface Tier Design. 316
- 12.1 WebML. 316
- 12.2 Units. 317
- 12.2.1 Data Units. 318
- 12.2.2 Multidata Units. 320
- 12.2.3 Index Units. 321
- 12.2.4 Scroller Units. 327
- 12.2.5 Entry Units. 327
- 12.3 Pages. 329
- 12.4 Links. 330
- 12.4.1 Link Types. 330
- 12.4.2 Link Parameters. 331
- 12.4.3 Multiple Link Parameters. 333
- 12.4.4 Transport Links. 334
- 12.4.5 Automatic Links. 335
- 12.5 Hypertext Organization. 335
- 12.5.1 Site Views. 335
- 12.5.2 Areas. 336
- 12.5.3 Page Kinds. 336
- 12.6 Web Interface Patterns. 337
- 12.6.1 Cascade Index. 337
- 12.6.2 Filtered Index. 338
- 12.6.3 Guided Tour. 339
- 12.6.4 Viewpoints. 339
- 12.7 Modeling Operations in the Interface. 340
- 12.7.1 Create Unit. 341
- 12.7.2 Delete Unit. 343
- 12.7.3 Modify Unit. 344
- 12.7.4 Connect and Disconnect Units. 345
- 12.8 WebML Models for CRUD. 346
- 12.9 The Process So Far. 350
- 12.10 Questions. 351
- 13 Data Persistency. 353
- 13.1 Object-Relational Equivalence. 353
- 13.1.1 Classes and Attributes. 353
- 13.1.2 Many-to-Many Associations. 354
- 13.1.3 One-to-many Associations. 355
- 13.1.4 One-to-one Associations. 356
- 13.1.5 Ordered Associations. 357
- 13.1.6 Associations Representing Bags. 359
- 13.1.7 Qualified Associations. 359
- 13.1.8 Association Classes. 361
- 13.1.9 N-ary Associations. 361
- 13.1.10 Temporary and Façade Controller Class Associations. 362
- 13.1.11 Inheritance. 363
- 13.2 Virtual Proxy. 365
- 13.3 Virtual Data Structures. 367
- 13.4 Materialization. 368
- 13.5 Caches. 369
- 13.6 Commit and Rollback. 370
- 13.7 Caches Control in a Multiuser Server. 370
- 13.8 The Process So Far. 371
- 13.9 Questions. 372
- 14 Appendix: Quick OCL Guide. 373
- 15 References. 377