500
vii CONTENTS Preface xv PART 1 Introduction to Software Engineering 1 Chapter 1 The Scope of Software Engineering 3 1.1 Historical Aspects 4 1.2 Economic Aspects 7 1.3 Maintenance Aspects 8 1.4 Specification and Design Aspects 13 1.5 Team Programming Aspects 15 1.6 The Object-Oriented Paradigm 17 1.7 Terminology 21 Chapter Review 23 For Further Reading 24 Problems 25 References 26 Chapter 2 The Software Process 30 2.1 Client, Developer, and User 32 2.2 Requirements Phase 33 2.2.1 Requirements Phase Testing 34 2.2.2 Requirements Phase Documentation 35 2.3 Specification Phase 35 2.3.1 Specification Phase Testing 37 2.3.2 Specification Phase Documentation 38 2.4 Design Phase 38 2.4.1 Design Phase Testing 39 2.4.2 Design Phase Documentation 40 2.5 Implementation Phase 40 2.5.1 Implementation Phase Testing 40 2.5.2 Implementation Phase Documentation 40 2.6 Integration Phase 41 2.6.1 Integration Phase Testing 41 2.6.2 Integration Phase Documentation 42 2.7 Maintenance Phase 42 2.7.1 Maintenance Phase Testing 43 2.7.2 Maintenance Phase Documentation 43 2.8 Retirement 43 2.9 Problems with Software Production: Essence and Accidents 44 2.9.1 Complexity 45 2.9.2 Conformity 47 2.9.3 Changeability 48 2.9.4 Invisibility 49 2.9.5 No Silver Bullet? 50 2.10 Improving the Software Process 51 2.11 Capability Maturity Models 51 2.12 Other Software Process Improvement Initiatives 54 2.13 Costs and Benefits of Software Process Improvement 55 Chapter Review 57 For Further Reading 58 Problems 59 References 60 Chapter 3 Software Life-Cycle Models 64 3.1 Build-and-Fix Model 64 3.2 Waterfall Model 65 3.2.1 Analysis of the Waterfall Model 68

Object Oriented and Classical Software Engineering.9780072865516.25242

Embed Size (px)

Citation preview

Page 1: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 1 Page number vii black

vii

CONTENTS

Preface xv

P A R T 1

Introduction to SoftwareEngineering 1

C h a p t e r 1

The Scope of SoftwareEngineering 3

1.1 Historical Aspects 41.2 Economic Aspects 71.3 Maintenance Aspects 81.4 Specification and Design Aspects 131.5 Team Programming Aspects 151.6 The Object-Oriented Paradigm 171.7 Terminology 21Chapter Review 23For Further Reading 24Problems 25References 26

C h a p t e r 2

The Software Process 30

2.1 Client, Developer, and User 322.2 Requirements Phase 33

2.2.1 Requirements Phase Testing 342.2.2 Requirements Phase

Documentation 352.3 Specification Phase 35

2.3.1 Specification Phase Testing 372.3.2 Specification Phase

Documentation 382.4 Design Phase 38

2.4.1 Design Phase Testing 392.4.2 Design Phase

Documentation 40

2.5 Implementation Phase 402.5.1 Implementation Phase

Testing 402.5.2 Implementation Phase

Documentation 402.6 Integration Phase 41

2.6.1 Integration Phase Testing 412.6.2 Integration Phase

Documentation 422.7 Maintenance Phase 42

2.7.1 Maintenance Phase Testing 432.7.2 Maintenance Phase

Documentation 432.8 Retirement 432.9 Problems with Software Production:

Essence and Accidents 442.9.1 Complexity 452.9.2 Conformity 472.9.3 Changeability 482.9.4 Invisibility 492.9.5 No Silver Bullet? 50

2.10 Improving the Software Process 512.11 Capability Maturity Models 512.12 Other Software Process

Improvement Initiatives 542.13 Costs and Benefits of Software

Process Improvement 55Chapter Review 57For Further Reading 58Problems 59References 60

C h a p t e r 3

Software Life-Cycle Models 64

3.1 Build-and-Fix Model 643.2 Waterfall Model 65

3.2.1 Analysis of theWaterfall Model 68

Page 2: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 2 Page number viii black

viii CONTENTS

3.3 Rapid Prototyping Model 703.3.1 Integrating the Waterfall and

Rapid Prototyping Models 713.4 Incremental Model 72

3.4.1 Analysis of theIncremental Model 73

3.5 Extreme Programming 753.6 Synchronize-and-Stabilize Model 773.7 Spiral Model 78

3.7.1 Analysis of the Spiral Model 823.8 Object-Oriented

Life-Cycle Models 823.9 Comparison of Life-Cycle Models 84Chapter Review 86For Further Reading 86Problems 87References 87

