Cover
Copyright
Title Page
Table of Contents
Foreword
Preface
Acknowledgments
PART I: Getting Started
Chapter 1 Introduction to Software Engineering
1.1 Introduction: Software Engineering Failures
1.2 What Is Software Engineering?
1.3 Software Engineering Concepts
1.4 Software Engineering Development Activities
1.5 Managing Software Development
1.6 ARENA Case Study
1.7 Further Reading
1.8 Exercises
Chapter 2 Modeling with UML
2.1 Introduction
2.2 An Overview of UML
2.3 Modeling Concepts
2.4 A Deeper View into UML
2.5 Further Readings
2.6 Exercises
Chapter 3 Project Organization and Communication
3.1 Introduction: A Rocket Example
3.2 An Overview of Projects
3.3 Project Organization Concepts
3.4 Project Communication Concepts
3.5 Organizational Activities
3.6 Further Readings
3.7 Exercises
PART II: Dealing with Complexity
Chapter 4 Requirements Elicitation
4.1 Introduction: Usability Examples
4.2 An Overview of Requirements Elicitation
4.3 Requirements Elicitation Concepts
4.4 Requirements Elicitation Activities
4.5 Managing Requirements Elicitation
4.6 ARENA Case Study
4.7 Further Readings
4.8 Exercises
Chapter 5 Analysis
5.1 Introduction: An Optical Illusion
5.2 An Overview of Analysis
5.3 Analysis Concepts
5.4 Analysis Activities: From Use Cases to Objects
5.5 Managing Analysis
5.6 ARENA Case Study
5.7 Further Readings
5.8 Exercises
Chapter 6 System Design: Decomposing the System
6.1 Introduction: A Floor Plan Example
6.2 An Overview of System Design
6.3 System Design Concepts
6.4 System Design Activities: From Objects to Subsystems
6.5 Further Readings
6.6 Exercises
Chapter 7 System Design: Addressing Design Goals
7.1 Introduction: A Redundancy Example
7.2 An Overview of System Design Activities
7.3 Concepts: UML Deployment Diagrams
7.4 System Design Activities: Addressing Design Goals
7.5 Managing System Design
7.6 ARENA Case Study
7.7 Further Readings
7.8 Exercises
Chapter 8 Object Design: Reusing Pattern Solutions
8.1 Introduction: Bloopers
8.2 An Overview of Object Design
8.3 Reuse Concepts: Solution Objects, Inheritance, and Design Patterns
8.4 Reuse Activities: Selecting Design Patterns and Components
8.5 Managing Reuse
8.6 ARENA Case Study
8.7 Further Readings
8.8 Exercises
Chapter 9 Object Design: Specifying Interfaces
9.1 Introduction: A Railroad Example
9.2 An Overview of Interface Specification
9.3 Interface Specification Concepts
9.4 Interface Specification Activities
9.5 Managing Object Design
9.6 ARENA Case Study
9.7 Further Readings
9.8 Exercises
Chapter 10 Mapping Models to Code
10.1 Introduction: A Book Example
10.2 An Overview of Mapping
10.3 Mapping Concepts
10.4 Mapping Activities
10.5 Managing Implementation
10.6 ARENA Case Study
10.7 Further Readings
10.8 Exercises
Chapter 11 Testing
11.1 Introduction: Testing The Space Shuttle
11.2 An Overview of Testing
11.3 Testing Concepts
11.4 Testing Activities
11.5 Managing Testing
11.6 Further Readings
11.7 Exercises
PART III: Managing Change
Chapter 12 Rationale Management
12.1 Introduction: Slicing Ham
12.2 An Overview of Rationale
12.3 Rationale Concepts
12.4 Rationale Activities: From Issues to Decisions
12.5 Managing Rationale
12.6 Further Readings
12.7 Exercises
Chapter 13 Configuration Management
13.1 Introduction: An Aircraft Example
13.2 An Overview of Configuration Management
13.3 Configuration Management Concepts
13.4 Configuration Management Activities
13.5 Managing Configuration Management
13.6 Further Readings
13.7 Exercises
Chapter 14 Project Management
14.1 Introduction: The STS-51L Launch Decision
14.2 An Overview of Project Management
14.3 Project Management Concepts
14.4 Classical Project Management Activities
14.5 Agile Project Management Activities
14.6 Further Readings
14.7 Exercises
Chapter 15 Software Life Cycle
15.1 Introduction: Polynesian Navigation
15.2 IEEE 1074: Standard for Developing Life Cycle Processes
15.3 Characterizing the Maturity of Software Life Cycle Models
15.4 Life Cycle Models
15.5 Further Readings
15.6 Exercises
Chapter 16 Methodologies: Putting It All Together
16.1 Introduction: The First Ascent of K2
16.2 Project Environment
16.3 Methodology Issues
16.4 A Spectrum of Methodologies
16.5 Case Studies
16.6 Further Readings
16.7 Exercises
PART IV: Appendices
Appendix A: Design Patterns
A.1 Abstract Factory: Encapsulating Platforms
A.2 Adapter: Wrapping Around Legacy Code
A.3 Bridge: Allowing for Alternate Implementations
A.4 Command: Encapsulating Control Flow
A.5 Composite: Representing Recursive Hierarchies
A.6 Facade: Encapsulating Subsystems
A.7 Observer: Decoupling Entities from Views
A.8 Proxy: Encapsulating Expensive Objects
A.9 Strategy: Encapsulating Algorithms
A.10 Heuristics for Selecting Design Patterns
Appendix B: Glossary
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Appendix C: Bibliography
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y