1. Introduction to Software Engineering. Key Concepts.
Why Engineer Software?
Elements of a Software Development Paradigm.
A Brief History of Software Engineering Techniques.
The Costs of Not Engineering Software.
Why Software Engineering Is Not Universal.
The Role of the Project.
Working in Teams.
Creating the Project Team.
CLASS PROJECT: Functional Requirements.
Questions for Review.
2. Object-Oriented Paradigm Overview. Key Concepts.
Getting Acquainted with the Class Project.
Object-Oriented Conceptualization.
The Software Life Cycle.
Object-Oriented Modeling.
Qualities of a Good Object-Oriented System.
Working in Teams.
Questions for Review.
3. Object-Oriented Analysis. Key Concepts.
Introduction to Requirements Analysis.
The Importance of Requirements Analysis.
Requirements Specification.
CASE STUDY: Library Management System Specification.
Evaluating the Requirements Specification.
Refining the Requirements Specification.
Verifying the Requirements Specification.
Propagating Requirements throughout Development.
The Process of Requirements Analysis.
Analyzing the CLASS PROJECT.
Working in Teams.
Questions for Review.
4. Product Design. Key Concepts.
Objectives of Design.
Class Design versus Product Design.
Product Design Overview and Objectives.
Object Persistence.
CASE STUDY: Object Persistence in LMS.
Process Architecture.
CASE STUDY: Interprocess Communication in LMS.
CLASS PROJECT: Interprocess Communication in Galaxy Sleuth.
User Interfaces.
User Interface Design.
User Interface Design Principles.
CASE STUDY: User Interface for LMS.
Working in Teams.
Class Project Product Design.
Questions for Review.
5. Class Design. Key Concepts.
The Class Design Process.
More UML.
Objectives of the Class Design Phase.
Verification of the Class Design.
Designing the CLASS PROJECT.
Questions for Review.
6. CASE STUDY: Game2D with Method Design. Key Concepts.
Overview.
Requirements Specification.
Refined Requirements Specification.
Requirements Analysis.
Product Design.
Class Design.
Method Design.
Questions for Review.
7. Implementation. Key Concepts.
Introduction.
Implementation Approaches.
Implementation Plan.
CASE STUDY: Implementation Plan for the LMS.
Programming Style.
Comments and Internal Documentation.
Project Coding Standards.
Implementing the CLASS PROJECT.
Questions for Review.
8. Testing. Key Concepts.
What Is Testing?
Principles of Object-Oriented Testing.
Definitions.
Testing Steps.
Special Issues for Testing Object-Oriented Systems.
CASE STUDY: Testing the LMS.
Testing the CLASS PROJECT.
Testing in the Face of Change: Configuration Management.
Questions for Review.
9. Project Management. Key Concepts.
Introduction.
Project Manager Responsibilities.
Configuration Management.
Project Planning and Monitoring.
Project Teams.
Risk Management.
Reducing Risk.
Further Readings on Risk Management.
CASE STUDY: Risk Analysis in the LMS.
Questions for Review.
10. Design Patterns. Key Concepts.
Motivation for Design Patterns.
What Are Design Patterns?
Exploring Design Patterns.
Questions for Review.
11. Software Development Horror Stories. Key Concepts.
Introduction.
Therac-25.
CONFIRM.
Telephones and Communications.
12. Completing and Presenting the CLASS PROJECT. Succeeding with the Class Project.
Reflecting on the Project.
Presenting the Project.