Feature : public <<atpStructureElement>> class
Created: 2006-06-28 17:49:03
Modified: 2010-04-29 13:25:54
Project:
Advanced:
<p>A Feature represents a characteristic or trait of some object of consideration. The actual object of consideration depends on the particular purpose of the feature's containing feature model.<br/></p><p><br/></p><p>Example 1: The core technical feature model on vehicle level defines the technical properties of the complete system, i.e., vehicle. So its object of consideration is the vehicle as a whole and therefore its features represent characteristics or traits of the vehicle as a whole.<br/></p><p><br/></p><p>Example 2: The public feature model of some function F in the FDA defines the features of this particular software function. So its object of consideration is function F and therefore its features represent characteristics or traits of this function F.<br/></p><p><br/></p><p><br/></p><p>Semantics:<br/></p><p>Feature is a (non)functional characteristic, constraint or property that can be present or not in a (vehicle) product line.<br/></p><p><br/></p><p><br/></p><p>Extension:<br/></p><p>Class<br/></p>
Attribute Details
public String
  cardinality
Notes: Specifies the Feature's cardinality stating how often this feature may be selected during configuration.<br /><br />Typical cardinalities include:<br /><br />- A cardinality of 0..1 means that this Feature is optional, i.e. it can be selected or deselected during configuration.<br /><br />- A cardinality of 1 means that this Feature is mandatory, i.e. it cannot be deselected but is always present in a configuration if its parent feature is present; mandatory root features are present in all configurations.<br /><br />- A cardinality of 0 means that this Feature is abstract, i.e. it cannot be selected and is never present in any configuration. This can be used to completely disable a feature and, in the case of non-leaf features, the whole subtree below it, for example to tentatively remove a subtree without (yet) deleting it completely from the model.<br /><br />- A cardinality with an upper bound greater than 1 or * (infinite), such as [0..2], [1..*], or [2..8], means that this Feature is cloned, i.e. it may be selected more than once during configuration. If such a feature is actually selected more than once in a particular configuration, then its entire subtree may be configured differently for each selection. Cloned features are in fact instantiated during configuration and each instance is provided with a name.<br /><br />Note that using cloned features, i.e. features with cardinality having an upper bound greater than 1, has far-reaching consequences for how Features are applied. If this is not desired/needed in a certain project, cardinalities >1 can be prohibited by specifying an appropriate complianceLevel in the FeatureModel. As a general guideline, cloned features should be avoided as far as possible. In some situations, however, they can prove extremely useful and elegant. For example, consider the feature model of a wiper system; in order to allow for an extremely flexible configuration of the interval modes, a single parameterized cloned feature can be used: "IntervalMode[2..*] : Float". With this single cloned feature, any number of intervals can be created (but at least 2) and for each interval a precise duration in sec can be configured; without cloned features, this degree of flexibility could not easily be achieved.
Element Source Role Target Role Details
«atpStructureElement» FeatureModel
Class  
Name: rootFeature
The root Features owned by the FeatureModel. Note that only root Features are directly contained in the model; non-root Features are contained in their parent Feature or parent FeatureGroup.
Name:  
 
 
FeatureGroup
Class  
Name: childFeature
FeatureGroups may only have Features as their children and must always have at least two children. It is perfectly legal to have child features in a feature group that are mandatory or cloned. However, except for special use cases, this is discouraged and therefore all child features of a FeatureGroup should usually be optional, i.e. have cardinality [0..1].
Name:  
 
 
BindingTime
Class  
Name:  
 
Name: requiredBindingTime
The required binding time could possibly deviate from the actual binding time. The attribute reflects the intended binding time, and actual binding time can be later adapted to this required binding time, if surrounding constraints allow a change. Each feature/variation point must have a required binding time attribute.
 
BindingTime
Class  
Name:  
 
Name: actualBindingTime
The actual binding time, independent of the required binding time. Due to technical conditions it may occur that the actually realized binding time of the feature/variation point differs from the originally intended binding time. In this case one has to provide information about the actual binding time. In the rationales it must be described what the reasons are for a (different) actual binding time.
 
Element Source Role Target Role Details
«atpPrototype» EADatatypePrototype
Class  
Name: featureParameter
For parameterized features, this specifies the type of the feature's parameter. Parameterized features are special features that can not only be selected or deselected during configuration but, if selected, they can also be supplied with a value of a particular type (e.g. an integer). Note that only the type but not the actual value of a feature parameter is defined within the feature model; the actual value is defined as part of the configuration of this feature model.
Name:  
 
 
FeatureLink
Class  
Name:  
The client Feature of a FeatureLink.
Name: end
The target [client] Feature of the dependency.
 
FeatureLink
Class  
Name:  
The supplier Feature of a FeatureLink.
Name: start
The source [supplier] Feature of the relationship.
 
FeatureTreeNode
Class  
Name: childNode
Features may have any number of Features or FeatureGroups as their children or none at all.
Name:  
 
 
Object Type Connection Notes
«atpPrototype» EADatatypePrototype Class Strong  
VehicleFeature Class Generalization  
FeatureTreeNode Class Strong  
EAElement Class Generalization  
«atpStructureElement» FeatureModel Class Strong  
FeatureTreeNode Class Generalization  
FeatureGroup Class Strong  
BindingTime Class Weak  
BindingTime Class Weak