Example: barber

Object-Oriented and Classical Software Engineering

Object-Oriented and Classical Software Engineering Eighth Edition Stephen R. Schach Vanderbilt University i10/06/10 2:36 PM10/06/10 2:36 PMOBJECT- oriented AND Classical Software Engineering , EIGHTH EDITIONP ublished by McGraw-Hill, a business unit of The McGraw-Hill Companies, Inc., 1221 Avenue 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 prior 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 ancillaries, including electronic and print components, may not be available to customers outside the United book is printed on acid-free 2 3 4 5 6 7 8 9 0 DOC/DOC 1 0 9 8 7 6 5 4 3 2 1 0 ISBN 978-0-07-337618-9 MHID 0-07-337618-3 Vice President & Editor-in-Chief: Marty LangePublisher: Raghothaman SrinivasanVice President EDP & Central Publishing Services: Kimberly Meriwether DavidDevelopment Editor: Lora NeyensSenior Marketing Manager: Curt ReynoldsProject Manager: Melissa M.

1.4 Requirements, Analysis, and Design Aspects 12 1.5 Team Deelopment v 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 P erspectie v 22

Tags:

  Design, Object, Oriented

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Advertisement

Transcription of Object-Oriented and Classical Software Engineering

1 Object-Oriented and Classical Software Engineering Eighth Edition Stephen R. Schach Vanderbilt University i10/06/10 2:36 PM10/06/10 2:36 PMOBJECT- oriented AND Classical Software Engineering , EIGHTH EDITIONP ublished by McGraw-Hill, a business unit of The McGraw-Hill Companies, Inc., 1221 Avenue 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 prior 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 ancillaries, including electronic and print components, may not be available to customers outside the United book is printed on acid-free 2 3 4 5 6 7 8 9 0 DOC/DOC 1 0 9 8 7 6 5 4 3 2 1 0 ISBN 978-0-07-337618-9 MHID 0-07-337618-3 Vice President & Editor-in-Chief: Marty LangePublisher: Raghothaman SrinivasanVice President EDP & Central Publishing Services: Kimberly Meriwether DavidDevelopment Editor: Lora NeyensSenior Marketing Manager: Curt ReynoldsProject Manager: Melissa M.

2 LeickBuyer: Kara KudronowiczDesign Coordinator: Brenda A. RolwesCover Designer: Studio Montage, St. Louis, MissouriCover Image: Photodisc/Getty ImagesCompositor: Glyph InternationalTypeface: 10/12 Times RomanPrinter: R. R. DonnelleyAll credits appearing on page or at the end of the book are considered to be an extension of the copyright 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-337618-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) 2010 17 dc22 ii10/06/10 2:36 PM10/06/10 2:36 PM To Jackson and Mikaela iii10/06/10 2:36 PM10/06/10 2:36 PM The following are registered trademarks.

3 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 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 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 Solaris SourceSafe SPARC station 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 iv10/06/10 2:36 PM10/06/10 2.

4 36 PMContentsPreface xiii Chapter 1 The Scope of Software Engineering 1 Learning Objectives 1 Historical Aspects 2 Economic Aspects 5 Maintenance Aspects 6 Classical and Modern Views of Maintenance 9 The Importance of Postdelivery Maintenance 10 Requirements, Analysis, and design Aspects 12 Team Development Aspects 15 Why There Is No Planning Phase 16 Why There Is No Testing Phase 16 Why There Is No Documentation Phase 17 The Object-Oriented Paradigm 18 The Object-Oriented Paradigm in Perspective 22 Terminology 23 Ethical Issues 26 Chapter Review 27 For Further Reading 27 Key Terms 28 Problems 29 References 30 PART A Software Engineering CONCEPTS 35 Chapter 2 Software Life-Cycle Models 37 Learning Objectives 37 Software Development in Theory 37 Winburg Mini Case Study 38 Lessons of the Winburg Mini Case Study 42 Teal Tractors Mini Case Study 42 Iteration and Incrementation 43 Winburg Mini Case Study Revisited 47 Risks and Other Aspects of Iteration and Incrementation 48 Managing

5 Iteration and Incrementation 51 Other Life-Cycle Models 52 Code-and-Fix Life-Cycle Model 52 Waterfall Life-Cycle Model 53 Rapid-Prototyping Life-Cycle Model 55 Open-Source Life-Cycle Model 56 Agile Processes 59 Synchronize-and-Stabilize Life-Cycle Model 62 Spiral Life-Cycle Model 62 Comparison of Life-Cycle Models 66 Chapter Review 67 For Further Reading 68 Key Terms 69 Problems 69 References 70 Chapter 3 The Software Process 74 Learning Objectives 74 The Unifi ed Process 76 Iteration and Incrementation within the Object-Oriented Paradigm 76 The Requirements Workfl ow 78 The Analysis Workfl ow 80 The design Workfl ow 82 The Implementation Workfl ow 83 The Test Workfl ow 84 Requirements Artifacts 84 Analysis Artifacts 84 design Artifacts 85 Implementation Artifacts 85 Postdelivery Maintenance 87 v10/06/10 2:36 PM10/06/10 2.

