I. OVERVIEW.
Object-Oriented Concepts.
Information Hiding.
Relationships between Classes.
Dynamic Modeling.
Sequential and Concurrent Applications.
Software Architecture and Components.
Summary.
3. Software Product Line Engineering.
Evolutionary Software Product Line Engineering Process.
Software Product Line Engineering Phases.
Forward and Reverse Evolutionary Engineering.
Integration of PLUS with the Spiral Model.
Integration of PLUS with Unified Software Development Process.
Requirements, Analysis, and Design Modeling in Software Product Lines.
Software Product Line Scoping.
Summary.
II. REQUIREMENTS, ANALYSIS, AND DESIGN MODELING FOR SOFTWARE PRODUCT LINES.
4. Use Case Modeling for Software Product Lines.
The Use Case Model in Single Systems.
The Use Case Model for Software Product Lines.
Identifying Use Cases.
Documenting Product Line Use Cases.
Example of a Use Case Description.
Modeling Variability in Use Cases.
Modeling Small Variations.
Modeling Variability with the Extend Relationship.
Modeling Variability with the Include Relationship.
Use Case Development Strategies.
Summary.
5. Feature Modeling for Software Product Lines.
Introduction to Feature Analysis.
Commonality/Variability Feature Analysis.
Features and Use Cases.
Feature Modeling with UML.
Feature Groups.
Advanced Feature Modeling with UML.
Summary.
6. Static Modeling in Software Product Lines.
Modeling Commonality and Variability in Product Lines.
Static Modeling of the Software Product Line Problem Domain.
Static Modeling of the Software Product Line Scope.
Static Modeling of Entity Classes.
Modeling Application Classes and Objects.
Summary.
7. Dynamic Interaction Modeling for Software Product Lines.
Dynamic Modeling in Single Systems.
Evolutionary Dynamic Modeling in Software Product Lines.
Kernel First Approach.
Software Product Line Evolution Approach.
Message Sequence Numbering on Interaction Diagrams.
Example of Evolutionary Dynamic Analysis for the Microwave Oven Product Line.
Summary.
8. Finite State Machines and Statecharts for Software Product Lines.
Finite State Machines for Kernel and Single Systems.
Hierarchical Statecharts.
Finite State Machines and Statecharts for Software Product Lines.
Inherited State Machines in Software Product Lines.
Parameterized State Machines in Software Product Lines.
Comparison of Approaches.
Kernel First Approach: State-Dependent Dynamic Analysis.
Software Product Line Evolution Approach.
Dynamic Analysis with Communicating State-Dependent Objects.
Summary.
9. Feature/Class Dependency Modeling for Software Product Lines.
Classes and Variation Points.
Class Reuse Categorization for Software Product Lines.
Feature/Class Dependencies.
Feature-Based Impact Analysis.
Feature/Object and Feature/Class Dependency Modeling in UML.
Summary.
10. Architectural Patterns for Software Product Lines.
Categorization of Software Patterns.
Software Architectural Structure Patterns.
Software Architectural Communication Patterns.
Software Architectural Transaction Patterns.
Documenting Software Architectural Patterns.
Applying Software Architectural Patterns.
Summary.
11. Software Product Line Architectural Design: Component-Based Design.
Software Architecture Issues.
Configurable Architectures and Software Components.
Steps in Designing Distributed Applications.
Design of Software Architecture.
Design of Component-Based Software Architecture.
Separation of Concerns in Component Design.
Aggregate and Composite Subsystems.
Component Structuring Criteria.
Design of Server Components.
Distribution of Data.
Design of Component Interfaces.
Design of Components.
Summary.
12. Software Application Engineering.
Phases in Software Application Engineering.
Software Application Engineering with the USDP.
Application Deployment.
Tradeoffs in Software Application Engineering.
Example of Software Application Engineering.
Summary.
III. CASE STUDIES.
13. Microwave Oven Software Product Line Case Study.
Problem Description.
Use Case Modeling.
Feature Modeling.
Static Modeling.
Dynamic Modeling.
Software Product Line Evolution.
Feature/Class Dependency Analysis.
Design Modeling.
Software Application Engineering.
14. Electronic Commerce Software Product Line Case Study.
Problem Description.
Use Case Modeling.
Feature Modeling.
Static Modeling.
Dynamic Modeling.
Software Product Line Evolution.
Feature/Class Dependency Analysis.
Design Modeling.
Software Application Engineering.
15. Factory Automation Software Product Line Case Study.
Problem Description.
Use Case Modeling.
Feature Modeling.
Static Modeling.
Dynamic Modeling.
Software Product Line Evolution.
Feature/Class Dependency Analysis.
Design Modeling.
Software Application Engineering.
Appendix A: Overview of the UML Notation.
UML Diagrams.
Use Case Diagrams.
Classes and Objects.
Class Diagrams.
Interaction Diagrams.
Statechart Diagrams.
Packages.
Concurrent Communication Diagrams.
Deployment Diagrams.
UML Extension Mechanisms.
Conventions Used in This Book.
Summary.
Appendix B: Catalog of Software Architectural Patterns.
Software Architectural Structure Patterns.
Software Architectural Communication Patterns.
Software Architectural Transaction Patterns.
Glossary.
Bibliography.
Index.