5.4.  Family Models

The Family Model describes the solution family in terms of software architectural elements. Figure 5.5, “Basic structure of Family Models” shows the basic structure of Family Models as a UML class diagram. Both models are derived from the SolutionComponentModel class. The main difference between the two models is that Family Models contain variable elements guarded by restriction expressions. Since Concrete Component Models are derived from Family Models and represent configured variants with resolved variabilities there are no restrictions used in Concrete Component Models. Please note, that older designations of Family Models are Family Component Model or even just Component Model. Following just Family Model will be used to designate those models with restrictions and thus unresolved variability.

Figure 5.5. Basic structure of Family Models

Basic structure of Family Models

The components of a family are organized into a hierarchy that can be of any depth. A component (with its parts and source elements) is only included in a result configuration when its parent is included and any restrictions associated with it are fulfilled. For top-level components only their restrictions are relevant.

An example Family Model is shown below:


This model exhibits a hierarchical component structure. System is the top-level component, Memory its only sub component. Inside this component are two parts, a class, and a flag. The class is realized by two source elements. Selecting an element of the family model will show its properties in the Properties view.

A key capability that makes the Family Modelling language more powerful than other component description languages is its support of flexible rules for the inclusion of components, parts, and source elements. This is achieved by placing restrictions on each of these elements.

By default every element is included in a variant if its parent element is included, or if it has no parent element. Restrictions specify conditions under which a configuration element may be excluded from a configuration.

It is possible to put restrictions on any element, and on element properties and relations. An arbitrary number of restrictions are allowed. Restrictions are evaluated in the order in which they are listed. If a restriction rule evaluates to true , the restricted element will be included. That is, a set of restrictions is evaluated as a disjunction of these restriction.

A restriction rule may contain arbitrary (pvSCL) statements. The most useful rule is <feature name/id) which evaluates to true if the feature selection contains the named feature.

As for features, each element (component, part, and source element) may have relations to other elements. The supported relations are described in Section 9.2, “Element Relation Types” .

When a configuration is checked, the configuration may be regarded as invalid if any relations are not satisfied.