Cover
Title Page
Copyright
Contents
Preface
Chapter 1 The Scope of Software Engineering
Learning Objectives
1.1 Historical Aspects
1.2 Economic Aspects
1.3 Maintenance Aspects
1.3.1 Classical and Modern Views of Maintenance
1.3.2 The Importance of Postdelivery Maintenance
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
PART A: SOFTWARE ENGINEERING CONCEPTS
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 Workflow
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 Benefi ts of Software Process Improvement
Chapter Review
For Further Reading
Key Terms
Problems
References
Chapter 4 Teams
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 Divide-and-Conquer
5.4 Separation of Concerns
5.5 Software Metrics
5.6 CASE
5.7 Taxonomy of CASE
5.8 Scope of CASE
5.9 Software Versions
5.10 Configuration Control
5.11 Build Tools
5.12 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.3 Execution-Based Testing
6.4 What Should Be Tested?
6.5 Testing versus Correctness Proofs
6.6 Who Should Perform Execution-Based Testing?
6.7 When Testing Stops
Chapter Review
For Further Reading
Key Terms
Problems
References
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 Review
For Further Reading
Key Terms
Problems
References
Chapter 8 Reusability and Portability
Learning Objectives
8.1 Reuse Concepts
8.2 Impediments to Reuse
8.3 Reuse Case Studies
8.4 Objects and Reuse
8.5 Reuse during Design and Implementation
8.6 More on Design Patterns
8.7 Categories of Design Patterns
8.8 Strengths and Weaknesses of Design Patterns
8.9 Reuse and the World Wide Web
8.10 Reuse and Postdelivery Maintenance
8.11 Portability
8.12 Why Portability?
8.13 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 B: THE WORKFLOWS OF THE SOFTWARE LIFE CYCLE
Chapter 10 Key Material from Part A
Learning Objective
10.1 Software Development: Theory versus Practice
10.2 Iteration and Incrementation
10.3 The Unified Process
10.4 Workflow Overview
10.5 Teams
10.6 Cost–Benefit Analysis
10.7 Metrics
10.8 CASE
10.9 Versions and Configurations
10.10 Testing Terminology
10.11 Execution-Based and Non-Execution-Based Testing
10.12 Modularity
10.13 Reuse
10.14 Software Project Management Plan
Chapter Review
Key Terms
Problems
Chapter 11 Requirements
Learning Objectives
11.1 Determining What the Client Needs
11.2 Overview of the Requirements Workflow
11.3 Understanding the Domain
11.4 The Business Model
11.5 Initial Requirements
11.6 Initial Understanding of the Domain: The MSG Foundation Case Study
11.7 Initial Business Model: The MSG Foundation Case Study
11.8 Initial Requirements: The MSG Foundation Case Study
11.9 Continuing the Requirements Workflow: The MSG Foundation Case Study
11.10 Revising the Requirements: The MSG Foundation Case Study
11.11 The Test Workflow: The MSG Foundation Case Study
11.12 The Classical Requirements Phase
11.13 Rapid Prototyping
11.14 Human Factors
11.15 Reusing the Rapid Prototype
11.16 CASE Tools for the Requirements Workflow
11.17 Metrics for the Requirements Workflow
11.18 Challenges of the Requirements Workflow
Chapter Review
For Further Reading
Key Terms
Case Study Key Terms
Problems
References
Chapter 12 Classical Analysis
Learning Objectives
12.1 The Specification Document
12.2 Informal Specifications
12.3 Structured Systems Analysis
12.4 Structured Systems Analysis: The MSG Foundation Case Study
12.5 Other Semiformal Techniques
12.6 Entity-Relationship Modeling
12.7 Finite State Machines
12.8 Petri Nets
12.9 Z
12.10 Other Formal Techniques
12.11 Comparison of Classical Analysis Techniques
12.12 Testing during Classical Analysis
12.13 CASE Tools for Classical Analysis
12.14 Metrics for Classical Analysis
12.15 Software Project Management Plan: The MSG Foundation Case Study
12.16 Challenges of Classical Analysis
Chapter Review
For Further Reading
Key Terms
Case Study Key Terms
Problems
References
Chapter 13 Object-Oriented Analysis
Learning Objectives
13.1 The Analysis Workflow
13.2 Extracting the Entity Classes
13.3 Object-Oriented Analysis: The Elevator Problem Case Study
13.4 Functional Modeling: The Elevator Problem Case Study
13.5 Entity Class Modeling: The Elevator Problem Case Study
13.6 Dynamic Modeling: The Elevator Problem Case Study
13.7 The Test Workflow: Object-Oriented Analysis
13.8 Extracting the Boundary and Control Classes
13.9 The Initial Functional Model: The MSG Foundation Case Study
13.10 The Initial Class Diagram: The MSG Foundation Case Study
13.11 The Initial Dynamic Model: The MSG Foundation Case Study
13.12 Revising the Entity Classes: The MSG Foundation Case Study
13.13 Extracting the Boundary Classes: The MSG Foundation Case Study
13.14 Extracting the Control Classes: The MSG Foundation Case Study
13.15 Use-Case Realization: The MSG Foundation Case Study
13.16 Incrementing the Class Diagram: The MSG Foundation Case Study
13.17 The Test Workflow: The MSG Foundation Case Study
13.18 The Specification Document in the Unified Process
13.19 More on Actors and Use Cases
13.20 CASE Tools for the Object-Oriented Analysis Workflow
13.21 Metrics for the Object-Oriented Analysis Workflow
13.22 Challenges of the Object-Oriented Analysis Workflow
Chapter Review
For Further Reading
Key Terms
Problems
References
Chapter 14 Design
Learning Objectives
14.1 Design and Abstraction
14.2 Operation-Oriented Design
14.3 Data Flow Analysis
14.4 Transaction Analysis
14.5 Data-Oriented Design
14.6 Object-Oriented Design
14.7 Object-Oriented Design: The Elevator Problem Case Study
14.8 Object-Oriented Design: The MSG Foundation Case Study
14.9 The Design Workflow
14.10 The Test Workflow: Design
14.11 The Test Workflow: The MSG Foundation Case Study
14.12 Formal Techniques for Detailed Design
14.13 Real-Time Design Techniques
14.14 CASE Tools for Design
14.15 Metrics for Design
14.16 Challenges of the Design Workflow
Chapter Review
For Further Reading
Key Terms
Problems
References
Chapter 15 Implementation
Learning Objectives
15.1 Choice of Programming Language
15.2 Fourth-Generation Languages
15.3 Good Programming Practice
15.4 Coding Standards
15.5 Code Reuse
15.6 Integration
15.7 The Implementation Workflow
15.8 The Implementation Workflow: The MSG Foundation Case Study
15.9 The Test Workflow: Implementation
15.10 Test Case Selection
15.11 Black-Box Unit-Testing Techniques
15.12 Black-Box Test Cases: The MSG Foundation Case Study
15.13 Glass-Box Unit-Testing Techniques
15.14 Code Walkthroughs and Inspections
15.15 Comparison of Unit-Testing Techniques
15.16 Cleanroom
15.17 Potential Problems When Testing Objects
15.18 Management Aspects of Unit Testing
15.19 When to Reimplement Rather than Debug a Code Artifact
15.20 Integration Testing
15.21 Product Testing
15.22 Acceptance Testing
15.23 The Test Workflow: The MSG Foundation Case Study
15.24 CASE Tools for Implementation
15.25 CASE Tools for the Test Workflow
15.26 Metrics for the Implementation Workflow
15.27 Challenges of the Implementation Workflow
Chapter Review
For Further Reading
Key Terms
Problems
References
Chapter 16 Postdelivery Maintenance
Learning Objectives
16.1 Development and Maintenance
16.2 Why Postdelivery Maintenance Is Necessary
16.3 What Is Required of Postdelivery Maintenance Programmers?
16.4 Postdelivery Maintenance Mini Case Study
16.5 Management of Postdelivery Maintenance
16.6 Maintenance of Object-Oriented Software
16.7 Postdelivery Maintenance Skills versus Development Skills
16.8 Reverse Engineering
16.9 Testing during Postdelivery Maintenance
16.10 CASE Tools for Postdelivery Maintenance
16.11 Metrics for Postdelivery Maintenance
16.12 Postdelivery Maintenance: The MSG Foundation Case Study
16.13 Challenges of Postdelivery Maintenance
Chapter Review
For Further Reading
Key Terms
Problems
References
Chapter 17 More on UML
Learning Objectives
17.1 UML Is Not a Methodology
17.2 Class Diagrams
17.3 Notes
17.4 Use-Case Diagrams
17.5 Stereotypes
17.6 Interaction Diagrams
17.7 Statecharts
17.8 Activity Diagrams
17.9 Packages
17.10 Component Diagrams
17.11 Deployment Diagrams
17.12 Review of UML Diagrams
17.13 UML and Iteration
Chapter Review
For Further Reading
Key Terms
Problems
References
Chapter 18 Emerging Technologies
Learning Objectives
18.1 Aspect-Oriented Technology
18.2 Model-Driven Technology
18.3 Component-Based Technology
18.4 Service-Oriented Technology
18.5 Comparison of Service-Oriented and Component-Based Technology
18.6 Social Computing
18.7 Web Engineering
18.8 Cloud Technology
18.9 Web 3.0
18.10 Computer Security
18.11 Model Checking
18.12 Present and Future
Chapter Review
For Further Reading
Key Terms
References
Bibliography
Appendix A: Term Project: Chocoholics Anonymous
Appendix B: Software Engineering Resources
Appendix C: Requirements Workflow: The MSG Foundation Case Study
Appendix D: Structured Systems Analysis: The MSG Foundation Case Study
Appendix E: Analysis Workflow: The MSG Foundation Case Study
Appendix F: Software Project Management Plan: The MSG Foundation Case Study
Appendix G: Design Workflow: The MSG Foundation Case Study
Appendix H: Implementation Workflow: The MSG Foundation Case Study (C++ Version)
Appendix I: Implementation Workflow: The MSG Foundation Case Study (Java Version)
Appendix J: Test Workflow: The MSG Foundation Case Study
Author Index
Subject Index