| |
| |
Preface | |
| |
| |
The Issue of Scale | |
| |
| |
This Edition Compared with the First | |
| |
| |
How Instructors Can Use This Book | |
| |
| |
Acknowledgments | |
| |
| |
| |
Introduction To Software Engineering | |
| |
| |
| |
The Goals and Terminology of Software Engineering | |
| |
| |
What is Software Engineering | |
| |
| |
Why Software Engineering Is Critical: Software Disasters | |
| |
| |
Why Software Fails and Succeeds | |
| |
| |
Software Engineering Activities | |
| |
| |
Software Engineering Principles | |
| |
| |
Ethics in Software Engineering | |
| |
| |
Case Studies | |
| |
| |
Summary | |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Introduction to Quality and Metrics in Software Engineering | |
| |
| |
| |
The Meaning of Software Quality | |
| |
| |
| |
Defects in Software | |
| |
| |
| |
Verification and Validation | |
| |
| |
| |
Planning for Quality | |
| |
| |
| |
Metrics | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Software Process | |
| |
| |
| |
Software Process | |
| |
| |
| |
The Activities of Software Process | |
| |
| |
| |
Software Process Models | |
| |
| |
| |
Case Study: Student Team Guidance | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Agile Software Processes | |
| |
| |
| |
Agile History and Agile Manifesto | |
| |
| |
| |
Agile Principles | |
| |
| |
| |
Agile Methods | |
| |
| |
| |
Agile Processes | |
| |
| |
| |
Integrating Agile with Non-Agile Processes | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Quality in the Software Process | |
| |
| |
| |
Principles of Managing Quality | |
| |
| |
| |
Managing Quality in Agile Processes | |
| |
| |
| |
Quality Planning | |
| |
| |
| |
Inspections | |
| |
| |
| |
QA Reviews and Audits | |
| |
| |
| |
Defect Management | |
| |
| |
| |
Process Improvement and Process Metrics | |
| |
| |
| |
Organization-Level Quality and the CMMI | |
| |
| |
| |
Case Study | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Software Configuration Management | |
| |
| |
| |
Software Configuration Management Goals | |
| |
| |
| |
SCM Activities | |
| |
| |
| |
Configuration Management Plans | |
| |
| |
| |
Configuration Management Systems | |
| |
| |
| |
Case Study: Encounter Video Game | |
| |
| |
| |
Case Study: Eclipse | |
| |
| |
| |
Student Team Guidance: Configuration Management | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Project Management | |
| |
| |
| |
Principles of Software Project Management I: Organization, Tools, and Risk Management | |
| |
| |
| |
Software Project Organization | |
| |
| |
| |
Team Size | |
| |
| |
| |
Geographically Distributed Development | |
| |
| |
| |
The Team Software Process | |
| |
| |
| |
Software Project Tools and Techniques | |
| |
| |
| |
Risk Management | |
| |
| |
| |
Student Team Guidance: Organizing the Software Projec's Management | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Principles of Software Project Management II: Estimation, Scheduling, and Planning | |
| |
| |
| |
Cost Estimation | |
| |
| |
| |
Scheduling | |
| |
| |
| |
The Software Project Management Plan | |
| |
| |
| |
Case Study: Encounter Project Management Plan | |
| |
| |
| |
Case Study: Project Management in Eclipse | |
| |
| |
| |
Case Study: Project Management for OpenOffice | |
| |
| |
| |
Case Study: Student Team Guidance | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Quality and Metrics in Project Management | |
| |
| |
| |
Cultivating and Planning Internal Quality | |
| |
| |
| |
Project Metrics | |
| |
| |
| |
Using Metrics for Improvement | |
| |
| |
| |
Software Verification and Validation Plan | |
| |
| |
| |
Case Study: Software Verification and Validation Plan for Encounter | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Requirements Analysis | |
| |
| |
| |
Principles of Requirements Analysis | |
| |
| |
| |
The Value of Requirements Analysis | |
| |
| |
| |
Sources of Requirements | |
| |
| |
| |
High-level vs. Detailed | |
| |
| |
Requirements | |
| |
| |
| |
Types of Requirements | |
| |
| |
| |
Nonfunctional Requirements | |
| |
| |
| |
Documenting Requirements | |
| |
| |
| |
Traceability | |
| |
| |
| |
Agile Methods and Requirements | |
| |
| |
| |
Updating the Project to Reflect Requirements Analysis | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Analyzing High-Level Requirements | |
| |
| |
| |
Examples of Customer Wants | |
| |
| |
| |
Stakeholder Vision | |
| |
| |
| |
The Interview and Documentation Process | |
| |
| |
| |
Writing an Overview | |
| |
| |
| |
Describing Main Functions and Used Cases | |
| |
| |
| |
Agile Methods for High-Level Requirements | |
| |
| |
| |
Specifying User Interfaces: High Level | |
| |
| |
| |
Security Requirements | |
| |
| |
| |
Using Diagrams for High-Level Requirements | |
| |
| |
| |
Case Study: High-Level Software Requirements Specifications (SRS) for the Encounter Video Game | |
| |
| |
| |
Case Study: High-Level Requirements for Eclipse | |
| |
| |
| |
Case Study: High-Level Requirements for OpenOffice | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Analyzing Detailed Requirements | |
| |
| |
| |
The Meaning of Detailed Requirements | |
| |
| |
| |
Organizing Detailed Requirements | |
| |
| |
| |
User Interfaces: Detailed Requirements | |
| |
| |
| |
Detailed Security Requirements | |
| |
| |
| |
Error Conditions | |
| |
| |
| |
Traceability of Detailed Requirements | |
| |
| |
| |
Using Detailed Requirements to Manage Projects | |
| |
| |
| |
Prioritizing Requirements | |
| |
| |
| |
Associating Requirements with Tests | |
| |
| |
| |
Agile Methods for Detailed Requirements | |
| |
| |
| |
Using Tools and the Web for Requirements Analysis | |
| |
| |
| |
The Effects on Projects of the Detailed Requirements Process | |
| |
| |
| |
Student Project Guide: Requirements for the Encounter Case Study | |
| |
| |
| |
Case Study: Detailed Requirements for the Encounter Video Game | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Quality and Metrics in Requirements Analysis | |
| |
| |
| |
Quality of Requirements for Agile Projects | |
| |
| |
| |
Accessibility of Requirements | |
| |
| |
| |
Comprehensiveness of Requirements | |
| |
| |
| |
Understandability of Requirements | |
| |
| |
| |
Un-ambiguity of Requirements | |
| |
| |
| |
Consistency of Requirements | |
| |
| |
| |
Prioritization of Requirements | |
| |
| |
| |
Security and High-Level Requirements | |
| |
| |
| |
Self-Completeness of Requirements | |
| |
| |
| |
Testability of Requirements | |
| |
| |
| |
Traceability of Requirements | |
| |
| |
| |
Metrics for Requirements Analysis | |
| |
| |
| |
Inspecting Detailed Requirements | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
| |
Online Chapter - Formal and Emerging Methods in Requirements Analysis as follows: An Introduction | |
| |
| |
| |
Provable Requirements Method | |
| |
| |
| |
Introduction to Formal Methods | |
| |
| |
| |
Mathematical Preliminaries | |
| |
| |
| |
The Z-Specification Language | |
| |
| |
| |
The B Language System | |
| |
| |
| |
Trade-offs for Using a B-like system | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Software Design | |
| |
| |
| |
Principles of Software Design | |
| |
| |
| |
The Goals of Software Design | |
| |
| |
| |
Integrating Design Models | |
| |
| |
| |
Frameworks | |
| |
| |
| |
IEEE Standards for Expressing Designs | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
| |
The Unified Modeling Language | |
| |
| |
| |
Classes in UML | |
| |
| |
| |
Class Relationships in UML | |
| |
| |
| |
Multiplicity | |
| |
| |
| |
Inheritance | |
| |
| |
| |
Sequence Diagrams | |
| |
| |
| |
State Diagrams | |
| |
| |
| |
Activity Diagrams | |
| |
| |
| |
Data Flow Models | |
| |
| |
| |
A Design Example with UML | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Software Design Patterns | |
| |
| |
| |
Examples of a Recurring Design Purpose | |
| |
| |
| |
An Introduction to Design Patterns | |
| |
| |
| |
Summary of Design Patterns by Type: Creational, Structural, and Behavioral | |
| |
| |
| |
Characteristics of Design Patterns: Viewpoints, Roles, and Levels | |
| |
| |
| |
Selected Creational Design Patterns | |
| |
| |
| |
Selected Structural Design Patterns | |
| |
| |
| |
Selected Behavioral Design Patterns | |
| |
| |
| |
Design Pattern Forms: Delegation and Recursion | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Software Architecture | |
| |
| |
| |
A Categorization of Architectures | |
| |
| |
| |
Software Architecture Alternatives and Their Class Models | |
| |
| |
| |
Trading Off Architecture Alternatives | |
| |
| |
| |
Tools for Architectures | |
| |
| |
| |
IEEE Standards for Expressing Designs | |
| |
| |
| |
Effects of Architecture Selection on the Project Plan | |
| |
| |
| |
Case Study: Preparing to Design Encounter (Student Project Guide continued) | |
| |
| |
| |
Case Study: Software Design Document for the Role-Playing Video Game Framework | |
| |
| |
| |
Case Study: Software Design Document for Encounter (Uses the Framework) | |
| |
| |
| |
Case Study: Architecture of Eclipse | |
| |
| |
| |
Case Study: OpenOffice Architecture | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Detailed Design | |
| |
| |
| |
Relating Use Cases, Architecture, and Detailed Design | |
| |
| |
| |
A Typical Road Map for the Detailed Design Process | |
| |
| |
| |
Object-Oriented Design Principles | |
| |
| |
| |
Designing against Interfaces | |
| |
| |
| |
Specifying Classes, Functions, and Algorithms | |
| |
| |
| |
Reusing Components | |
| |
| |
| |
Sequence and Data Flow Diagrams for Detailed Design | |
| |
| |
| |
Detailed Design and Agile Processes | |
| |
| |
| |
Design in the Unified Development Process | |
| |
| |
| |
IEEE Standard 890 for Detailed Design | |
| |
| |
| |
Updating a Project with Detailed Design | |
| |
| |
| |
Case Study: Detailed Design of Encounter | |
| |
| |
| |
Case Study: Detailed Design of Eclipse | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Design Quality and Metrics | |
| |
| |
| |
Degree of Understandability, Cohesion, and Coupling | |
| |
| |
| |
Degree of Sufficiency as a Quality Goal | |
| |
| |
| |
Degree of Robustness as a Quality Goal | |
| |
| |
| |
Degree of Flexibility as a Design Quality Goal | |
| |
| |
| |
Degree of Reusability as a Design Quality Goal | |
| |
| |
| |
Degree of Time Efficiency as a Design Quality Measure | |
| |
| |
| |
Degree of Space Efficiency as a Design Quality Measure | |
| |
| |
| |
Degree of Reliability as a Design Quality Measure | |
| |
| |
| |
Degree of Security as a Design Quality Measure | |
| |
| |
| |
Assessing Quality in Architecture Selection | |
| |
| |
| |
Assessing the Quality of Detailed Designs | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Online Chapter - Advanced and Emerging Methods in Software Design | |
| |
| |
| |
Designing in a Distributed Environment | |
| |
| |
| |
Introduction to Aspect-Oriented Programming | |
| |
| |
| |
Designing for Security with UMLsec | |
| |
| |
| |
Model-Driven Architectures | |
| |
| |
| |
The Formal Design Process in B | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Implementation | |
| |
| |
| |
Principles of Implementation | |
| |
| |
| |
Agile and Non-Agile Approaches to Implementation | |
| |
| |
| |
Choosing a Programming Language | |
| |
| |
| |
Identifying Classes | |
| |
| |
| |
Defining Methods | |
| |
| |
| |
Implementation Practices | |
| |
| |
| |
Defensive Programming | |
| |
| |
| |
Coding Standards | |
| |
| |
| |
Comments | |
| |
| |
| |
Tools and Environments for Programming | |
| |
| |
| |
Case Study: Encounter Implementation | |
| |
| |
| |
Case Study: Eclipse | |
| |
| |
| |
Case Study: OpenOffice | |
| |
| |
| |
Student Team Guidance for Implementation | |
| |
| |
| |
Summary | |
| |
| |
| |
Code Listings Referred to in This Chapter | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Quality and Metrics in Implementation | |
| |
| |
| |
Quality of Implementation | |
| |
| |
| |
Code Inspections | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
| |
Refactoring | |
| |
| |
| |
Big Refactorings | |
| |
| |
| |
Composing Methods | |
| |
| |
| |
Moving Features between Objects | |
| |
| |
| |
Organizing Data | |
| |
| |
| |
Generalization | |
| |
| |
| |
Introducing Modules | |
| |
| |
| |
Refactoring in Projects | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Testing And Maintenance | |
| |
| |
| |
Introduction to Software Testing | |
| |
| |
| |
Testing Early and Often and the Agile Connection | |
| |
| |
| |
Retesting: Regression Testing | |
| |
| |
| |
Black Box and White Box Testing | |
| |
| |
| |
Unit Testing vs. Post-Unit Testing | |
| |
| |
| |
Testing Object-Oriented Implementations | |
| |
| |
| |
Documenting Tests | |
| |
| |
| |
Test Planning | |
| |
| |
| |
Testing Test Suites by Fault Injection | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
| |
Unit Testing | |
| |
| |
| |
The Sources of Units for Unit Testing | |
| |
| |
| |
Unit Test Methods | |
| |
| |
| |
Testing Methods | |
| |
| |
| |
Test-Driven Development | |
| |
| |
| |
Case Study: Encounter Video Game | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Module and Integration Testing | |
| |
| |
| |
Stubs and Drivers | |
| |
| |
| |
Testing a Class | |
| |
| |
| |
Integration | |
| |
| |
| |
Daily Builds | |
| |
| |
| |
Interface Testing | |
| |
| |
| |
Module Integration | |
| |
| |
| |
Case Study: Class Test for Encounter | |
| |
| |
| |
Case Study: Encounter Integration Plan | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Testing at the System Level | |
| |
| |
| |
Functional Testing | |
| |
| |
| |
Nonfunctional Testing | |
| |
| |
| |
Testing with Lightweight Requirements | |
| |
| |
| |
Testing Shortly Before Release | |
| |
| |
| |
Case Study: Encounter Software Test Documentation | |
| |
| |
| |
Case Study: Eclipse | |
| |
| |
| |
Case Study: OpenOffice | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
| |
Software Maintenance | |
| |
| |
| |
Types of Software Maintenance | |
| |
| |
| |
Issues of Software Maintenance | |
| |
| |
| |
Maintenance Process | |
| |
| |
| |
IEEE Maintenance Standards | |
| |
| |
| |
Software Evolution | |
| |
| |
| |
Maintenance Metrics | |
| |
| |
| |
Case Studies | |
| |
| |
| |
Summary | |
| |
| |
| |
Exercises | |
| |
| |
Bibliography | |
| |
| |
Glossary | |
| |
| |
Index | |