Mike O’Docherty9780470092408, 0470092408
Table of contents :
Object-oriented Analysis and Design : Understanding System Development With UML 2.0
……Page 1
Contents……Page 10
Introduction……Page 22
1.2 A BRIEF HISTORY OF PROGRAMMING……Page 25
1.4 ABOUT THIS BOOK……Page 26
1.4.1 Content Overview……Page 27
1.4.3 Navigation……Page 28
Setting the Scene……Page 30
Object Concepts……Page 31
2.1 INTRODUCTION……Page 33
2.2 WHAT IS AN OBJECT?……Page 34
2.3 IDENTICAL OR EQUAL?……Page 37
2.4 DEPICTING OBJECTS……Page 40
2.5 ENCAPSULATION……Page 41
2.6 ASSOCIATION AND AGGREGATION……Page 42
2.7 GRAPHS AND TREES……Page 44
2.8 LINKS AND NAVIGABILITY……Page 46
2.9 MESSAGES……Page 48
2.10 INVOKING AN OPERATION……Page 49
2.11 AN EXAMPLE COLLABORATION……Page 51
2.13 GARBAGE COLLECTION……Page 53
2.14 CLASSES……Page 55
2.15 WHAT DOES A CLASS DEFINE?……Page 58
2.16 SHARED DATA AND SHARED OPERATIONS……Page 60
2.17 TYPES……Page 61
2.18 TERMINOLOGY……Page 62
2.19 REUSING CODE……Page 64
REVIEW QUESTIONS……Page 69
ANSWERS TO REVIEW QUESTIONS……Page 71
Inheritance……Page 73
3.1 INTRODUCTION……Page 75
3.2 DESIGNING A CLASS HIERARCHY……Page 76
3.3 ADDING IMPLEMENTATIONS TO A CLASS HIERARCHY……Page 79
3.4 ABSTRACT CLASSES……Page 80
3.5 REDEFINING METHODS……Page 84
3.6 IMPLEMENTING A STACK CLASS……Page 85
3.6.1 Implementing a Stack using Inheritance……Page 86
3.6.2 Implementing a Stack using Composition……Page 87
3.6.3 Inheritance versus Composition……Page 89
3.7 MULTIPLE INHERITANCE……Page 90
3.9 SUMMARY……Page 94
REVIEW QUESTIONS……Page 95
ANSWERS TO REVIEW QUESTIONS……Page 96
Type Systems……Page 99
4.2 DYNAMIC AND STATIC TYPE SYSTEMS……Page 101
4.3.1 Polymorphic Variables……Page 103
4.3.2 Polymorphic Messages……Page 104
4.4 DYNAMIC BINDING……Page 106
4.5 POLYMORPHISM GUIDELINE……Page 108
4.6 TYPE CASTING……Page 109
4.7 EXPLICIT CASTS……Page 110
4.8 GENERICITY WITH TEMPLATES……Page 112
REVIEW QUESTIONS……Page 114
ANSWERS TO ACTIVITY 3……Page 116
ANSWERS TO REVIEW QUESTIONS……Page 117
Software Development Methodologies……Page 119
5.1 INTRODUCTION……Page 121
5.2.2 Analysis……Page 123
5.2.4 Specification……Page 124
5.2.8 Maintenance……Page 125
5.2.9 Key Questions……Page 126
5.3 SOFTWARE ENGINEERING AND THE WATERFALL METHODOLOGY……Page 127
5.4.1 Spiral Methodology……Page 131
5.4.2 Iterative Methodology……Page 132
5.4.3 Incremental Methodology……Page 133
5.4.4 Combining the Methodologies……Page 134
5.5 OBJECT-ORIENTED METHODOLOGIES……Page 135
5.5.1 UML, RUP and XP……Page 136
5.5.2 The Need for Development Tools……Page 137
5.6 RIPPLE OVERVIEW……Page 138
5.6.1 Use Case Diagram……Page 141
5.6.2 Class Diagram (Analysis Level)……Page 142
5.6.3 Communication Diagram……Page 143
5.6.4 Deployment Diagram……Page 144
5.6.5 Class Diagram (Design Level)……Page 145
5.6.6 Sequence Diagram……Page 146
FURTHER READING……Page 147
REVIEW QUESTIONS……Page 148
ANSWERS TO REVIEW QUESTIONS……Page 149
Understanding the Problem……Page 150
Gathering Requirements……Page 151
6.1 INTRODUCTION……Page 153
6.2 THE BIRTH OF A SYSTEM……Page 154
6.3 USE CASES……Page 156
6.4 BUSINESS PERSPECTIVE……Page 157
6.4.1 Identifying Business Actors……Page 158
6.4.2 Writing the Project Glossary……Page 159
6.4.3 Identifying Business Use Cases……Page 160
Diagram……Page 162
6.4.5 Illustrating Use Cases on an Activity Diagram……Page 164
6.5 DEVELOPER PERSPECTIVE……Page 166
6.5.1 Specializing Actors……Page 170
6.5.2 Use Case Relationships……Page 171
6.5.3 System Use Case Details……Page 176
6.5.4 Preconditions, Postconditions and Inheritance……Page 177
6.5.6 User Interface Sketches……Page 179
6.5.7 Prioritizing System Use Cases……Page 180
FURTHER READING……Page 183
REVIEW QUESTIONS……Page 184
ANSWERS TO REVIEW QUESTIONS……Page 186
Analyzing the Problem……Page 187
7.2 WHY DO ANALYSIS?……Page 189
7.3 OVERVIEW OF THE ANALYSIS PROCESS……Page 190
7.4.1 Finding Classes……Page 191
7.4.2 Identifying Class Relationships……Page 192
7.4.3 Drawing Class and Object Diagrams……Page 193
7.4.4 Drawing Relationships……Page 194
7.4.5 Attributes……Page 199
7.4.6 Association Classes……Page 203
7.4.7 Tangible versus Intangible Objects……Page 204
7.5 DYNAMIC ANALYSIS……Page 209
7.5.1 Drawing Use Case Realizations……Page 210
7.5.2 Boundaries, Controllers and Entities……Page 212
7.5.3 Communication Diagram Elements……Page 213
7.5.5 Responsibilities……Page 215
7.5.6 State Modeling……Page 216
REVIEW QUESTIONS……Page 218
ANSWERS TO REVIEW QUESTIONS……Page 222
Designing the Solution……Page 224
Designing the System Architecture……Page 225
8.1 INTRODUCTION……Page 227
8.3 STEPS IN SYSTEM DESIGN……Page 228
8.4.1 The History of Network Architectures……Page 229
8.4.2 Three-Tier Architecture……Page 231
8.4.3 Personal Computers……Page 233
8.4.4 Network Computers……Page 234
8.4.5 The Internet and the World Wide Web……Page 235
8.4.7 Extranets and Virtual Private Networks……Page 236
8.4.8 Client–Server versus Distributed Architectures……Page 237
8.4.9 Depicting Network Topology in UML……Page 239
8.5 DESIGNING FOR CONCURRENCY……Page 241
8.6 DESIGNING FOR SECURITY……Page 243
8.6.1 Digital Encryption and Decryption……Page 244
8.7 PARTITIONING SOFTWARE……Page 246
8.7.1 Systems and Subsystems……Page 247
8.7.2 Layers……Page 248
8.7.3 Java Layers: Applet plus RMI……Page 251
8.7.4 Message Flow in Layers……Page 254
8.8 SUMMARY……Page 258
REVIEW QUESTIONS……Page 259
ANSWERS TO REVIEW QUESTIONS……Page 260
Choosing Technologies……Page 261
9.2 CLIENT TIER TECHNOLOGIES……Page 263
9.3 CLIENT TIER TO MIDDLE TIER PROTOCOLS……Page 265
9.4 MIDDLE TIER TECHNOLOGIES……Page 267
9.5 MIDDLE TIER TO DATA TIER TECHNOLOGIES……Page 268
9.6 OTHER TECHNOLOGIES……Page 269
9.7.1 HTML/CGI-with-Scripts……Page 271
9.7.2 HTML/CGI-with-Servlets……Page 273
9.7.3 RMI……Page 275
9.7.4 CORBA……Page 276
9.7.5 EJB……Page 277
9.9 JAVA E-COMMERCE CONFIGURATION……Page 279
9.10 UML PACKAGES……Page 283
REVIEW QUESTIONS……Page 288
ANSWERS TO REVIEW QUESTIONS……Page 289
Designing the Subsystems……Page 291
10.1 INTRODUCTION……Page 293
10.2.1 Mapping Operations……Page 294
10.2.3 Visibility of Fields……Page 295
10.2.4 Accessors……Page 296
10.2.5 Mapping Classes, Attributes and Compositions……Page 297
10.2.6 Mapping Other Types of Association……Page 298
10.2.7 Universal Identifier……Page 303
10.3 HANDLING PERSISTENCE WITH A RELATIONAL DATABASE……Page 305
10.3.1 Database Management Systems……Page 306
10.3.2 The Relational Model……Page 307
10.3.3 Mapping Entity Classes……Page 309
10.3.4 Mapping Associations……Page 310
10.3.5 Mapping Object State……Page 313
10.4 FINALIZING THE USER INTERFACES……Page 319
10.5 DESIGNING THE BUSINESS SERVICES……Page 325
10.5.1 Using Proxies and Copies……Page 326
10.5.2 Classifying Business Services……Page 328
10.5.3 Session Identifiers……Page 330
10.5.4 Business Service Realization……Page 331
10.7 TRANSACTIONS……Page 333
10.7.1 Pessimistic and Optimistic Concurrency……Page 334
with Objects……Page 335
10.8.1 Controlling Multiple Tasks……Page 336
10.8.2 Controlling Multiple Threads……Page 337
10.8.3 Thread Safety……Page 339
FURTHER READING……Page 342
REVIEW QUESTIONS……Page 343
ANSWERS TO REVIEW QUESTIONS……Page 344
Reusable Design Patterns……Page 347
11.1.1 A Brief History of Patterns……Page 349
11.1.2 Software Patterns Today……Page 350
11.2 A PATTERN TEMPLATE……Page 351
11.3.1 Observer……Page 352
11.3.2 Singleton……Page 358
11.3.3 Multiton……Page 362
11.3.4 Iterator……Page 363
11.3.5 Factory Method and Abstract Factory……Page 367
11.3.6 State……Page 368
11.3.7 Facade……Page 373
11.3.8 Adapter……Page 375
11.3.9 Strategy and Template Method……Page 377
11.3.10 Flyweight……Page 379
11.3.11 Composite……Page 382
11.3.12 Proxy……Page 385
11.5 DISCOVERING, COMBINING AND ADAPTING PATTERNS……Page 388
11.6 SUMMARY……Page 391
FURTHER READING……Page 392
Specifying the Interfaces of Classes……Page 393
12.1 INTRODUCTION……Page 395
12.2 WHAT IS A SPECIFICATION?……Page 396
12.3 FORMAL SPECIFICATION……Page 397
12.4 INFORMAL SPECIFICATION……Page 399
12.5 DYNAMIC CHECKING……Page 401
12.6 OBJECT-ORIENTED SPECIFICATION……Page 403
12.6.1 Formal Specification in OCL……Page 404
12.6.2 Informal Specification in Eiffel……Page 405
12.7 DESIGN BY CONTRACT……Page 406
12.7.1 Contracts and Inheritance……Page 410
12.7.2 Reducing Error-Checking Code……Page 412
12.7.3 Enforcing the Contract……Page 415
12.7.4 Application Firewalls……Page 416
12.8.2 Checking Conditions Dynamically……Page 417
RuntimeExceptions……Page 418
12.8.4 External Systems……Page 419
12.8.5 Enabling and Disabling Dynamic Checks……Page 421
12.9 SUMMARY……Page 423
REVIEW QUESTIONS……Page 424
ANSWERS TO REVIEW QUESTIONS……Page 425
Continuous Testing……Page 427
13.2 TESTING TERMINOLOGY……Page 429
13.2.1 Black-Box Testing……Page 430
13.2.2 White-Box Testing……Page 431
13.3 TYPES OF TEST……Page 432
13.3.2 Integration Testing……Page 433
13.3.4 Beta Testing……Page 434
13.3.6 Component Testing……Page 435
13.3.7 Build Testing……Page 436
13.3.8 Load Testing……Page 438
13.3.10 Acceptance Testing……Page 439
13.3.13 Testing for Security……Page 440
13.3.14 Metrics……Page 441
13.4 AUTOMATING TESTS……Page 442
13.5 PREPARING FOR TESTING……Page 443
13.6.1 Testing During Development……Page 445
13.6.2 Testing During the Testing Phase……Page 446
13.7 WHAT TO TEST FOR……Page 447
13.8 TEST-DRIVEN DEVELOPMENT……Page 451
DEVELOPMENT USING JUNIT……Page 452
13.9.1 Testing the Car Class……Page 454
13.9.2 Implementing the Car Class……Page 455
13.9.3 Refactoring Tests……Page 456
13.9.4 Creating a Test Suite for Regression Testing……Page 460
13.9.5 Testing Across Methods……Page 462
13.9.6 Completing the Store Class……Page 463
FURTHER READING……Page 466
Ripple Summary……Page 467
B.1.2 Actor List……Page 471
B.1.3 Use Case List……Page 472
B.1.6 Use Case Details……Page 473
B.2.1 User Interface Sketches……Page 477
B.2.4 Use Case Diagram……Page 481
B.2.5 Use Case Survey……Page 482
B.2.6 Use Case Details……Page 483
B.2.8 Use Case Priorities……Page 486
B.3.1 Class Diagram……Page 487
B.3.3 Operation List……Page 488
B.3.4 State Machine for a Reservation……Page 490
B.3.5 Use Case Realization……Page 491
B.4.1 Technology Choices……Page 497
B.4.2 Layer Diagram……Page 498
B.4.5 Deployment Diagram……Page 500
B.4.7 Concurrency Policy……Page 503
B.5.2 ServletsLayer Class Diagram……Page 504
B.5.4 ServletsLayer Message List……Page 505
B.5.5 ServerLayer Class Diagram……Page 506
B.5.7 ServerLayer Message List……Page 507
B.5.8 BusinessLayer Class Diagram……Page 508
B.5.9 BusinessLayer Field List……Page 509
B.5.10 Protocol Objects Class Diagram……Page 513
B.5.13 Business Service Realization……Page 515
B.6.1 Server Class Specification……Page 529
B.6.2 Business Logic Class Specification……Page 530
B.7.2 The Impact of Spirals and Increments……Page 533
B.7.5 Test-Driven Development……Page 534
B.7.7 Testing Phase……Page 535
B.7.10 Test Documentation and Logging……Page 536
B.7.11 Testing Activities by Phase……Page 537
B.8 GLOSSARY……Page 538
Summary of UML Notation Used……Page 547
Bibliography……Page 559
Index……Page 562
Reviews
There are no reviews yet.