6 36 PMvi Contents Retirement 88 The Phases of the Unifi ed Process 88 The Inception Phase 89 The Elaboration Phase 91 The Construction Phase 92 The Transition Phase 92 One- versus Two-Dimensional Life-Cycle Models 92 Improving the Software Process 94 Capability Maturity Models 95 Other Software Process Improvement Initiatives 98 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 Team Organization 107 Democratic Team Approach 109 Analysis of the Democratic Team Approach 110 Classical Chief Programmer Team Approach 110 The New York Times Project 112 Impracticality of the Classical Chief Programmer Team Approach 113 Beyond Chief Programmer and Democratic Teams 113 Synchronize-and-Stabilize Teams 117 Teams for Agile Processes 118 Open-Source Programming Teams 118 People Capability Maturity Model 119 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 124 Stepwise Refi nement 124 Stepwise Refi nement Mini Case Study 125 Cost Benefi t Analysis 130 Divide-and-Conquer 132 Separation of Concerns 132 Software Metrics 133 CASE 134

7 Taxonomy of CASE 135 Scope of CASE 137 Software Versions 141 Revisions 141 Variations 142 Confi guration Control 143 Confi guration Control during Postdelivery Maintenance 145 Baselines 145 Confi guration Control during Development 146 Build Tools 146 Productivity Gains with CASE Technology 147 Chapter Review 149 For Further Reading 149 Key Terms 150 Problems 150 References 151 Chapter 6 Testing 154 Learning Objectives 154 Quality Issues 155 Software Quality Assurance 156 Managerial Independence 156 Non-Execution-Based Testing 157 Walkthroughs 158 Managing Walkthroughs 158 Inspections 159 Comparison of Inspections and Walkthroughs 161 vi10/06/10 2:36 PM10/06/10 2:36 PMContents vii Strengths and Weaknesses of Reviews 162 Metrics for Inspections 162 Execution-Based Testing 162 What Should Be Tested?

8 163 Utility 164 Reliability 164 Robustness 165 Performance 165 Correctness 166 Testing versus Correctness Proofs 167 Example of a Correctness Proof 167 Correctness Proof Mini Case Study 171 Correctness Proofs and Software Engineering 172 Who Should Perform Execution-Based Testing? 175 When Testing 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 What Is a Module? 183 Cohesion 187 Coincidental Cohesion 187 Logical Cohesion 188 Temporal Cohesion 189 Procedural Cohesion 189 Communicational Cohesion 190 Functional Cohesion 190 Informational Cohesion 191 Cohesion Example 191 Coupling 192 Content Coupling 192 Common Coupling 193 Control Coupling 195 Stamp Coupling 195 Data Coupling 196 Coupling Example 197 The Importance of Coupling 198 Data Encapsulation 199 Data Encapsulation and Development 201 Data Encapsulation and Maintenance 202 Abstract Data Types 207 Information Hiding 209 Objects 211 Inheritance.

9 Polymorphism, and Dynamic Binding 215 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 Reuse Concepts 226 Impediments to Reuse 228 Reuse Case Studies 229 Raytheon Missile Systems Division 230 European Space Agency 231 Objects and Reuse 232 Reuse during design and Implementation 232 design Reuse 232 Application Frameworks 234 design Patterns 235 Software Architecture 236 Component-Based Software Engineering 237 More on design Patterns 237 FLIC Mini Case Study Adapter design Pattern 239 Bridge design

10 Pattern 240 Iterator design Pattern 241 Abstract Factory design Pattern 241 Categories of design Patterns 245 Strengths and Weaknesses of design Patterns 247 Reuse and the World Wide Web 248 vii10/06/10 2:36 PM10/06/10 2:36 PMviii Contents Reuse and Postdelivery Maintenance 249 Portability 250 Hardware Incompatibilities 250 Operating System Incompatibilities 251 Numerical Software Incompatibilities 251 Compiler Incompatibilities 253 Why Portability? 255 Techniques for Achieving Portability 256 Portable System Software 257 Portable Application Software 257 Portable Data 258 Model-Driven Architecture 259 Chapter Review 259 For Further Reading 260 Key Terms 261 Problems 261 References 263 CHAPTER 9 Planning and Estimating 268 Learning Objectives 268 Planning and the Software Process 268 Estimating Duration and Cost 270 Metrics for the Size of a Product 272 Techniques of Cost Estimation 275 Intermediate COCOMO 278 COCOMO II 281 Tracking Duration and Cost Estimates 282 Components of a Software Project Management Plan 282 Software Project Management Plan Framework 284 IEEE Software


Related search queries