C h a p t e r 4

Teams 90

4.1 Team Organization 904.2 Democratic Team Approach 92

4.2.1 Analysis of the DemocraticTeam Approach 93

4.3 Classical Chief ProgrammerTeam Approach 934.3.1 The New York Times Project 954.3.2 Impracticality of the

Classical ChiefProgrammer Team Approach 96

4.4 Beyond Chief Programmerand Democratic Teams 97

4.5 Synchronize-and-Stabilize Teams 1014.6 Extreme Programming Teams 102Chapter Review 103For Further Reading 104Problems 104References 105

C h a p t e r 5

The Tools of the Trade 106

5.1 Stepwise Refinement 1065.1.1 Stepwise Refinement Example 107

5.2 Cost–Benefit Analysis 1135.3 Software Metrics 114

5.4 CASE 1155.5 Taxonomy of CASE 1165.6 Scope of CASE 1185.7 Software Versions 122

5.7.1 Revisions 1225.7.2 Variations 123

5.8 Configuration Control 1245.8.1 Configuration Control during

Product Maintenance 1265.8.2 Baselines 1275.8.3 Configuration Control during

Product Development 1275.9 Build Tools 1285.10 Productivity Gains with

CASE Technology 129Chapter Review 131For Further Reading 131Problems 132References 133

C h a p t e r 6

Testing 136

6.1 Quality Issues 1376.1.1 Software Quality Assurance 1376.1.2 Managerial Independence 138

6.2 Nonexecution-Based Testing 1396.2.1 Walkthroughs 1396.2.2 Managing Walkthroughs 1406.2.3 Inspections 1416.2.4 Comparison of Inspections

and Walkthroughs 1436.2.5 Strengths and Weaknesses

of Reviews 1446.2.6 Metrics for Inspections 144

6.3 Execution-Based Testing 1456.4 What Should Be Tested? 145

6.4.1 Utility 1466.4.2 Reliability 1476.4.3 Robustness 1476.4.4 Performance 1486.4.5 Correctness 149

6.5 Testing versus Correctness Proofs 1516.5.1 Example of a Correctness

Proof 1516.5.2 Correctness Proof

Case Study 154

Page 3: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 3 Page number ix black

CONTENTS ix

6.5.3 Correctness Proof andSoftware Engineering 155

6.6 Who Should PerformExecution-Based Testing? 158

6.7 When Testing Stops 160Chapter Review 160For Further Reading 161Problems 162References 164

C h a p t e r 7

From Modules to Objects 167

7.1 What Is a Module? 1677.2 Cohesion 171

7.2.1 Coincidental Cohesion 1717.2.2 Logical Cohesion 1727.2.3 Temporal Cohesion 1737.2.4 Procedural Cohesion 1747.2.5 Communicational Cohesion 1747.2.6 Functional Cohesion 1757.2.7 Informational Cohesion 1757.2.8 Cohesion Example 176

7.3 Coupling 1777.3.1 Content Coupling 1787.3.2 Common Coupling 1787.3.3 Control Coupling 1807.3.4 Stamp Coupling 1807.3.5 Data Coupling 1827.3.6 Coupling Example 1827.3.7 The Importance of Coupling 182

7.4 Data Encapsulation 1847.4.1 Data Encapsulation and

Product Development 1867.4.2 Data Encapsulation and

Product Maintenance 1887.5 Abstract Data Types 1947.6 Infromation Hiding 1957.7 Objects 1987.8 Inheritance, Polymorphism,

and Dynamic Binding 2017.9 Cohesion and Coupling of Objects 2037.10 The Object-Oriented Paradigm 204Chapter Review 207For Further Reading 207Problems 208References 209

C h a p t e r 8

Reusability, Portability,and Interoperability 212

8.1 Reuse Concepts 2128.2 Impediments to Reuse 2148.3 Reuse Case Studies 216

8.3.1 Raytheon MissileSystems Division 216

8.3.2 Toshiba Software Factory 2178.3.3 NASA Software 2188.3.4 GTE Data Services 2198.3.5 Hewlett-Packard 2208.3.6 European Space Agency 221

8.4 Objects and Reuse 2228.5 Reuse during the Design and

Implementation Phases 2228.5.1 Design Reuse 2228.5.2 Application Frameworks 2248.5.3 Design Patterns 2258.5.4 Software Architecture 229

8.6 Reuse and Maintenance 2308.7 Portability 231

8.7.1 Hardware Incompatibilities 2328.7.2 Operating Systems

Incompatibilities 2338.7.3 Numerical Software

Incompatibilities 2338.7.4 Compiler Incompatibilities 235

8.8 Why Portability? 2398.9 Techniques for

