Feature modeling is a method and notation to represent common and variable features of the systems in a system family. It is the most important contribution of domain analysis which is the first step of Domain Engineering.
The results of feature analysis can be documented using feature diagrams, which reveal the kinds of variability contained in the design space.
Example : car product line
A feature diagram may be supplemented with additional information including constraints, binding times, default attribute values and default features.
Four cases of features:
- Concrete features: Such as data storage or sorting may be realized as individual components.
- Aspectual features: Such as logging, synchronization and can be realized using aspect technologies.
- Abstract features: Such as performance requirements usually map to some configuration of components and/or aspects.
- Grouping features: May represent a variation point and map to a common interface of plug-compatible components.