Feature Modeling

Feature Modeling is the activity of modeling the common and variable properties of concepts. Features are primarily used in order to discriminate between instances (between choices). The quality of features is related to properties, such as primitiveness, generality and independence. A feature represent the intention of a concept. Features may occure at any level, for example high-level system requirements, architectural level, subsystem and component level. A feature should have a concise and descriptive name - such as in the case of design patterns. The name enriches the vocabulary for describing domain concepts.

The reason why we should define feature modeling around concepts and not classes of objects is because we want to model features of any elements or structures of a domain, not just objects. This way we should use feature modeling together with various other modeling techniques such as use case modeling, class modeling, specifications of functions, procedures and so on.

Feature Diagram

A feature diagram consists of a set of nodes, a set of directed edges and a set of edge decorations. The nodes and edges form a tree. The edge decorations are drawn as arcs connecting subsets or all of the edges originating from the same node. Effectively edge decorations define a partitioning of the subnodes of a node (divide subnodes into a number of disjoint subsets). The root of a feature diagram represent a concept (e.g. a car). Features can be madatory, optional, alternative or or-features.

Each feature should be annotated with stakeholders, a list of exemplar systems (e.i. systems including the feature), constraints and dependency rules, availability sites (to whom a variable feature is available, binding mode (staticly, changeably or dynamicly bound) and priorities.

A feature can be decompoised into either a modular or aspectual decomposition, e.i.different perspectives for each aspect none of which is sufficient to capture the entire concept. For more details refer to Aspect Oriented Programming.

References
Feature modeling guidelines