Skip to main content

2013 | Buch

Feature-Oriented Software Product Lines

Concepts and Implementation

verfasst von: Sven Apel, Don Batory, Christian Kästner, Gunter Saake

Verlag: Springer Berlin Heidelberg

insite
SUCHEN

Über dieses Buch

While standardization has empowered the software industry to substantially scale software development and to provide affordable software to a broad market, it often does not address smaller market segments, nor the needs and wishes of individual customers. Software product lines reconcile mass production and standardization with mass customization in software engineering. Ideally, based on a set of reusable parts, a software manufacturer can generate a software product based on the requirements of its customer. The concept of features is central to achieving this level of automation, because features bridge the gap between the requirements the customer has and the functionality a product provides. Thus features are a central concept in all phases of product-line development.

The authors take a developer’s viewpoint, focus on the development, maintenance, and implementation of product-line variability, and especially concentrate on automated product derivation based on a user’s feature selection. The book consists of three parts. Part I provides a general introduction to feature-oriented software product lines, describing the product-line approach and introducing the product-line development process with its two elements of domain and application engineering. The pivotal part II covers a wide variety of implementation techniques including design patterns, frameworks, components, feature-oriented programming, and aspect-oriented programming, as well as tool-based approaches including preprocessors, build systems, version-control systems, and virtual separation of concerns. Finally, part III is devoted to advanced topics related to feature-oriented product lines like refactoring, feature interaction, and analysis tools specific to product lines. In addition, an appendix lists various helpful tools for software product-line development, along with a description of how they relate to the topics covered in this book.

To tie the book together, the authors use two running examples that are well documented in the product-line literature: data management for embedded systems, and variations of graph data structures. They start every chapter by explicitly stating the respective learning goals and finish it with a set of exercises; additional teaching material is also available online. All these features make the book ideally suited for teaching – both for academic classes and for professionals interested in self-study.

Inhaltsverzeichnis

Frontmatter

Software Product Lines

Frontmatter
Chapter 1. Software Product Lines
Abstract
Software product lines aim at empowering software vendors to tailor software products to the requirements of individual customers. In this sense, software product lines follow a development that emerged in industrial manufacturing over the last 200 years. Starting with handcrafting of individual goods, the advent of mass production scaled the production process to large quantities, but neglected individualism, as all products were the same. With mass customization, individualism got back into the focus of attention. Manufacturers systematically planned and designed product lines to cover a whole spectrum of possible products and variations thereof, serving the individual needs and wishes of many customers. Software product lines take the same line and reconcile mass production and mass customization in software engineering.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 2. A Development Process for Feature-Oriented Product Lines
Abstract
In this chapter, we introduce basic concepts that arise in the engineering of feature-oriented software product lines. We narrow down the term feature , introduce an overall development process, and illustrate how to model and formalize variability in product lines.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake

Variability Implementation

Frontmatter
Chapter 3. Basic Concepts, Classification, and Quality Criteria
Abstract
In Part I, we described a process to develop feature-oriented product lines. It involves domain and application engineering, each comprising several phases, from domain and requirements analysis to implementation and product derivation.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 4. Classic, Language-Based Variability Mechanisms
Abstract
There are many ways to implement variable code; some have been used long before the advent of software product lines. Even a simple if statement offers a choice between different execution paths. To prevent cluttering of code with if statements, to enhance feature traceability, to provide extensibility without the need to change the original source code, and to provide compile-time (or load-time) variability, developers have identified many common programming patterns to support variability.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 5. Classic, Tool-Driven Variability Mechanisms
Abstract
Besides language-based techniques, which encode variability with available concepts within programming languages (discussed in the previous chapter), external tools can also be used to implement and manage variability.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 6. Advanced, Language-Based Variability Mechanisms
Abstract
After reading the chapter, you should be able to explain the key concepts of collaboration-based design and feature-oriented programming, understand the key mechanisms of AspectJ and write simple aspects in this language, implement product lines with feature-oriented and aspect-oriented languages and their combination, discuss trade-offs between these and previous implementation techniques, contrast feature-oriented and aspect-oriented languages regarding their key mechanisms select a suitable implementation technique for a given product line, critically discuss the conflict between preplanning and obliviousness, and discuss strategies of developing feature-oriented extensions of other code and noncode languages.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 7. Advanced, Tool-Driven Variability Mechanisms
Abstract
There are several attempts to support the development and management of feature-oriented product lines by means of tool support that exceeds traditional tools such as preprocessors, build systems, and version control systems. They typically build on concepts of build systems and conditional compilation, but provide tool support that goes beyond traditional systems. Most tool-driven solutions are available only in academic prototypes yet. We introduce three classes of tools that build on one another in Sects. 7.1–7.3, and discuss their strengths and weaknesses in Sect. 7.4.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake

Advanced Topics

Frontmatter
Chapter 8. Refactoring of Software Product Lines
Abstract
Refactoring is an important activity in software development, maintenance, and evolution.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 9. Feature Interactions
Abstract
Features can interaction in various was, both in positive and intended ways, as well as in critical and inadvertent ways. Communication between features is natural and often desired, but if not identified and managed properly, feature interactions can cause unexpected erroneous behaviors and result in critical system states. This chapter takes a closer look at feature interactions and how they manifest in program code and behavior. It discusses strategies to detect and mitigate them, especially from an implementation perspective.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Chapter 10. Analysis of Software Product Lines
Abstract
Variability raises new challenges for establishing correctness or any kind of functional or nonfunctional guarantees about programs. Traditional testing, type checking, static analysis, verification, or software and performance measurement are well-established for individual systems, but they do not scale to product lines when analyzing ever product in isolation, due to the huge configuration space. In this chapter, we discuss a broad range of strategies and methods to analyze a whole product line, explicitly considering variability in the analysis (hence the name variability-aware analysis). We cover basic analyses of feature models, analyses of mappings between features and implementations, and analyses of entire product-line implementations.
Sven Apel, Don Batory, Christian Kästner, Gunter Saake
Backmatter
Metadaten
Titel
Feature-Oriented Software Product Lines
verfasst von
Sven Apel
Don Batory
Christian Kästner
Gunter Saake
Copyright-Jahr
2013
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-642-37521-7
Print ISBN
978-3-642-37520-0
DOI
https://doi.org/10.1007/978-3-642-37521-7