Feature model

Feature models are widely used during the whole product line development process and are commonly used as input to produce other assets such as documents, architecture definition, or pieces of code.

Feature models were first introduced in the Feature-Oriented Domain Analysis (FODA) method by Kang in 1990.

[1] Since then, feature modeling has been widely adopted by the software product line community and a number of extensions have been proposed.

[1] The focus of SPL development is on the systematic and efficient creation of similar programs.

FODA is an analysis devoted to identification of features in a domain to be covered by a particular SPL.

The most common are: As an example, the figure to the right illustrates how feature models can be used to specify and build configurable on-line shopping systems.

Every shopping system implements a catalogue, payment modules, security policies and optionally a search tool.

E-shops must implement a high or standard security policy (choose one), and can provide different payment modules: bank transfer, credit card or both of them.

Additionally, a cross-tree constraint forces shopping systems including the credit card payment module to implement a high security policy.

[3] If the upper bound is * the feature can be cloned as many times as we want (as long as the other constraints are respected).

The most common approach is to use mathematical logic to capture the semantics of a feature diagram.

[5] Each feature corresponds to a boolean variable and the semantics is captured as a propositional formula.

A product of the SPL is declaratively specified by selecting or deselecting features according to user's preferences.

A feature diagram representing a configurable e-shop system.