Preface
1 Why Software Engineering?
1.1 What Is Software Engineering?
1.2 How Successful Have We Been?
1.3 What Is Good Software?
1.4 Who Does Software Engineering?
1.5 A Systems Approach
1.6 An Engineering Approach
1.7 Members of the Development Team
1.8 How Has Software Engineering Changed?
1.9 Information Systems Example
1.10 Real-Time Example
1.11 What This Chapter Means for You
1.12 What This Chapter Means for Your Development Team
1.13 What This Chapter Means for Researchers
1.14 Term Project
1.15 Key References
1.16 Exercises
2 Modeling the Process and Life Cycle
2.1 The Meaning of Process
2.2 Software Process Models
2.3 Tools and Techniques for Process Modeling
2.4 Practical Process Modeling
2.5 Information System Example
2.6 Real-Time Example
2.7 What This Chapter Means for You
2.8 What This Chapter Means for Your Development Team
2.9 What This Chapter Means for Researchers
2.10 Term Project
2.11 Key References
2.12 Exercises
3 Planning and Managing the Project
3.1 Tracking Progress
3.2 Project Personnel
3.3 Effort Estimation
3.4 Risk Management
3.5 the Project Plan
3.6 Process Models and Project Management
3.7 Information System Example
3.8 Real-Time Example
3.9 What This Chapter Means for You
3.10 What This Chapter Means for Your Development Team
3.11 What This Chapter Means for Researchers
3.12 Term Project
3.13 Key References
3.14 Exercises
4 Capturing the Requirements
4.1 The Requirements Process
4.2 Types of Requirements
4.3 Characteristics of Requirements
4.4 How to Express Requirements
4.5 Additional Requirements Notations
4.6 Prototyping Requirements
4.7 Requirements Documentation
4.8 Participants in the Requirements Process
4.9 Requirements Validation
4.10 Measuring Requirements
4.11 Choosing a Requirements Specification Technique
4.12 Information Systems Example
4.13 Real-Time Example
4.14 What This Chapter Means for You
4.15 What This Chapter Means for Your Development Team
4.16 What This Chapter Means for Researchers
4.17 Term Project
4.18 Key References
4.19 Exercises
5 Designing the System
5.1 What Is Design?
5.2 Decomposition and Modularity
5.3 Architectural Styles and Strategies
5.4 Issues in Design Creation
5.5 Characteristics of Good Design
5.6 Techniques for Improving Design
5.7 Design Evaluation and Validation
5.8 Documenting the Design
5.9 Information System Example
5.10 Real-Time Example
5.11 What This Chapter Means for You
5.12 What This Chapter Means for Your Development Team
5.13 What This Chapter Means for Researchers
5.14 Term Project
5.15 Key References
5.16 Exercises
6 Concerning Objects
6.1 What Is OO?
6.2 The OO Development Process
6.3 Use Cases
6.4 Representing OO: An Example Using UML
6.5 OO System Design
6.6 OO Program Design
6.7 OO Measurement
6.8 Information Systems Example
6.9 Real-Time Example
6.10 What This Chapter Means for You
6.11 What This Chapter Means for Your Development Team
6.12 What This Chapter Means for Researchers
6.13 Term Project
6.14 Key References
6.15 Exercises
7 Writing the Programs
7.1 Programming Standards and Procedures
7.2 Programming Guidelines
7.3 Documentation
7.4 Information Systems Example
7.5 Real-Time Example
7.6 What This Chapter Means for You
7.7 What This Chapter Means for Your Development Team
7.8 What This Chapter Means for Researchers
7.9 Term Project
7.10 Key References
7.11 Exercises
8 Testing the Programs
8.1 Software Faults and Failures
8.2 Testing Issues
8.3 Unit Testing
8.4 Integration Testing
8.5 Testing Object-Oriented Systems
8.6 Test Planning
8.7 Automated Testing Tools
8.8 When to Stop Testing
8.9 Information Systems Example
8.10 Real-Time Example
8.11 What This Chapter Means for You
8.12 What This Chapter Means for Your Development Team
8.13 What This Chapter Means for Researchers
8.14 Term Project
8.15 Key References
8.16 Exercises
9 Testing the System
9.1 Principles of System Testing
9.2 Function Testing
9.3 Performance Testing
9.4 Reliability, Availability, and Maintainability
9.5 Acceptance Testing
9.6 Installation Testing
9.7 Automated System Testing
9.8 Test Documentation
9.9 Testing Safety-Critical Systems
9.10 Information Systems Example
9.11 Real-Time Example
9.12 What This Chapter Means for You
9.13 What This Chapter Means for Your Development Team
9.14 What This Chapter Means for Researchers
9.15 Term Project
9.16 Key References
9.17 Exercises
10 Delivering the System
10.1 Training
10.2 Documentation
10.3 Information Systems Example
10.4 Real-Time Example
10.5 What This Chapter Means for You
10.6 What This Chapter Means for Your Development Team
10.7 What This Chapter Means for Researchers
10.8 Term Project
10.9 Key References
10.10 Exercises
11 Maintaining the System
11.1 The Changing System
11.2 The Nature of Maintenance
11.3 Maintenance Problems
11.4 Measuring Maintenance Characteristics
11.5 Maintenance Techniques and Tools
11.6 Software Rejuvenation
11.7 Information Systems Example
11.8 Real-Time Example
11.9 What This Chapter Means for You
11.l0 What This Chapter Means for Your Development Team
11.11 What This Chapter Means for Researchers
11.12 Term Project
11.13 Key References
11.14 Exercises
12 Evaluating Products, Processes, and Resources
12.1 Approaches to Evaluation
12.2 Selecting an Evaluation Technique
12.3 Assessment vs. Prediction
12.4 Evaluating Products
12.5 Evaluating Processes
12.6 Evaluating Resources
12.7 Information Systems Example
12.8 Real-Time Example
12.9 What This Chapter Means for You
12.10 What This Chapter Means for Your Development Team
12.11 What This Chapter Means for Researchers
12.12 Term Project
12.13 Key References
12.14 Exercises
13 Improving Predictions, Products, Processes, and Resourees
13.1 Improving Prediction
13.2 Improving Products
13.3 Improving Processes
13.4 Improving Resources
13.5 General Improvement Guidelines
13.6 Information Systems Example
13.7 Real-Time Example
13.8 What This Chapter Means for You
13.9 What This Chapter Means for Your Development Team
13.10 What This Chapter Means for Researchers
13.11 Term Project
13.12 Key References
13.13 Exercises
14 The Future of Software Engineering
14.1 How Have We Done?
14.2 Technology Transfer
14.3 Decision-Making in Software Engineering
14.4 The Future of Software Engineering
14.5 Term Project
14.6 Key References
14.7 Exercises
Annotated Bibliography
Index