Preface. PART ONE INTRODUCTION TO SOFTWARE ENGINEERING Chapter 1 The Scope of Software Engineering Learning Objectives 1.1 Historical Aspects 1.2 Economic Aspects 1.3 Maintenance Aspects 1.4 Requirements, Analysis, and Design Aspects 1.5 Team Development Aspects 1.6 Why There Is No Planning Phase 1.7 Why There Is No Testing Phase 1.8 Why There Is No Documentation Phase 1.9 The Object-Oriented Paradigm 1.10 The Object-Oriented Paradigm in Perspective 1.11 Terminology 1.12 Ethical Issues Chapter Review For Further Reading Key Terms Problems References Chapter 2 Software Life-Cycle Models Learning Objectives 2.1 Software Development in Theory 2.2 Winburg Mini Case Study 2.3 Lessons of the Winburg Mini Case Study 2.4 Teal Tractors Mini Case Study 2.5 Iteration and Incrementation 2.6 Winburg Mini Case Study Revisited 2.7 Risks and Other Aspects of Iteration and Incrementation 2.8 Managing Iteration and Incrementation 2.9 Other Life-Cycle Models 2.10 Comparison of Life-Cycle Models Chapter Review For Further Reading Key Terms Problems References Chapter 3 The Software Process Learning Objectives 3.1 The Unified Process 3.2 Iteration and Incrementation within the Object-Oriented Paradigm 3.3 The Requirements Workfiow 3.4 The Analysis Workflow 3.5 The Design Workflow 3.6 The Implementation Workflow 3.7 The Test Workflow 3.8 Postdelivery Maintenance 3.9 Retirement 3.10 The Phases of the Unified Process 3.11 One- versus Two-Dimensional Life-Cycle Models 3.12 Improving the Software Process 3.13 Capability Maturity Models 3.14 Other Software Process Improvement Initiatives 3.15 Costs and Benefits of Software Process Improvement Chapter Review For Further Reading Key Terms Problems References Chapter 4 Teams 104 Learning Objectives 4.1 Team Organization 4.2 Democratic Team Approach 4.3 Classical Chief Programmer Team Approach 4.4 Beyond Chief Programmer and Democratic Teams 4.5 Synchronize-and-Stabilize Teams 4.6 Teams for Agile Processes 4.7 Open-Source Programming Teams 4.8 People Capability Maturity Model 4.9 Choosing an Appropriate Team Organization Chapter Review For Further Reading Key Terms Problems References Chapter 5 The Tools of the Trade Learning Objectives 5.1 Stepwise Refinement 5.2 Cost-Benefit Analysis 5.3 Software Metrics 5.4 CASE 5.5 Taxonomy of CASE 5.6 Scope of CASE 5.7 Software Versions 5.8 Configuration Control 5.9 Build Tools 5.10 Productivity Gains with CASE Technology Chapter Review For Further Reading Key Terms Problems References Chapter 6 Testing Learning Objectives 6.1 Quality Issues 6.2 Non-Execution-Based Testing 6.5 Execution-Based Testing 6.4 What Should Be Tested? 6.5 Testing versus Correcmess Proofs 6.6 Who Should Perform Execution-Based Testing? 6.7 When Testing Stops Chapter 7 From Modules to Objects Learning Objectives 7.1 What Is a Module? 7.2 Cohesion 7.3 Coupling 7.4 Data Encapsulation 7.5 Abstract Data Types 7.6 Information Hiding 7.7 Objects 7.8 Inheritance, Polymorphism, and Dynamic Binding 7.9 The Object-Oriented Paradigm Chapter 8 Reusability and Portability Learning Objectives 8.1 Reuse Concepts 8.2 Impediments to Reuse 8.3 Reuse Case Studies 8.4 Objects anct Reuse 8.5 Reuse during Design 8.6 Reuse and Postdelivery Maintenance 8.7 Portability.. 8.8 Why Portability? 8.9 Techniques for Achieving Portability Chapter Review For Further Reading Key Terms Problems References Chapter 9 Planning and Estimating Learning Objectives 9.1 Planning and the Software Process 9.2 Estimating Duration and Cost 9.3 Components of a Software Project Management Plan 9.4 Software Project Management Plan Framework 9.5 IEEE Software Project Management Plan 9.6 Planning Testing 9.7 Planning Object-Oriented Projects 9.8 Training Requirements 9.9 Documentation Standards 9.10 CASE Tools for Planning and Estimating 9.11 Testing the Software Project Management Plan Chapter Review For Further Reading Key Terms Problems References PART TWO THE WORKFLOWS OF THE SOFTWARE LIFE CYCLE Chapter 10 Requirements Learning Objectives 10.1 Determining What the Client Needs 10.2 Overview of the Requirements Workflow 10.5 Understanding the Domain 10.4 The Business Model 10.5 Initial Requirements 10.6 Initial Understanding of the Domain: The MSG Foundation Case Study 10.7 Initial Business Model: The MSG Foundation Case Study 10.8 Initial Requirements: The MSG Foundation Case Study 10.9 Continuing the Requirements Workflow: The MSG Foundation Case Study 10.10 Revising the Requirements: The MSG Foundation Case Study 10.11 The Test Workflow: The MSG Foundation Case Study 10.12 The Classical Requirements Phase 10.13 Rapid Prototyping 10.14 Human Factors 10.15 Reusing the Rapid Prototype 10.16 CASE Tools for the Requirements Workfiow 10.17 Metrics for the Requirements Workflow 10.18 Challenges of the Requirements Workflow Chapter Review For Further Reading Key Terms Case Study Key Terms Problems References Chapter 11 Classical Analysis Learning Objectives 11.1 The Specification Document 11.2 Informal Specifications 11.5 Structured Systems Analysis 11.4 Structured Systems Analysis: The MSG Foundation Case Study 11.5 Other Semiformal Techniques 11.6 Entity-Relationship Modeling 11.7 Finite State Machines 11.8 Petri Nets 11.9 Z 358 11.10 Other Formal Techniques 11.11 Comparison of Classical Analysis Techniques 11.12 Testing during Classical Analysis 11.13 CASE Tools for Classical Analysis 11.14 Metrics for Classical Analysis 11.15 Software Project Management Plan: The MSG Foundation Case Study 11.16 Challenges of Classical Analysis Chapter Review For Further Reading Key Terms Case Study Key Terms Problems References Chapter 12 Object-Oriented Analysis Learning Objectives 12.1 The Analysis Workflow 12.2 Extracting the Entity Classes 12.3 Object-Oriented Analysis: The Elevator Problem Case Study 12.4 Functional Modeling: The Elevator Problem Case Study 12.5 Entity Class Modeling: The Elevator Problem Case Study 12.6 Dynamic Modeling: The Elevator Problem Case Study 12.7 The Test Workflow: Object-Oriented Analysis 12.8 Extracting the Boundary and Control Classes 12.9 The Initial Functional Model: The MSG Foundation Case Study 12.10 The Initial Class Diagram: The MSG Foundation Case Study 12.11 The Initial Dynamic Model: The MSG Foundation Case Study 12.12 Revising the Entity Classes: The MSG Foundation Case Study 12.13 Extracting the Boundary Classes: The MSG Foundation Case Study 12.14 Extracting the Control Classes: The MSG Foundation Case Study 12.15 Use-Case Realization: The MSG Foundation Case Study 12.16 Incrementing the Class Diagram: The MSG Foundation Case Study 12.17 The Test Workfiow: The MSG Foundation Case Study 12.18 The Specification Document in the Unified Process 12.19 More on Actors and Use Cases 12.20 CASE Tools for the Object-Oriented Analysis Workflow 12.21 Challenges of the Object-Oriented Analysis Workflow Chapter Review For Further Reading Key Terms Problems References Chapter 13 Design Learning Objectives 13.1 Design and Abstraction 13.2 Operation-Oriented Design 13.3 Data Flow Analysis 13.4 Transaction Analysis 13.5 Data-Oriented Design 13.6 Object-Oriented Design 13.7 Object-Oriented Design: The Elevator Problem Case Study 13.8 Object-Oriented Design: The MSG Foundation Case Study 13.9 The Design Workfiow 13.10 The Test Workfiow: Design 13.11 The Test Workflow: The MSG Foundation Case Study 13.12 Formal Techniques for Detailed Design 13.13 Real-Time Design Techniques 13.14 CASE Tools for Design 13.15 Metrics for Design 13.16 Challenges of the Design Workflow Chapter Review For Further Reading Key Terms Problems References Chapter 14 implementation Learning Objectives 14.1 Choice of Programming Language 14.2 Fourth-Generation Languages 14.3 Good Programming Practice 14.4 Coding Standards 14.5 Code Reuse 14.6 Integration 14.7 The Implementation Worlfflow 14.8 The Implementation Workfiow: The MSG Foundation Case Study 14.9 The Test Worldtow: Implementation 14.10 Test Case Selection 14.11 Black-Box Unit-Testing Techniques 14.12 Black-Box Test Cases: The MSG Foundation Case Study 14.13 Glass-Box Unit-Testing Techniques 14.14 Code Walkthroughs and Inspections 14.15 Comparison of Unit-Testing Techniques 14.16 Cleanroom 14.17 Potential Problems When Testing Objects 14.18 Management Aspects of Unit Testing 14.19 When to Rewrite Rather than Debug a Code Artifact 14.20 Integration Testing 14.21 Product Testing 14.22 Acceptance Testing 14.23 The Test Workflow: The MSG Foundation Case Study 14.24 CASE Tools for Implementation 14.25 CASE Tools for the Test Workflow 14.26 Metrics for the Implementation Workflow 14.27 Challenges of the Implementation Workflow Chapter Review For Further Reading Key Terms Problems References Chapter 15 Postdelivery Maintenance Learning Objectives 15.1 Development and Maintenance 15.2 Why Postdelivery Maintenance Is Necessary 15.3 What Is Required of Post&livery Maintenance Programmers? 15.4 Postdelivery Maintenance Mini Case Study 15.5 Management of Postdelivery Maintenance 15.6 Maintenance of Object-Oriented Software 15.7 Postdelivery Maintenance Skills versus Development Skills 15.8 Reverse Engineering 15.9 Testing during Post&livery Maintenance 15.10 CASE Tools for Postdelivery Maintenance 15.11 Metrics for Postdelivery Maintenance 15.12 Post&livery Maintenance: The MSG Foundation Case Study 15.13 Challenges of Postdelivery Maintenance Chapter Review For Further Reading Key Terms Problems References Chapter 16 More on UML Learning Objectives 16.1 UML Is Not a Methodology 16.2 Class Diagrams 16.3 Notes 16.4 Use-Case Diagrams 16.5 Stereotypes 16.6 Interaction Diagrams 16.7 Statecharts 16.8 Activity Diagrams 16.9 Packages 549 16.10 Component Diagrams 16.11 Deployment Diagrams 16.12 Review of UML Diagrams 16.13 UML and Iteration Chapter Review For Further Reading Key Terms Problems References Bibliography Appendix A Term Project: Osric's Office Appliances and Decor Appendix B Software Engineering Resources Appendix C Requirements Workfiow' The MSG Foundation Case Study Appendix D Structured Systems Analysis: The MSG Foundation Case Study Appendix E Analysis Worldlow: The MSG Foundation Case Study Appendix F Software Project Management Plan: The MSG Foundation Case Study Appendix G Design Workfiow: The MSG Foundation Case Study Appendix H Implementation Workfiow: The MSG Foundation Case Study (C++ Version) Appendix I Implementation Workfiow: The MSG Foundation Case Study (Java Version) Appendix J Test Workfiow: The MSG Foundation Case Study Author Index Subject Index