Achieving Portability 2408.9.1 Portable System Software 2408.9.2 Portable Application

Software 2418.9.3 Portable Data 242

8.10 Interoperability 2438.10.1 COM 2438.10.2 CORBA 2448.10.3 Comparing COM

and CORBA 2458.11 Future Trends in

Interoperability 245Chapter Review 246For Further Reading 247Problems 248References 250

Page 4: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 4 Page number x black

x CONTENTS

C h a p t e r 9

Planning and Estimating 257

9.1 Planning and the Software Process 2579.2 Estimating Duration and Cost 259

9.2.1 Metrics for the Sizeof a Product 260

9.2.2 Techniques of CostEstimation 264

9.2.3 Intermediate COCOMO 2679.2.4 COCOMO II 2709.2.5 Tracking Duration and

Cost Estimates 2729.3 Components of a Software Project

Management Plan 2729.4 Software Project

Management Plan Framework 2749.5 IEEE Software Project

Management Plan 2749.6 Planning Testing 2789.7 Planning Object-Oriented

Projects 2799.8 Training Requirements 2809.9 Documentation Standards 2819.10 CASE Tools for Planning

and Estimating 2829.11 Testing the Software Project

Management Plan 282Chapter Review 283For Further Reading 283Problems 284References 285

P A R T 2

The Phases of the SoftwareLife Cycle 289

C h a p t e r 10

Requirements Phase 290

10.1 Requirements Elicitation 29110.1.1 Interviews 29110.1.2 Scenarios 292

10.1.3 Other Requirements ElicitationTechniques 293

10.2 Requirements Analysis 29410.3 Rapid Prototyping 29410.4 Human Factors 29610.5 Rapid Prototyping as a

Specification Technique 29810.6 Reusing the Rapid Prototype 30010.7 Management Implications of the

Rapid Prototyping Model 30210.8 Experiences with Rapid

Prototyping 30410.9 Techniques for Requirements

Elicitation and Analysis 30510.10 Testing during the

Requirements Phase 30510.11 CASE Tools for the

Requirements Phase 30610.12 Metrics for the

Requirements Phase 30710.13 Object-Oriented Requirements? 30810.14 Air Gourmet Case Study:

Requirements Phase 30810.15 Air Gourmet Case Study:

Rapid Prototype 31110.16 Challenges of the

Requirements Phase 313Chapter Review 315For Further Reading 315Problems 316References 317

C h a p t e r 11

Specification Phase 319

11.1 The Specification Document 31911.2 Informal Specifications 321

11.2.1 Case Study:Text Processing 322

11.3 Structured Systems Analysis 32311.3.1 Sally’s Software Shop 323

11.4 Other Semiformal Techniques 33111.5 Entity-Relationship Modeling 33211.6 Finite State Machines 335

11.6.1 Elevator Problem: FiniteState Machines 336

Page 5: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 5 Page number xi black

CONTENTS xi

11.7 Petri Nets 34111.7.1 Elevator Problem:

Petri Nets 34311.8 Z 346

11.8.1 Elevator Problem: Z 34711.8.2 Analysis of Z 349

11.9 Other Formal Techniques 35111.10 Comparison of

Specification Techniques 35211.11 Testing during the

Specification Phase 35311.12 CASE Tools for the

Specification Phase 35411.13 Metrics for the

Specification Phase 35511.14 Air Gourmet Case Study:

Structured Systems Analysis 35511.15 Air Gourmet Case Study:

Software Project ManagementPlan 357

11.16 Challenges of theSpecification Phase 358

Chapter Review 358For Further Reading 359Problems 360References 362

C h a p t e r 12

Object-OrientedAnalysis Phase 366

12.1 Object-Oriented Analysis 36612.2 Elevator Problem:

Object-Oriented Analysis 36912.3 Use-Case Modeling 36912.4 Class Modeling 371

12.4.1 Noun Extraction 37212.4.2 CRC Cards 374

12.5 Dynamic Modeling 37512.6 Testing during the

Object-Oriented Analysis Phase 37812.7 CASE Tools for the

Object-Oriented Analysis Phase 38312.8 Air Gourmet Case Study:

Object-Oriented Analysis 383

12.9 Challenges of theObject-Oriented Analysis Phase 390

Chapter Review 391For Further Reading 391Problems 392References 393

C h a p t e r 13

Design Phase 395

13.1 Design and Abstraction 39513.2 Action-Oriented Design 39613.3 Data Flow Analysis 397

13.3.1 Data Flow AnalysisExample 398

13.3.2 Extensions 40213.4 Transaction Analysis 40313.5 Data-Oriented Design 40613.6 Object-Oriented Design 40613.7 Elevator Problem:

Object-Oriented Design 40713.8 Formal Techniques for

