Contents at a Glance
Foreword v
Preface vii
Acknowledgments xvii
PAR TI Getting Started 1
Chapter 1 Introduction to Software Engineering 3
Chapter 2 Modeling with UML 29
Chapter 3 Project Organization and Communication 77
PARTH Dealing with Complexity 119
Chapter 4 Requirements Elicitation 121
Chapters Analysis 173
Chapter 6 System Design f Decomposing the System 223
Chapter 7 System Design f Addressing Design Goals 259
Chapter & Object Design f Reusing Pattern Solutions 307
Chapter 9 Object Design: Specifying interfaces 349
Chapter 10 Mapping Models to Code 393
Chapter 11 Testing 437
PAR Till Managing Change 491
Chapter 12 Rationale Management 493
Chapter 13 Configuration Management 537
Chapter 14 Project Management 575
Chapter 15 Software Life Cycle 621
Chapter 16 Methodologies f Putting it All Together 651
PARTIV Appendices 707
amble of Contents
Foreword v
Preface vii
Acknowledgments xvii
PAR TI Getting Started 1
Chapter 1 Introduction to Software Engineering 3
l.l introductions Software Engineering Failures 4
l.2 What is Software Engineering? 5
l.2.1 Modeling 6
1.2.2 Problem Solving 8
1.2.3 Knowledge Acquisition 8
l.2.4 Rationale 9
l.3 Software Engineering Concepts 10
l.3.1 Participants and Roles 11
l.3.2 Systems and Models 12
l.3.3 Work Products 13
l.3.4 Activities, Tasks, and Resources 13
l.3.5 Functional and Nonfunctional Requirements 14
l.3.6 Notations, Methods, and Methodologies 15
l.4 Software Engineering Development Activities 16
XXI
.. ~..
xxii Table of Contents
1 .4. I Requirements Elicitation 16
1
l.4.2 Analysis 16
J
l.4.3 System Design 19
J item Design 19
l.4.4 Object Design 19
J oil 19
l.4.5 Implementation 20
1.4.6 Testing 20
o -0
1.5 Managing Software Development ZI
l .5. I Communication 21
l.5.2 Rationale Management 22
l.5.3 Software Configuration Management 22
1.5.4 Protect Management 23
,cot Management 23
l.5.5 Software Life Cycle 23
J
l.5.6 Putting it All Together 23
1.6 ARENA Case Study 23
y 23
1.7 Fufther Reading 25
b -J
1.8 Exercises 25
ChaDterZ Modeling with UML 29
pterZ Modeling with UML 29
., T,. .n
2.1 Introduction 30
1 1 1
2.2 An Overview of UML 31
ry 1 1 T T
2.2.1 Use Case Diagrams 31
brains 31
... Class Dial,1
2.2.2 Class Diagrams 32
.lains 32
ry ry ry r. -.
2.2.3 Interaction Diagrams 32
brains 32
rye J Q''',. ac. ac ac
2.2.4 State Machine Diagrams 33
.lains 33
ry 1 F 6.. ac. ac ac
2.2.5 ActivitV Diagrams 33
J Diagrams 33
ry ry A', 1. rs, F
2.3 Modeling Concepts 35
b pts 35
rye 1 Q h' 1 1 1 x r:,<
2.3.1 SVstems, Models, and Views 35
J items, Models, and Views 35
ry ac ry ac
2.3.2 Data TVpes. Abstract Data TVves, and instances 37
apes, Abstract Data Types, and instances 37
ry ac ac FI ^,
2.3.3 Classes, Abstract Classes, and Objects 38
1 7 4 n
2.3.4 Event Classes, Events, and Messages 40
rye < n,.
2.3.5 Obiect-Oriented Modeling 41
J b fi
rye c v 1. c'., n-.
2.3.6 Falsification and PrototVping 43
:ping 43
1 4 6 ac 1 r:. T Ti 'T',
2.4 A Deeper View into UML 43
ry 4 1 T T
2.4.1 Use Case Diagrams 44
brains 44
ry 4 1 al ac. c ac
2.4.2 Class Diagrams 50
.lains 50
1 4 ac T. ac. <Q
2.4.3 Interaction Diagrams 59
brains 39
ry 4. Q' -,
2.4.4 State Machine Diagrams 62
.lains 62
1 4 F 6.. ac.
2.4.5 ActivitV Diagrams 65
j Diagrams 65
Table of Contents xxiii
ry 4
2.4.6 Diagram Organization 68
.lain Organization 68
ry 4 - ac. v. ~n
2.4.7 Diagram Extensions 70
clam Extensions 70
2.5 Further Readings 71
2.6 Exercises 72
Chapter 3 Project Organization and Communication 77
3.1 Introduction; A Rocket Example 78
3.2 An Overview of projects 79
J
3.3 Project Organization Concepts 83
J .anization Concepts 83
ac aam n.
3.3.1 Protect Organizations 83
J .anlzatlons 83
~ ry ry n, o
3.3.2 Roles 86
ac ac ac ~ 1, Ic T 1 n 1
3.3.3 Tasks and Work Products 88
ac ac 4 R,' 1 aam
3.3.4 Schedule 90
3.4 Protect Communication Conceits 92
sect Communication Concepts 92
ac 4 1 n,'
3.4.1 Planned Communication 92
ac 4 ry T T,, rs..
3.4.2 Unplanned Communication 99
ac 4 ry
3.4.3 Communication Mechanisms 102
3.5 Organizational Activities 109
ac F, T.. m, riri
3.5.1 Joining a Team 109
& a ream 109
ac F rye
3.5.2 Joining the Communication infrastructure 109
a the Communication infrastructure 109
ac F ry 4'. ~ R - -. 1, n
3.5.3 Attending Team Status Meetings 1 10
b learn status Meetings 1 10
ac <'
3.5.4 Organizing Client and Project Reviews 1 13
.antiing Client and Project Reviews 1 13
3.6 Further Readings 114
3.7 Exercises 115
PARTH Dealing with Complexity 119
Chapter4 Requirements Elicitation 121
4.1 Introductions Usabilitv ExamDles 122
J pies 122
4.2 An Overview of Reauirements Elicitation 123
1
4.3 Requirements Elicitation Concepts 125
4.3.1 Functional Requirements 125
quirements 125
4.3.2 Nonfunctional Reauirements 126
1
4.3.3 Completeness, Consistency, Clarity, and Correctness 128
4.3.4 Realism, Verifiability, and Traceability 129
4.3.5 Greenfield Engineering, Reengineering, and
.ineering, Reengineering, and
Interface Engineering 129
. -..
xxiv Table of Contents
4.4 Requirements Elicitation Activities 130
4.4.1 IdentifVing Actors 130
J lug Actors 130
4.4.2 IdentifVing Scenarios 132
: lug Scenarios 132
4.4.3 IdentifVing Use Cases 135
:lug Use Cases 135
4.4.4 Refining Use Cases 138
o
4.4.5 IdentifVing Relationships among Actors and
J lug Relationships among Actors and
Use Cases 140
4.4.6 IdentifVing initial Analysis Objects 143
:lug initial Analysis Objects 143
4.4.7 IdentifVing Nonfunctional Requirements 146
ding Nonfunctional Requirements 146
4.5 Managing Requirements Elicitation 148
4.5.1 Negotiating Specifications with Clients f
Joint Application Design 148
4.5.2 Maintaining Traceability 150
4.5.3 Documenting Requirements Elicitation 151
4.6 ARENA Case StudV 153
J .33
4.6.1 Initial Problem Statement 153
4.6.2 IdentifVing Actors and Scenarios 155
J lug Actors and Scenarios 155
4.6.3 IdentifVing Use Cases 159
J lug Use Cases 159
4.6.4 Refining Use Cases and identifying Relationships 161
4.6.5 IdentifvinZ Nonfunctional Reauirements 166
ying Nonfunctional Requirements 166
4.6.6 Lessons Learned 168
4.7 Further Readings 168
4.8 Exercises 169
Chanters Analysis 173
piers Analysis 173
5.1 Introduction f An Optical illusion 174
5.2 An Overview of Analysis 174
5.3 Analysis ConceDts 176
axis Concepts 176
5.3.1 AnalVsis Obiect Models and Dynamic Models 176
J .is Object Models and Dynamic Models 176
5.3.2 EntitV, Boundary, and Control Objects 177
J, Boundary, and Control Objects 177
5.3.3 Generalization and Specialization 178
5.4 Analysis Activitiesi From Use Cases to Obiects 179
J .is Activities f From Use Cases to Objects 179
5.4.1 IdentifVing Entity Objects 180
ding Entity Objects 180
5.4.2 IdentifVing Boundary Objects 182
J lug Boundary Objects 182
5.4.3 Identifying Control Obiects 184
J lug Control Objects 184
5.4.4 Mapping Use Cases to Objects with
R~QI'ence DiaZrornR 1 RS
sequence Diagrams 185
Table of Contents xxv
5.4.5 Modeling interactions among Objects with
b Interactions among Objects with
CRC Cards 189
5.4.6 Identifying Associations 190
ding Associations 190
5.4.7 IdentifvinZ Aggregates 192
J lug Aggregates 192
5.4.8 IdentifVing Attributes 193
ying Attributes 193
5.4.9 Modeling State-Dependent Behavior of
Individual Obiects 194
J
5.4.10 Modeling inheritance Relationships between Obiects 195
o ps between Objects 195
5.4.1 1 Reviewing the Analysis Model 196
5.4. 12 AnalVsis SummarV 197
J >is Summary 197
5.5 Managing Analysis 199
.lug Analysis 199
5.5.1 Documenting Analysis 199
5.5.2 Assigning Responsibilities 200
.mug Responsibilities 200
5.5.3 Communicating about Analysis 201
5.5.4 Iterating over the Analysis Model 203
b axis Model 203
5.5.5 Client Sign-Off 204
5.6 ARENA Case StudV 206
7 ~06
5.6.1 IdentifVing Entity Objects 206
ding Entity Objects 206
5.6.2 IdentifVing Boundary Objects ZI I
,lug Boundary Objects ZI I
5.6.3 IdentifVing Control Objects 212
J b,ects 212
5.6.4 Modeling interactions Among Objects 212
5.6.5 Reviewing and Consolidating the Analysis Model 213
o and Consolidating the Analysis Model 213
5.6.6 Lessons Learned 217
5.7 Fufther Readings 218
63 218
5.8 Exercises 219
Chanter 6 System Design:
pier 6 System Design:
Decomposing the System 223
6.1 Introduction f A Floor Plan Example 224
I
6.2 An Overview of SVstem Design 226
J >tern Design 226
6.3 System Design Concepts 228
J an Concepts 228
6.3.1 Subsystems and Classes 228
j items and Classes 228
6.3.2 Services and Subsystem interfaces 230
yatem interfaces 230
6.3.3 Coupling and Cohesion 230
l o and Cohesion 230
6.3.4 LaVers and Partitions 235
J ors and Partitions 235
6.3.5 Architectural StVles 238
ales 238
6.4 System Design Activitiest From Obiects to Subsystems 247
J .if Activities f From Objects to Subsystems 247
. -'..
xxvi Fable of Contents
6.4.1 Starting Point: Analysis Model for a
Route Planning System 247
6.4.2 Identifying Design Goals 249
6.4.3 Identifying Subsystems 253
6.5 Further Readings 255
6.6 Exercises 255
Chapter 7 System Design:
Addressing Design Goals 259
-' T'.
7.1 Introduction: A RedundancV Example 260
J example 260
- ry'
7.2 An Overview of SVstem Design Activities 261
J item Design Activities 261
- ac
7.3 Concepts: UML Deployment Diagrams 262
- 4 q, ac.
7.4 SVstem Design Activitiest Addressing Design Goals 264
J an Activities f Addressing Design Goals 264
-' 1 t x. q, n, n 1 x'
7.4.1 Mapping Subsystems to Processors and Components 264
pping Subsystems to Processors and Components 264
- 4 ry r,.
7.4.2 IdentifVing and Storing Persistent Data 266
:lug and Storing Persistent Data 266
- 4 ry n.,.'
7.4.3 Providing Access Control 269
& Access Control 269
~ 4' ri..'
7.4.4 Designing the Global Control Flow 275
.mug the Global Control Flow 275
-' ~ r,. n. q. rvryry
7.4.5 IdentifVing Services 277
;lug services 277
-'
7.4.6 IdentifVing Boundary Conditions 279
;lug Boundary Conditions 279
~' - ~..
7.4.7 Reviewing System Design 282
& system Design 282
- < - -.
7.5 Managing System Design 284
.lug System Design 284
- < 1 ac.
7.5.1 Documenting System Design 284
~ ~ ry
7.5.2 Assigning Responsibilities 286
&mug Responsibilities 286
~ ~ ry m..'
7.5.3 Communicating about System Design 287
~
7.5.4 Iterating over the System Design 288
b totem Design 288
7.6 ARENA Case StudV 290
J -co
7.6.1 IdentifVing Design Goals 290
,lug Design Goals 290
7.6.2 Identifying Subsystems 291
J lug Subsystems 291
P7 x ry A'. FI 1 n, 1 n
7.6.3 Mapping Subsystems to Processors and Components 292
pping subsystems to Processors and Components 292
7.6.4 Identifying and Storing Persistent Data 294
ding and Storing Persistent Data 294
7.6.5 Providing Access Control 295
a Access Control 295
7.6.6 Designing the Global Control Flow 296
.lling the Global Control Flow 296
.
7.6.7 IdentifVing Services 297
ding Services 297
7.6.8 Identifying Boundary Conditions 299
ding Boundary Conditions 299
7.6.9 Lessons Learned 302
~ ~ v' n,. ac airy
7.7 FurtherReadings 302
cO 302
~ o v. ac airy
7.8 Exercises 303
Table of Contents xxvii
Chanter & Obiect Design:
pier & Object Design:
Reusing Pattern Solutions 307
8.1 Introduction f BlooDers 308
pers 308
8.2 An Overview of Object Design 309
J .II 309
8.3 Reuse Conceptst Solution Objects, Inheritance, and
Design Patterns 313
an Patterns 313
8.3.1 Application Objects and Solution Objects 313
8.3.2 Specification inheritance and Implementation
pecification inheritance and Implementation
Inheritance 313
8.3.3 Delegation 316
8.3.4 The Liskov Substitution Principle 317
8.3.5 Delegation and inheritance in Design Patterns 317
.ation and inheritance in Design Patterns 317
8.4 Reuse Activities f Selecting Design Patterns and Components 320
8.4. I Encapsulating Data Stores with the Bridge Pattern 321
8.4.2 Encapsulating Legacy Components with the Adapter
Pattern 323
8.4.3 Encapsulating Context with the Strategy Pattern 325
8.4.4 Encapsulating Platforms with the Abstract Factory
Pattern 326
8.4.5 Encapsulating Control Flow with the Command
Pattern 329
8.4.6 Encapsulating Hierarchies with the Composite
Design Pattern 330
all Pattern 330
8.4.7 Heuristics for Selecting Design Patterns 332
8.4.8 Identifying and Adjusting Application Frameworks 332
; lug and Adjusting Application Frameworks 332
8.5 Managing Reuse 337
8.5.1 Documenting Reuse 338
8.5.2 Assigning Responsibilities 340
8.6 ARENA Case Study 341
J
8.6.1 Applying the Abstract Factory Design Pattern 341
pplying the Abstract Factory Design Pattern 341
8.6.2 Applying the Command Design Pattern 342
8.6.3 Applying the Observer Design Pattern 342
8.6.4 Lessons Learned 344
8.7 FurtherReadings 344
8.8 Exercises 345
... T..
xxvill Fable of Contents
Chapter 9 Object Design:
Rnocifl!ino nil
specifying interfaces 349
9.1 Introductions A Railroad Example 350
9.2 An Overview of interface Specification 351
Q 2 Tnt~rfnce SDpocification ConceDes 352
y.3 Interface Specification Concepts 352
I pts 352
9.3.1 Class Implementor, Class Extender, and Class User 353
O 1. TxlrireR qianotures. o'
9.3.2 TVpes. Signatures, and Visibility 354
apes, Signatures, and Visibility 354
9.3.3 Contracts f invariants, Preconditions, and
Postconditions 356
9.3.4 Object Constraint Language 357
9.3.5 OCL Collections f Sets, Bags, and Sequences 361
9.3.6 OCL Quantifiers: forAll and exists 365
9.4 Interface Specification Activities 365
9.4.1 Identifying Missing Attributes and Operations 366
9.4.2 Specifying Types, Signatures, and Visibility 368
9.4.3 Specifying Pre- and Postconditions 369
o d A qrieciflliriq Trilrql
9.4.4 Specifying invariants 371
9.4.5 Inheriting Contracts 374
9.5 Managing Object Design 375
9.5.1 Documenting Object Design 375
9.5.2 Assigning Responsibilities 381
9.5.3 Using Contracts During Requirements Analysis 382
9.6 ARENA Case Study 382
9.6.1 Identifying Missing Operations in TournamentStyle
, o', Q 7
aam I R I Iap
and Round 383
9.6.2 Specifying the TOumamentStyle and Round
Contracts 384
9.6.3 Specifying the KnockoutStyl e and KnockoutRound
Contracts 386
9.6.4 Lessons Learned 387
9.7 FurtherReadings 388
9.8 Exercises 389
Chapter 10 Mapping Models to Code 393
10.1 Introductions A Book Example 394
10.2 An Overview of Mapping 395
10.3 Mapping Concepts 396
pping Concepts 396
Table of Contents xxix
10.3.1 Model Transformation 397
10.3.2 Refactoring 398
6:98
10.3.3 Forward Engineering 400
10.3.4 Reverse Engineering 401
.ineenng 401
10.3.5 Transformation Principles 401
10.4 Mapping Activities 402
10.4.1 Optimizing the Object Design Model 402
10.4.2 Mapping Associations to Collections 406
10.4.3 Mapping Contracts to Exceptions 412
10.4.4 Mapping Object Models to a Persistent Storage
Q hema 416
schema 416
10.5 Managing Implementation 422
.lug Implementation 422
10.5.1 Documenting Transformations 422
o lransformations 422
10.5.2 Assigning Responsibilities 424
10.6 ARENA Case Study 424
y 424
10.6.1 ARENA Statistics 424
10.6.2 Mapping Associations to Collections 426
10.6.3 Mapping Contracts to Exceptions 428
'
10.6.4 Mapping the Object Model to a Database Schema 430
10.6.5 Lessons Learned 431
10.7 FurtherReadings 432
b3 432
10.8 Exercises 432
Chanterll Testins 437
pterll Testing 437
1 1.1 Introduction: Testing The Space Shuttle 438
b the Space Shuttle 438
11.2 An Overview of Testing 440
b +40
l l.3 Testing Concepts 444
1 l.3.1 Faults, Erroneous States, and Failures 445
l l.3.2 Test Cases 448
l l.3.3 Test Stubs and Drivers 450
l l.3.4 Corrections 451
11.4 Testing Activities 451
l l.4.1 Component inspection 452
11.4.2 Usabilitv Testing 453
J lesting 453
11.4.3 Unit Testing 455
-- h I
xxx rable of Contents
11.5.1 Planning Testing 476
l l.5.2 Documenting Testing 478
l l.5.3 Assigning Responsibilities 480
l l.5.4 Regression Testing 481
l l.5.5 Automating Testing 482
l l.5.6 Model-Based Testing 484
l l.6 Further Readings 487
l l.7 Exercises 488
PAR Till Managing Change 491
Chapter 12 Rationale Management 493
12.1 Introductions Slicing Ham 494
12.2 An Overview of Rationale 495
12.3 Rationale Concepts 497
12.3.1 Centralized Traffic Control 498
12.3.2 Defining the Problem f Issues 499
12.3.3 Exploring the Solution Space: Proposals 500
12.3.4 Evaluating the Solution Space f Criteria and
Arguments 502
.uments 502
12.3.5 Collapsing the Solution Space f Resolutions 504
12.3.6 Implementing Resolutions f Action items 504
12.3.7 Examples of Issue-Based Models and Systems 505
12.4 Rationale Activities f From Issues to Decisions 510
12.4.1 CTC System Design 510
12.4.2 Capturing Rationale in Meetings 511
12.4.3 Capturing Rationale Asynchronously 519
12.4.4 Capturing Rationale when Discussing Change 520
12.4.5 Reconstructing Rationale 524
12.5 Managing Rationale 526
12.5.1 Documenting Rationale 526
12.5.2 Assigning Responsibilities 528
12.5.3 Heuristics for Communicating about Rationale 529
12.5.4 Issue Modeling and Negotiation 530
12.5.5 Conflict Resolution Strategies 531
12.6 Further Readings 533
12.7 Exercises 533
Table of Contents xxxi
Chanter 13 ConfiZuration ManaZement 537
pier 13 Configuration Management 537
13.1 Introductions An Aircraft Example 538
I
13.2 An Overview of Configuration Management 540
o b
13.3 Configuration Management Concepts 541
.uration Management Concepts 541
13.3. I Configuration items and CM Aggregates 542
.uration items and CM Aggregates 542
13.3.2 Versions and Configurations 543
.uratlons 543
13.3.3 Change Requests 544
b 1
13.3.4 Promotions and Releases 544
13.3.5 Repositories and Workspaces 545
13.3.6 Version identification Schemes 545
13.3.7 Changes and Change Sets 548
b be bets 548
13.3.8 Configuration Management Tools 548
o b
13.4 Configuration Management Activities 550
o .~ment Activities 550
13.4. 1 Configuration item and CM Aggregate identification 552
13.4.2 Promotion Management 554
13.4.3 Release Management 555
o
13.4.4 Branch Management 557
b
13.4.5 Variant Management 562
b
13.4.6 Change Management 565
o .ument 565
13.5 Managing Configuration Management 566
.lug Configuration Management 566
13.5. I Documenting Configuration Management 567
b .uration Management 567
13.5.2 Assigning Configuration Management
.lling Configuration Management
Responsibilities 568
13.5.3 Planning Configuration Management Activities 568
b o b
1 3.5.4 Continuous inteZrationt Testing and Promotion
.lation f Testing and Promotion
Management 569
o
13.6 Further Readings 571
o u
13.7 Exercises 572
Chanter 14 Protect Manasement 575
pier 14 Project Management 575
14.1 Introductions The STS-51L Launch Decision 576
14.2 An Overview of Project Management 577
J O
14.3 Protect Management Concepts 584
sect Management Concepts 584
14.3.1 Tasks and Activities 584
14.3.2 Work Products, Work Packages, and Roles 585
14.3.3 Work Breakdown Structure 586
14.3.4 TaskModel 586
~..
.. r-h I
xxxii rable of Contents
14.3.5 Skill Matrix 588
14.3.6 The Software Project Management Plan 589
14.4 Classical Project Management Activities 592
14.4.1 Planning the Project 592
14.4.2 Organizing the Project 598
14.4.3 Controlling the Project 603
14.4.4 Terminating the Project 609
14.5 Agile Project Management Activities 61 1
14.5. 1 Planning the Project f Create Product and Sprint
Backlogs 611
14.5.2 Organizing the Project 612
14.5.3 Controlling the Project f Daily Serums and
Burn Down Charts 613
14.5.4 Terminating the Projects Sprint Reviews 614
14.6 FurtherReadings 616
14.7 Exercises 617
Chapter 15 Software Life Cycle 621
15.1 Introduction f Polynesian Navigation 622
i:llesian Navigation 622
15.2 IEEE 1074t Standard for Developing Life Cycle Processes 626
15.2. I Processes and Activities 626
15.2.2 Life Cycle Modeling 628
15.2.3 Project Management 628
15.2.4 Pre-Development 629
15.2.5 Development 630
15.2.6 Post-Development 631
15.2.7 Integral Processes (Cross-Development) 632
15.3 Characterizing the Maturity of Software Life Cycle Models 633
15.4 Life Cycle Models 636
15.4. I Sequential Activity-Centered Models 637
15.4.2 Iterative Activity-Centered Models 639
15.4.3 Entity-Centered Models 644
15.5 Further Readings 647
15.6 Exercises 648
Chapter 16 Methodologies:
Putting it All Together 651
16. I Introduction: The First Ascent of KZ 652
Table of Contents xxxiii
16.2 Project Environment 655
J
16.3 Methodology Issues 657
.y Issues 657
16.3.1 How Much Planning? 657
o.
16.3.2 How Much Reuse? 658
16.3.3 How Much Modeling? 659
b.
16.3.4 How Much Process? 661
16.3.5 How Much Control and Monitoring? 661
o. o61
16.3.6 When to Redefine Protect Goals? 662
J
16.4 A Spectrum of Methodologies 662
16.4. 1 Royce's Methodology 663
j ac 663
16.4.2 Extreme Programming 669
.ramming 669
16.4.3 Rugby Methodologies 673
bDy Methodologies 673
16.5 Case Studies 680
16.5.1 XP Projects ATRACT 681
J
16.5.2 Local King Client f FRIEND 684
o
16.5.3 Distributed Project f JAMES 691
J
16.5.4 Case Studies Summary 698
J
16.6 Further ReadinZs 703
o3 703
16.7 Exercises 703
PARTIV Appendices 707
ppendices 707
APPendix A Design Patterns 709
A. 1 Abstract FactorVt EncaDsulating Platforms 710
j: tncapsulating Platforms 710
A.2 Adapter f Wrapping Around Legacy Code 711
J
A.3 Bridge f Allowing for Alternate Implementations 712
o e ror Alternate Implementations 712
A.4 Command f Encapsulating Control Flow 713
A.5 Composite f Representing Recursive Hierarchies 714
A.6 Facaded Encapsulating Subsystems 715
A.7 Observer f Decoupling Entities from Views 716
A.8 ProxVt EncaDsulating Expensive Objects 717
J: Lncapsulating Expensive Objects 717
A.9 Strategy f Encapsulating Algorithms 718
ac psulating Algorithms 718
A. 10 Heuristics for Selecting Design Patterns 719
b Design Patterns 719
APPendix B Glossary 721
APPendix C Bibliography 753
Index 767