Book contents
- Frontmatter
- Contents
- Preface
- Annotated Table of Contents
- Acknowledgments
- PART I Overview
- PART II Software Modeling
- PART III Architectural Design
- 12 Overview of Software Architecture
- 13 Software Subsystem Architectural Design
- 14 Designing Object-Oriented Software Architectures
- 15 Designing Client/Server Software Architectures
- 16 Designing Service-Oriented Architectures
- 17 Designing Component-Based Software Architectures
- 18 Designing Concurrent and Real-Time Software Architectures
- 19 Designing Software Product Line Architectures
- 20 Software Quality Attributes
- PART IV Case Studies
- Appendix A Catalog of Software Architectural Patterns
- Appendix B Teaching Considerations
- Glossary
- Answers to Exercises
- Bibliography
- Index
19 - Designing Software Product Line Architectures
from PART III - Architectural Design
Published online by Cambridge University Press: 05 June 2012
- Frontmatter
- Contents
- Preface
- Annotated Table of Contents
- Acknowledgments
- PART I Overview
- PART II Software Modeling
- PART III Architectural Design
- 12 Overview of Software Architecture
- 13 Software Subsystem Architectural Design
- 14 Designing Object-Oriented Software Architectures
- 15 Designing Client/Server Software Architectures
- 16 Designing Service-Oriented Architectures
- 17 Designing Component-Based Software Architectures
- 18 Designing Concurrent and Real-Time Software Architectures
- 19 Designing Software Product Line Architectures
- 20 Software Quality Attributes
- PART IV Case Studies
- Appendix A Catalog of Software Architectural Patterns
- Appendix B Teaching Considerations
- Glossary
- Answers to Exercises
- Bibliography
- Index
Summary
A software product line (SPL) consists of a family of software systems that have some common functionality and some variable functionality (Clements and Northop 2002; Parnas 1979; Weiss and Lai 1999). Software product line engineering involves developing the requirements, architecture, and component implementations for a family of systems, from which products (family members) are derived and configured. The problems of developing individual software systems are scaled upwards when developing SPLs because of the increased complexity due to variability management.
As with single systems, a better understanding of a SPL can be obtained by considering the multiple views, such as requirements models, static models, and dynamic models of the product line. A graphical modeling language such as UML helps in developing, understanding, and communicating the different views. A key view in the multiple views of a SPL is the feature modeling view. The feature model is crucial for managing variability and product derivation because it describes the product line requirements in terms of commonality and variability, and defines the product line dependencies. Furthermore, it is desirable to have a development approach that promotes software evolution, such that original development and subsequent maintenance are both treated using feature-driven evolution.
This chapter gives an overview of designing SPL architectures using the Product Line UML-based Software) engineering (PLUS) method. PLUS builds on the COMET method by considering the added dimension of variability in each of the modeling views. Designing SPLs is covered in considerable detail in the author's book on this topic (Gomaa 2005a).
- Type
- Chapter
- Information
- Software Modeling and DesignUML, Use Cases, Patterns, and Software Architectures, pp. 344 - 356Publisher: Cambridge University PressPrint publication year: 2011