Detailed Design 41513.9 Real-Time Design Techniques 41613.10 Testing during the Design Phase 41813.11 CASE Tools for the

Design Phase 41813.12 Metrics for the Design Phase 41913.13 Air Gourmet Case Study:

Object-Oriented Design 42013.14 Challenges of the Design Phase 429Chapter Review 429For Further Reading 430Problems 431References 431

C h a p t e r 14

Implementation Phase 434

14.1 Choice of Programming Language 43414.2 Fourth-Generation Languages 43714.3 Good Programming Practice 44014.4 Coding Standards 44514.5 Module Reuse 446

Page 6: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 6 Page number xii black

xii CONTENTS

14.6 Module Test Case Selection 44714.6.1 Testing to Specifications

versus Testing to Code 44714.6.2 Feasibility of Testing

to Specifications 44714.6.3 Feasibility of Testing

to Code 44814.7 Black-Box Module-Testing

Techniques 45114.7.1 Equivalence Testing and

Boundary Value Analysis 45114.7.2 Functional Testing 452

14.8 Glass-Box Module-TestingTechniques 45414.8.1 Structural Testing: Statement,

Branch, and Path Coverage 45414.8.2 Complexity Metrics 456

14.9 Code Walkthroughs andInspections 458

14.10 Comparison ofModule-Testing Techniques 458

14.11 Cleanroom 45914.12 Potential Problems When

Testing Objects 46014.13 Management Aspects of

Module Testing 46314.14 When to Rewrite Rather than

Debug a Module 46314.15 CASE Tools for the

Implementation Phase 46514.16 Air Gourmet Case Study:

Black-Box Test Cases 46514.17 Challenges of the

Implementation Phase 467Chapter Review 467For Further Reading 468Problems 469References 470

C h a p t e r 15

Implementation andIntegration Phase 474

15.1 Introduction to Implementationand Integration 47415.1.1 Top-down Implementation

and Integration 475

15.1.2 Bottom-up Implementationand Integration 477

15.1.3 Sandwich Implementationand Integration 478

15.1.4 Implementation and Integrationof Object-Oriented Products 480

15.1.5 Management Issues during theImplementation andIntegration Phase 480

15.2 Testing during the Implementationand Integration Phase 481

15.3 Integration Testing of GraphicalUser Interfaces 481

15.4 Product Testing 48215.5 Acceptance Testing 48315.6 CASE Tools for the Implementation

and Integration Phase 48415.6 CASE Tools for the Complete

Software Process 48415.8 Integrated Environments 48515.9 Environments for

Business Applications 48615.10 Public Tool Infrastructures 48715.11 Potential Problems

with Environments 48715.12 Metrics for the Implementation

and Integration Phase 48815.13 Air Gourmet Case Study: Implementation

and Integration Phase 48815.14 Challenges of the Implementation

and Integration Phase 489Chapter Review 489For Further Reading 490Problems 490References 492

C h a p t e r 16

Maintenance Phase 493

16.1 Why Maintenance Is Necessary 49316.2 What Is Required

of Maintenance Programmers 49416.3 Maintenance Case Study 49716.4 Management of Maintenance 498

16.4.1 Fault Reports 49816.4.2 Authorizing Changes

to the Product 499

Page 7: Object Oriented and Classical Software Engineering.9780072865516.25242

April 16, 2001 15:58 sch95591_tc Sheet number 7 Page number xiii black

CONTENTS xiii

16.4.3 Ensuring Maintainability 50016.4.4 Problem of Repeated

Maintenance 50016.5 Maintenance of

Object-Oriented Software 50116.6 Maintenance Skills versus

Development Skills 50416.7 Reverse Engineering 50516.8 Testing during the

Maintenance Phase 50616.9 CASE Tools for the

Maintenance Phase 50716.10 Metrics for the

Maintenance Phase 50716.11 Air Gourmet Case Study:

Maintenance Phase 50816.12 Challenges of the

Maintenance Phase 508Chapter Review 509For Further Reading 509Problems 510References 511

A p p e n d i x A

Broadlands Area Children’sHospital 513

A p p e n d i x B

Software EngineeringResources 518

A p p e n d i x C

Air Gourmet Case Study:C Rapid Prototype 520

A p p e n d i x D

Air Gourmet Case Study:Java Rapid Prototype 521

A p p e n d i x E

Air Gourmet Case Study:Structured Systems Analysis 522

A p p e n d i x F

Air Gourmet Case Study:Software Project ManagementPlan 529

A p p e n d i x G

Air Gourmet Case Study:Object-Oriented Analysis 534

A p p e n d i x H

Air Gourmet Case Study:Design for C++ Implementation 535

A p p e n d i x I

