1、Object-Oriented and Classical Software Engineering Eighth Edition Stephen R. Schach Vanderbilt University sch76183_FM-i-xx.indd i 10/06/10 2:36 PMOBJECT-ORIENTED AND CLASSICAL SOFTWARE ENGINEERING, EIGHTH EDITIONPublished by McGraw-Hill, a business unit of The McGraw-Hill Companies, Inc., 1221 Avenu
2、e of the Americas, New York, NY 10020. Copyright 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Previous editions 2007, 2005, and 2002. No part of this publication may be reproduced or distributed in any form or by any means, or stored in a database or retrieval system, without the pri
3、or written consent of The McGraw-Hill Companies, Inc., including, but not limited to, in any network or other electronic storage or transmission, or broadcast for distance learning.Some ancillaries, including electronic and print components, may not be available to customers outside the United State
4、s.This book is printed on acid-free paper.1 2 3 4 5 6 7 8 9 0 DOC/DOC 1 0 9 8 7 6 5 4 3 2 1 0ISBN 978-0-07-337618-9MHID 0-07-337618-3Vice President & Editor-in-Chief: Marty LangePublisher: Raghothaman SrinivasanVice President EDP & Central Publishing Services: Kimberly Meriwether DavidDevelopment Ed
5、itor: Lora NeyensSenior Marketing Manager: Curt ReynoldsProject Manager: Melissa M. LeickBuyer: Kara KudronowiczDesign Coordinator: Brenda A. RolwesCover Designer: Studio Montage, St. Louis, MissouriCover Image: Photodisc/Getty ImagesCompositor: Glyph InternationalTypeface: 10/12 Times RomanPrinter:
6、 R. R. DonnelleyAll credits appearing on page or at the end of the book are considered to be an extension of the copyright page.Library of Congress Cataloging-in-Publication DataSchach, Stephen R.Object-oriented and classical software engineering / Stephen R. Schach. 8th ed.p. cm.ISBN-13: 978-0-07-3
7、37618-9 (alk. paper)ISBN-10: 0-07-337618-3 (alk. paper)1. Software engineering. 2. Object-oriented programming (Computerscience) 3. UML (Computer science) 4. C+ (Computer program language) I.Title. QA76.758.S318 sch76183_FM-i-xx.indd ii 10/06/10 2:36 PMTo Jackson and Mikaela sch76183_FM-i-xx.indd ii
8、i 10/06/10 2:36 PMThe following are registered trademarks:ADF Analyst/Designer Ant Apache Apple AS/400 AT&T Bachman Product Set Bell Laboratories Borland Bugzilla Capability Maturity Model Chrome ClearCase ClearQuest CMM Cocoa Coca-Cola CORBA CppUnit CVS DB2 Eclipse e-Components Emeraude Enterprise
9、JavaBeans eServer Excel Firefox Focus Ford Foundation Class Library FoxBASE GCC Hewlett-Packard IBM IMS/360 Jackpot Source Code Metrics J a v a JBuilder JUnit Linux Lotus 1-2-3 Lucent Technologies MacApp Macintosh Macintosh Toolbox MacProject Microsoft Motif MS-DOS MVS/360 Natural Netscape New York
10、Times Object C Objective-C ObjectWindows Library 1-800-fl Oracle Oracle Developer Suite OS/360 OS/370 OS/VS2 Palm Pilot Parasoft Post-It Note PowerBuilder PREfi x PREfast Project PureCoverage PVCS QARun Rational Requisite Pro Rhapsody Rose SBC Communications SilkTest SLAM Software through Pictures
11、Solaris SourceSafe SPARCstation Sun Sun Enterprise Sun Microsystems Sun ONE Studio System Architect Together UNIX VAX Visual Component Library Visual C+ Visual J+ VM/370 VMS Wall Street Journal WebSphere Win32 Windows 95 Windows 2000 Windows NT Word X11 Xrunner XUnit Zip disk ZIP Code z10 sch76183_F
12、M-i-xx.indd iv 10/06/10 2:36 PMContentsPreface xiiiChapter 1 The Scope of Software Engineering 1 Learning Objectives 1 1.1 Historical Aspects 2 1.2 Economic Aspects 5 1.3 Maintenance Aspects 6 1.3.1 Classical and Modern Views of Maintenance 9 1.3.2 The Importance of Postdelivery Maintenance 10 1.4 R
13、equirements, Analysis, and Design Aspects 12 1.5 Team Development Aspects 15 1.6 Why There Is No Planning Phase 16 1.7 Why There Is No Testing Phase 16 1.8 Why There Is No Documentation Phase 17 1.9 The Object-Oriented Paradigm 18 1.10 The Object-Oriented Paradigm in Perspective 22 1.11 Terminology
14、23 1.12 Ethical Issues 26 Chapter Review 27 For Further Reading 27 Key Terms 28 Problems 29 References 30 PART A SOFTWARE ENGINEERING CONCEPTS 35Chapter 2 Software Life-Cycle Models 37 Learning Objectives 37 2.1 Software Development in Theory 37 2.2 Winburg Mini Case Study 382.3 Lessons of the Winbu
15、rg Mini Case Study 42 2.4 Teal Tractors Mini Case Study 422.5 Iteration and Incrementation 43 2.6 Winburg Mini Case Study Revisited 472.7 Risks and Other Aspects of Iteration and Incrementation 48 2.8 Managing Iteration and Incrementation 51 2.9 Other Life-Cycle Models 52 2.9.1 Code-and-Fix Life-Cyc
16、le Model 52 2.9.2 Waterfall Life-Cycle Model 53 2.9.3 Rapid-Prototyping Life-Cycle Model 55 2.9.4 Open-Source Life-Cycle Model 56 2.9.5 Agile Processes 59 2.9.6 Synchronize-and-Stabilize Life-Cycle Model 62 2.9.7 Spiral Life-Cycle Model 62 2.10 Comparison of Life-Cycle Models 66 Chapter Review 67 Fo
17、r Further Reading 68 Key Terms 69 Problems 69 References 70 Chapter 3 The Software Process 74 Learning Objectives 74 3.1 The Unifi ed Process 76 3.2 Iteration and Incrementation within the Object-Oriented Paradigm 76 3.3 The Requirements Workfl ow 78 3.4 The Analysis Workfl ow 80 3.5 The Design Work
18、fl ow 82 3.6 The Implementation Workfl ow 83 3.7 The Test Workfl ow 84 3.7.1 Requirements Artifacts 84 3.7.2 Analysis Artifacts 84 3.7.3 Design Artifacts 85 3.7.4 Implementation Artifacts 85 3.8 Postdelivery Maintenance 87 vsch76183_FM-i-xx.indd v 10/06/10 2:36 PMvi Contents3.9 Retirement 88 3.10 Th
19、e Phases of the Unifi ed Process 88 3.10.1 The Inception Phase 89 3.10.2 The Elaboration Phase 91 3.10.3 The Construction Phase 92 3.10.4 The Transition Phase 92 3.11 One- versus Two-Dimensional Life-Cycle Models 92 3.12 Improving the Software Process 94 3.13 Capability Maturity Models 95 3.14 Other
20、 Software Process Improvement Initiatives 98 3.15 Costs and Benefi ts of Software Process Improvement 99 Chapter Review 101 For Further Reading 102 Key Terms 102 Problems 103 References 104 Chapter 4 Teams 107 Learning Objectives 107 4.1 Team Organization 107 4.2 Democratic Team Approach 109 4.2.1 A
21、nalysis of the Democratic Team Approach 110 4.3 Classical Chief Programmer Team Approach 110 4.3.1 The New York Times Project 112 4.3.2 Impracticality of the Classical Chief Programmer Team Approach 113 4.4 Beyond Chief Programmer and Democratic Teams 113 4.5 Synchronize-and-Stabilize Teams 117 4.6
22、Teams for Agile Processes 118 4.7 Open-Source Programming Teams 118 4.8 People Capability Maturity Model 119 4.9 Choosing an Appropriate Team Organization 120 Chapter Review 121 For Further Reading 121 Key Terms 122 Problems 122 References 122 Chapter 5 The Tools of the Trade 124 Learning Objectives
23、 124 5.1 Stepwise Refi nement 124 5.1.1 Stepwise Refi nement Mini Case Study 1255.2 CostBenefi t Analysis 130 5.3 Divide-and-Conquer 132 5.4 Separation of Concerns 132 5.5 Software Metrics 133 5.6 CASE 1345.7 Taxonomy of CASE 135 5.8 Scope of CASE 137 5.9 Software Versions 141 5.9.1 Revisions 141 5.
24、9.2 Variations 142 5.10 Confi guration Control 143 5.10.1 Confi guration Control during Postdelivery Maintenance 145 5.10.2 Baselines 145 5.10.3 Confi guration Control during Development 146 5.11 Build Tools 146 5.12 Productivity Gains with CASE Technology 147 Chapter Review 149 For Further Reading
25、149 Key Terms 150 Problems 150 References 151 Chapter 6 Testing 154 Learning Objectives 154 6.1 Quality Issues 155 6.1.1 Software Quality Assurance 156 6.1.2 Managerial Independence 156 6.2 Non-Execution-Based Testing 157 6.2.1 Walkthroughs 158 6.2.2 Managing Walkthroughs 158 6.2.3 Inspections 159 6
26、.2.4 Comparison of Inspections and Walkthroughs 161 sch76183_FM-i-xx.indd vi 10/06/10 2:36 PMContents vii6.2.5 Strengths and Weaknesses of Reviews 162 6.2.6 Metrics for Inspections 162 6.3 Execution-Based Testing 162 6.4 What Should Be Tested? 163 6.4.1 Utility 164 6.4.2 Reliability 164 6.4.3 Robust
27、ness 165 6.4.4 Performance 165 6.4.5 Correctness 166 6.5 Testing versus Correctness Proofs 167 6.5.1 Example of a Correctness Proof 167 6.5.2 Correctness Proof Mini Case Study 1716.5.3 Correctness Proofs and Software Engineering 172 6.6 Who Should Perform Execution-Based Testing? 175 6.7 When Testin
28、g Stops 176 Chapter Review 176 For Further Reading 177 Key Terms 177 Problems 178 References 179 Chapter 7 From Modules to Objects 183 Learning Objectives 183 7.1 What Is a Module? 183 7.2 Cohesion 187 7.2.1 Coincidental Cohesion 187 7.2.2 Logical Cohesion 188 7.2.3 Temporal Cohesion 189 7.2.4 Proce
29、dural Cohesion 189 7.2.5 Communicational Cohesion 190 7.2.6 Functional Cohesion 190 7.2.7 Informational Cohesion 191 7.2.8 Cohesion Example 191 7.3 Coupling 192 7.3.1 Content Coupling 192 7.3.2 Common Coupling 193 7.3.3 Control Coupling 195 7.3.4 Stamp Coupling 195 7.3.5 Data Coupling 196 7.3.6 Coup
30、ling Example 197 7.3.7 The Importance of Coupling 198 7.4 Data Encapsulation 199 7.4.1 Data Encapsulation and Development 201 7.4.2 Data Encapsulation and Maintenance 202 7.5 Abstract Data Types 207 7.6 Information Hiding 209 7.7 Objects 211 7.8 Inheritance, Polymorphism, and Dynamic Binding 215 7.9
31、 The Object-Oriented Paradigm 217 Chapter Review 220 For Further Reading 221 Key Terms 221 Problems 221 References 222 Chapter 8 Reusability and Portability 225 Learning Objectives 225 8.1 Reuse Concepts 226 8.2 Impediments to Reuse 228 8.3 Reuse Case Studies 229 8.3.1 Raytheon Missile Systems Divis
32、ion 230 8.3.2 European Space Agency 231 8.4 Objects and Reuse 232 8.5 Reuse during Design and Implementation 232 8.5.1 Design Reuse 232 8.5.2 Application Frameworks 234 8.5.3 Design Patterns 235 8.5.4 Software Architecture 236 8.5.5 Component-Based Software Engineering 237 8.6 More on Design Pattern
33、s 237 8.6.1 FLIC Mini Case Study 2388.6.2 Adapter Design Pattern 239 8.6.3 Bridge Design Pattern 240 8.6.4 Iterator Design Pattern 241 8.6.5 Abstract Factory Design Pattern 241 8.7 Categories of Design Patterns 245 8.8 Strengths and Weaknesses of Design Patterns 247 8.9 Reuse and the World Wide Web
34、248 sch76183_FM-i-xx.indd vii 10/06/10 2:36 PMviii Contents8.10 Reuse and Postdelivery Maintenance 249 8.11 Portability 250 8.11.1 Hardware Incompatibilities 250 8.11.2 Operating System Incompatibilities 251 8.11.3 Numerical Software Incompatibilities 251 8.11.4 Compiler Incompatibilities 253 8.12 W
35、hy Portability? 255 8.13 Techniques for Achieving Portability 256 8.13.1 Portable System Software 257 8.13.2 Portable Application Software 257 8.13.3 Portable Data 258 8.13.4 Model-Driven Architecture 259 Chapter Review 259 For Further Reading 260 Key Terms 261 Problems 261 References 263 CHAPTER 9
36、Planning and Estimating 268 Learning Objectives 268 9.1 Planning and the Software Process 268 9.2 Estimating Duration and Cost 270 9.2.1 Metrics for the Size of a Product 272 9.2.2 Techniques of Cost Estimation 275 9.2.3 Intermediate COCOMO 278 9.2.4 COCOMO II 281 9.2.5 Tracking Duration and Cost Es
37、timates 282 9.3 Components of a Software Project Management Plan 282 9.4 Software Project Management Plan Framework 284 9.5 IEEE Software Project Management Plan 286 9.6 Planning Testing 288 9.7 Planning Object-Oriented Projects 289 9.8 Training Requirements 290 9.9 Documentation Standards 291 9.10
38、CASE Tools for Planning and Estimating 292 9.11 Testing the Software Project Management Plan 292 Chapter Review 292 For Further Reading 292 Key Terms 293 Problems 294 References 295 PART B THE WORKFLOWS OF THE SOFTWARE LIFE CYCLE 299Chapter 10 Key Material from Part A 301 Learning Objective 301 10.1
39、 Software Development: Theory versus Practice 301 10.2 Iteration and Incrementation 302 10.3 The Unifi ed Process 306 10.4 Workfl ow Overview 307 10.5 Teams 307 10.6 CostBenefi t Analysis 308 10.7 Metrics 308 10.8 CASE 308 10.9 Versions and Confi gurations 309 10.10 Testing Terminology 309 10.11 Exe
40、cution-Based and Non-Execution-Based Testing 309 10.12 Modularity 310 10.13 Reuse 310 10.14 Software Project Management Plan 310 Chapter Review 311 Key Terms 311 Problems 312 Chapter 11 Requirements 313 Learning Objectives 313 11.1 Determining What the Client Needs 313 11.2 Overview of the Requireme
41、nts Workfl ow 314 11.3 Understanding the Domain 315 11.4 The Business Model 316 11.4.1 Interviewing 316 11.4.2 Other Techniques 317 11.4.3 Use Cases 318 sch76183_FM-i-xx.indd viii 10/06/10 2:36 PMContents ix11.5 Initial Requirements 319 11.6 Initial Understanding of the Domain: The MSG Foundation Ca
42、se Study 32011.7 Initial Business Model: The MSG Foundation Case Study 32211.8 Initial Requirements: The MSG Foundation Case Study 32611.9 Continuing the Requirements Workfl ow: The MSG Foundation Case Study 32811.10 Revising the Requirements: The MSG Foundation Case Study 33011.11 The Test Workfl o
43、w: The MSG Foundation Case Study 33811.12 The Classical Requirements Phase 347 11.13 Rapid Prototyping 348 11.14 Human Factors 349 11.15 Reusing the Rapid Prototype 351 11.16 CASE Tools for the Requirements Workfl ow 353 11.17 Metrics for the Requirements Workfl ow 353 11.18 Challenges of the Requir
44、ements Workfl ow 354 Chapter Review 355 For Further Reading 356 Key Terms 357 Case Study Key Terms 357 Problems 357 References 358 Chapter 12 Classical Analysis 360 Learning Objectives 360 12.1 The Specifi cation Document 360 12.2 Informal Specifi cations 362 12.2.1 Correctness Proof Mini Case Study Redux 36312.3 Structured Systems Analysis 364 12.3.1 Sallys Software Shop Mini Case Study 36412.4 Structured Systems Analysis: The MSG Foundation Case Study 37212.5 Other Semiformal Techniques 373 12.6 Entity-Relationship Modeling 374 12.7 Finite State Machines 376 12.7.1 Finite Sta