- Software Reuse
- Software Product Lines
- Modeling Requirements Variability in Software Product Lines: Feature Modeling
- Modeling Design Variability in Software Product Lines
- Reusable Design Patterns
- Modeling Single Systems with UML
- COMET: A UML-Based Software Design Method for Single Systems
- Modeling Software Product Lines with UML
- UML as a Standard
- Related Texts
- Summary
1.3 Modeling Requirements Variability in Software Product Lines: Feature Modeling
Features are an important concept in software product lines because they represent reusable requirements or characteristics of a product line. The concept of a feature is quite intuitive and applies to all product lines, not just software product lines. Consider a vehicle product line. Several different models of cars might share common characteristics. For example, a vehicle product line (analogous to a software product line) might have a common chassis, which represents a common feature; a choice of engine size, where each engine represents an alternative feature; and optional cruise control, which represents an optional feature. For any individual car (analogous to a software member of the product line), a buyer would have no choice of chassis (there is no choice because this is a common feature), would have a choice of engine size (one of the alternative features), and could decide whether to have cruise control or not (the optional feature).
The FODA (feature-oriented domain analysis) method uses features, which are organized into a feature tree (Cohen and Northrop 1998; Kang et al. 1990). Features may be mandatory, optional, or mutually exclusive. The feature tree is a composition hierarchy of features, in which some branches are mandatory, some are optional, and others are mutually exclusive. In FODA, features may be functional features (hardware or software), nonfunctional features (e.g., relating to security or performance), or parameters (e.g., red, yellow, or green). Features higher up in the tree are composite features if they contain other lower-level features.
Other product line methods have used the FODA approach for modeling product line features (Dionisi et al. 1998; Griss et al. 1998). Feature modeling has also been prominent in other product line methods, such as the EDLC method (Gomaa 1995; Gomaa and Farrukh 1999; Gomaa, Kerschberg, et al. 1996). The feature concept is not an object-oriented concept, and it is not used in UML modeling of single systems. Chapter 5 describes an approach for modeling and describing features in UML.