Air Gourmet Case Study:Design for Java Implementation 560

A p p e n d i x J

Air Gourmet Case Study:Black-Box Test Cases 582

A p p e n d i x K

Air Gourmet Case Study:C++ Source Code 588

A p p e n d i x L

Air Gourmet Case Study:Java Source Code 589

Bibliography 590

Author Index 617

Subject Index 623

Page 8: Object Oriented and Classical Software Engineering.9780072865516.25242

April 4, 2001 09:47 sch95591_pr Sheet number 1 Page number xv black

xv

PREFACE

The fourth edition of this book was published in two versions, one with code examples presented in C++and the other in Java. However, software engineering essentially is language independent, and in any event,there are relatively few code examples in this book. Accordingly, in this edition, I made every effort to smoothover language-dependent details and ensure that the code examples are equally clear to C++ and Java users.For example, instead of using cout for C++ output and System.out.println for Java output, I utilized thepseudocode instruction print. (The one exception is the new case study, where complete implementationdetails are given in both C++ and Java.) Therefore, the fifth edition can be considered a unification of thetwo versions of the fourth edition.

Pedagogics is the theme of the fifth edition. All through this book, I added material to highlight keyaspects of each chapter. For example, there are How to Perform boxes that summarize important techniquessuch as object-oriented analysis and object-oriented design. In addition, new synopses and outlines assist boththe student and the instructor. Also, to provide additional material on how to perform the various techniquesof software engineering, the case study in this edition is presented in greater detail than in the fourth edition.

The fourth edition included a chapter entitled “Teams and the Tools of Their Trade.” As part of the stresson pedagogics in this new edition, the material has been updated and split into two, to focus more clearly oneach of the separate underlying topics. In this edition, Chapter 4 is devoted to teams, whereas the tools usedby software engineers are described in Chapter 5.

As before, I include both classical and object-oriented material, notwithstanding the virtually unanimousagreement that the object-oriented paradigm is superior to the classical (structured) paradigm. My decisionmight surprise some readers; surely an up-to-date software engineering textbook should describe only theobject-oriented paradigm and treat the classical paradigm, at best, as a historical footnote.

This is not the case. Despite the widespread enthusiasm for the object-oriented paradigm and the rapidlyaccumulating evidence of its superiority over the classical paradigm, it nevertheless is essential to includematerial on the classical paradigm. There are three reasons for this. First, it is impossible to appreciatewhy object-oriented technology is superior to classical technology without fully understanding the classicalapproach and how it differs from the object-oriented approach.

The second reason why both the classical and object-oriented paradigms are included is that technologytransfer is a slow process. The vast majority of software organizations have not yet adopted the object-orientedparadigm. It therefore is likely that many of the students who use this book will be employed by organizationsthat still use classical software engineering techniques. Furthermore, even if an organization is using theobject-oriented approach for developing new software, existing software still has to be maintained, and thislegacy software is not object oriented. Therefore, excluding classical material would not be fair to many ofthe students who use this text.

A third reason for including both paradigms is that a student who is employed at an organization con-sidering the transition to object-oriented technology will be able to advise that organization regarding boththe strengths and the weaknesses of the new paradigm. So, as in the previous edition, the classical andobject-oriented approaches are compared, contrasted, and analyzed.

The fourth edition was the first software engineering textbook to utilize the Unified Modeling Language(UML), which was introduced shortly before that edition was published. In the intervening three years, UMLhas been formally standardized and become so widely used that any textbook that does not use UML to

Page 9: Object Oriented and Classical Software Engineering.9780072865516.25242

April 4, 2001 09:47 sch95591_pr Sheet number 2 Page number xvi black

xvi PREFACE

describe object-oriented analysis and design immediately would be obsolete. There-fore, I continue to use UML for object-oriented analysis and object-oriented design,as well as wherever diagrams depict objects and their interrelationships.

Another then-new topic introduced into the fourth edition was design patterns.As with UML, design patterns now are part of mainstream software engineering. Thematerial on design patterns therefore has been retained and strengthened.

A new topic in this edition is extreme programming (XP). XP still is controversial,but I feel that students need an overview of the topic so they can decide for themselveswhether XP is merely a fad or a genuine major breakthrough in software engineering.

In the previous edition, I stressed the importance of documentation, maintenance,reuse, portability, testing, and CASE tools. In this edition, all these concepts arestressed equally firmly. It is no use teaching students the latest techniques unless theyappreciate the importance of the basics of software engineering.

As in the fourth edition, particular attention is paid to object-oriented life-cyclemodels, object-oriented analysis, object-oriented design, management implicationsof the object-oriented paradigm, and the testing and maintenance of object-orientedsoftware. Metrics for the object-oriented paradigm also are included. In addition, thereare many briefer references to objects, a paragraph or even only a sentence in length.The reason is that the object-oriented paradigm is not just concerned with how thevarious phases are performed but rather permeates the way we think about softwareengineering. Object technology pervades this book.

