图书目录

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

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