The software process still is the concept that underlies the book as a whole. Tocontrol the process, we have to be able to measure what is happening to the project.Accordingly, the emphasis on metrics is retained. With regard to process improvement,the material on the capability maturity model (CMM) and ISO/IEC 15504 (SPICE)has been updated, and material on ISO/IEC 12207 has been added.

As in the fourth edition, this book contains over 600 references. I selected currentresearch papers as well as classic articles and books whose message remains freshand relevant. There is no question that software engineering is a rapidly moving fieldand that students therefore need to know the latest results and where in the literatureto find them. At the same time, today’s cutting-edge research is based on yesterday’struths, and I see no reason to exclude an older reference if its ideas are as applicabletoday as they originally were.

With regard to prerequisites, it is assumed that the reader is familiar with onehigh-level programming language such as Pascal, C, C++, Ada, BASIC, COBOL,FORTRAN, or Java. In addition, the reader is expected to have taken a course in datastructures.

HOW THE FIFTH EDITION IS ORGANIZED

Like the fourth edition of this book, the fifth edition is written for both the traditionalone-semester and the newer two-semester software engineering curriculum. In thetraditional one-semester (or one-quarter) course, the instructor has to rush throughthe theoretical material to provide the students the knowledge and skills needed for

Page 10: Object Oriented and Classical Software Engineering.9780072865516.25242

April 4, 2001 09:47 sch95591_pr Sheet number 3 Page number xvii black

PREFACE xvii

the term project as soon as possible. The need for haste is so that the students cancommence the term project early enough to complete it by the end of the semester.To cater to a one-semester, project-based software engineering course, Part 2 of thisbook covers the life cycle, phase by phase, and Part 1 contains the theoretical materialneeded to understand Part 2. For example, Part 1 introduces the reader to CASE,metrics, and testing; each chapter of Part 2 contains a section on CASE tools forthat phase, a section on metrics for that phase, and a section on testing during thatphase. Part 1 is kept short to enable the instructor to start Part 2 relatively early inthe semester. Furthermore, the last two chapters of Part 1 (Chapters 8 and 9) may bepostponed and taught in parallel with Part 2. The class then can begin developing theterm project as soon as possible.

We turn now to the two-semester software engineering curriculum. More andmore computer science and computer engineering departments are realizing that theoverwhelming preponderance of their graduates find employment as software en-gineers. As a result, many colleges and universities introduced a two-semester (ortwo-quarter) software engineering sequence. The first course is largely theoretical(but almost always there is a small project of some sort). The second course consistsof a major team-based term project, usually a capstone project. When the term projectis in the second course, there is no need for the instructor to rush to start Part 2.

Therefore, an instructor teaching a one-semester (or one-quarter) sequence usingthe fifth edition covers most of Chapters 1 through 7, then starts Part 2 (Chapters 10through 16). Chapters 8 and 9 can then be taught in parallel with Part 2 or at the endof the course, while the students are implementing the term project. When teachingthe two-semester sequence, the chapters of the book are taught in order; the class nowis fully prepared for the team-based term project they will develop in the followingsemester.

To ensure that the key software engineering techniques of Part 2 truly are un-derstood, each is presented twice. First, whenever a technique is introduced, it isillustrated by means of the elevator problem. The elevator problem is the correct sizefor the reader to be able to see the technique applied to a complete problem, and ithas enough subtleties to highlight both the strengths and weaknesses of the techniquebeing taught. Then, the relevant portion of the new case study is presented toward theend of each chapter. This detailed solution provides the second illustration of eachtechnique.

THE PROBLEM SETS

As in the previous edition, there are four types of problems. First, the end of eachchapter contains a number of exercises intended to highlight key points. These exer-cises are self-contained; the technical information for all the exercises can be foundin this book.

Second, there is a software term project. It is designed to be solved by studentsworking in teams of three, the smallest number of team members that cannot conferover a standard telephone. The term project comprises 16 separate components, each

Page 11: Object Oriented and Classical Software Engineering.9780072865516.25242

April 4, 2001 09:47 sch95591_pr Sheet number 4 Page number xviii black

xviii PREFACE

tied to the relevant chapter. For example, design is the topic of Chapter 13, so in thatchapter the component of the term project is concerned with software design. Bybreaking a large project into smaller, well-defined pieces, the instructor can monitorthe progress of the class more closely. The structure of the term project is such thatan instructor may freely apply the 16 components to any other project that he or shechooses.

Because this book is written for use by graduate students as well as upper-classundergraduates, the third type of problem is based on research papers in the softwareengineering literature. In each chapter, an important paper has been chosen; whereverpossible, a paper related to object-oriented software engineering has been selected.The student is asked to read the paper and answer a question relating its contents.Of course, the instructor is free to assign any other research paper; the For FurtherReading section at the end of each chapter includes a wide variety of relevant papers.

The fourth type of problem relates to the case study. This type of problem was firstintroduced in the third edition in response to instructors who feel that their studentslearn more by modifying an existing product than by developing a product fromscratch. Many senior software engineers in the industry agree with that viewpoint.Accordingly, each chapter in which the case study is presented has at least threeproblems that require the student to modify the case study in some way. For example,in one chapter the student is asked to redesign the case study using a different designtechnique from the one used for the case study. In another chapter, the student is askedwhat the effect would have been of performing the steps of the object-oriented analysisin a different order. To make it easy to modify the source code of the case study, it isavailable on the World Wide Web at www.mhhe.com/engcs/compsci/schach. Theweb site also has transparency masters for all the figures in this book, as well as acomplete set of PowerPoint lecture notes.

The Instructor’s Solution Manual contains detailed solutions to all the exercises,as well as to the term project. The Instructor’s Solution Manual is available fromMcGraw-Hill.

ACKNOWLEDGMENTS

I am indebted to those who reviewed this edition, including:

Arvin Agah (University of Kansas)Thaddeus R. Crews, Jr. (Western Kentucky University)Eduardo B. Fernandez (Florida Atlantic University)Michael Godfrey (Cornell University)Scott Hawker (University of Alabama)Thomas B. Horton (Florida Atlantic University)Gail Kaiser (Columbia University)Laxmikant V. Kale (University of Illinois)Helene Kershner (University of Buffalo)Chung Lee (California State Polytechnic University at Pomona)

Page 12: Object Oriented and Classical Software Engineering.9780072865516.25242

April 4, 2001 09:47 sch95591_pr Sheet number 5 Page number xix black

PREFACE xix

Richard A. Lejk (University of North Carolina, Charlotte)Susan A. Mengel (Texas Technological University)David S. Rosenblum (University of California at Irvine)Shmuel Rotenstreich (George Washington University)Wendel Scarbrough (Azusa Pacific University)Gerald B. Sheble (Iowa State)Jie We (City University of New York)David Workman (University of Central Florida)

I thank two individuals who made contributions to earlier books. First, Jeff Grayonce again made numerous insightful suggestions. In particular, I am grateful for hismany ideas regarding Chapter 8. Also, he once again is a coauthor of the Instructor’sSolution Manual. Second, my son David has made a number of helpful contributionsto the book and again is a coauthor of the Instructor’s Solution Manual.

Since 1999, I have been involved in joint research with Dr. Amir Tomer ofRAFAEL and the Technion, Israel Institute of Technology. The papers we wrotetogether are nominally on maintenance. However, the issue underlying our researchis the nature of software engineering. A direct consequence of working with Amiris that I gained new insight into software engineering. I have incorporated many ofthese ideas into this edition.

Turning now to my publisher, McGraw-Hill, I am truly grateful to executiveeditor Betsy Jones and developmental editor Emily Gray for their assistance fromstart to finish. I particularly appreciate their suggestions regarding giving equal stressto both C++ and Java in an integrated volume. Rick Hecker was the ideal projectmanager in every way. I was most fortunate to have Gnomi Schrift Gouldin as thecopy editor for this book. She greatly improved the readability of my manuscript, andI am grateful for her many suggestions.

I would like to thank the many instructors from all over the world who sent mee-mail concerning the fourth edition. I am exceedingly appreciative of their sugges-tions, comments, and criticisms. I look forward with anticipation to receiving instruc-tors’ feedback on this edition also. My e-mail address is [email protected].

Students, too, have been most helpful. First, I thank my students at Vanderbiltfor their many questions and comments, both inside and outside the classroom. I alsoan most grateful for the provocative questions and constructive suggestions e-mailedme by students from all over the world. I look forward keenly to student feedback onthis edition, too.

Finally, as always, I thank my family for their continual support. When I startedwriting books, my limited free time had to be shared between my young children andmy current book project. Now that my children are adults and work with me on mybooks, writing has become a family activity. For the tenth time, it is my privilege todedicate this book to my wife, Sharon, and my children, David and Lauren, with love.

Stephen R. Schach

Page 13: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 14: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 15: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 16: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 17: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 18: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 19: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 20: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 21: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 22: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 23: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 24: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 25: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 26: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 27: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 28: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 29: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 30: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 31: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 32: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 33: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 34: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 35: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 36: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 37: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 38: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 39: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 40: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 41: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 42: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 43: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 44: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 45: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 46: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 47: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 48: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 49: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 50: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 51: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 52: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 53: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 54: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 55: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 56: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 57: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 58: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 59: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 60: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 61: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 62: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 63: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 64: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 65: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 66: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 67: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 68: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 69: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 70: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 71: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 72: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 73: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 74: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 75: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 76: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 77: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 78: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 79: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 80: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 81: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 82: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 83: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 84: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 85: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 86: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 87: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 88: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 89: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 90: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 91: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 92: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 93: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 94: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 95: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 96: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 97: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 98: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 99: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 100: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 101: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 102: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 103: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 104: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 105: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 106: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 107: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 108: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 109: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 110: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 111: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 112: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 113: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 114: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 115: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 116: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 117: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 118: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 119: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 120: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 121: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 122: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 123: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 124: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 125: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 126: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 127: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 128: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 129: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 130: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 131: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 132: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 133: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 134: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 135: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 136: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 137: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 138: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 139: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 140: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 141: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 142: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 143: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 144: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 145: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 146: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 147: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 148: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 149: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 150: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 151: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 152: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 153: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 154: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 155: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 156: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 157: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 158: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 159: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 160: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 161: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 162: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 163: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 164: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 165: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 166: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 167: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 168: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 169: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 170: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 171: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 172: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 173: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 174: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 175: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 176: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 177: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 178: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 179: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 180: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 181: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 182: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 183: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 184: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 185: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 186: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 187: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 188: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 189: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 190: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 191: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 192: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 193: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 194: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 195: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 196: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 197: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 198: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 199: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 200: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 201: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 202: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 203: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 204: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 205: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 206: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 207: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 208: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 209: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 210: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 211: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 212: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 213: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 214: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 215: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 216: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 217: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 218: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 219: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 220: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 221: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 222: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 223: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 224: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 225: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 226: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 227: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 228: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 229: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 230: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 231: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 232: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 233: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 234: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 235: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 236: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 237: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 238: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 239: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 240: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 241: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 242: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 243: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 244: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 245: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 246: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 247: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 248: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 249: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 250: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 251: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 252: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 253: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 254: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 255: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 256: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 257: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 258: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 259: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 260: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 261: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 262: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 263: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 264: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 265: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 266: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 267: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 268: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 269: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 270: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 271: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 272: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 273: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 274: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 275: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 276: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 277: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 278: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 279: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 280: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 281: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 282: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 283: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 284: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 285: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 286: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 287: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 288: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 289: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 290: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 291: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 292: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 293: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 294: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 295: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 296: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 297: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 298: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 299: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 300: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 301: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 302: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 303: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 304: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 305: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 306: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 307: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 308: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 309: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 310: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 311: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 312: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 313: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 314: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 315: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 316: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 317: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 318: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 319: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 320: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 321: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 322: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 323: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 324: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 325: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 326: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 327: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 328: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 329: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 330: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 331: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 332: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 333: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 334: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 335: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 336: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 337: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 338: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 339: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 340: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 341: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 342: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 343: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 344: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 345: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 346: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 347: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 348: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 349: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 350: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 351: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 352: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 353: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 354: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 355: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 356: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 357: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 358: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 359: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 360: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 361: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 362: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 363: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 364: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 365: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 366: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 367: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 368: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 369: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 370: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 371: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 372: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 373: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 374: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 375: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 376: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 377: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 378: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 379: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 380: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 381: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 382: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 383: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 384: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 385: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 386: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 387: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 388: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 389: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 390: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 391: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 392: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 393: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 394: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 395: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 396: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 397: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 398: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 399: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 400: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 401: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 402: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 403: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 404: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 405: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 406: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 407: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 408: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 409: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 410: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 411: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 412: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 413: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 414: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 415: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 416: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 417: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 418: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 419: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 420: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 421: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 422: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 423: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 424: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 425: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 426: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 427: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 428: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 429: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 430: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 431: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 432: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 433: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 434: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 435: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 436: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 437: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 438: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 439: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 440: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 441: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 442: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 443: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 444: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 445: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 446: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 447: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 448: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 449: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 450: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 451: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 452: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 453: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 454: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 455: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 456: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 457: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 458: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 459: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 460: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 461: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 462: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 463: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 464: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 465: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 466: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 467: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 468: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 469: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 470: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 471: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 472: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 473: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 474: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 475: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 476: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 477: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 478: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 479: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 480: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 481: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 482: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 483: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 484: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 485: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 486: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 487: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 488: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 489: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 490: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 491: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 492: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 493: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 494: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 495: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 496: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 497: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 498: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 499: Object Oriented and Classical Software Engineering.9780072865516.25242
Page 500: Object Oriented and Classical Software Engineering.9780072865516.25242