Overview
A challenge in FOSD is to guarantee that all members of a software product line are correct.
Recent work on the type and model checking of product lines can provide such a guarantee without generating all possible members.
FeatureTweezer lifts previous results to a more general level, abstracting from particular languages.
At present FeatureTweezer contains a reference checking algorithm that performs a subset of product line type checking independent of the programming language used. It expects the product line's FSTs, the references, and a feature model.
Further information is provided by the scientific paper
Language-Independent Reference Checking in Software Product Lines, which was published in the FOSD workshop at GPCE, Eindhoven, 2010.
HowTo
The Haskell sources of a preliminary version of FeatureTweezer are available.
It has been developed for GHC 6.10.4. and funsat 0.6.0. You may use another Haskell compiler, but funsat is required.
In order to get started, download and unzip the distribution files. Open a terminal, cd to the folder and start GHCi:
:l FeatureIO.hs
printProductLineAbstractness "GPL/GPLcompAll.introduces" "GPL/GPLcompAll.rsf" "GPL/GPL.model" "GPL/GPL.comporder"
printReferentialAbstractness "GPL/GPLcompAll.introduces" "GPL/GPLcompAll.rsf" "GPL/GPL.model" "GPL/GPL.comporder"
While other functions are accessible,
printProductLineAbstractness (global) and
printReferentialAbstractness (local) are the two main algorithms for reference checking. They use path names to files as parameters:
- Version 2010-07-16 (Doxygen)
- file for features' FSTs
Introduces <Feature> <fully qualified element name> <element type>
- file for references between elements
These files can be generated by Doxygen and CCvisu out of a product combined out of all features by FeatureHouse.
- file containing the feature model in the guidsl format
- Version 2010-10 (Fuji)
- file for features' FSTs
introduces <Feature> <package> <element name>[(<parameter type list, comma separated>)]
- file for references between elements
REF <Feature> :: [<Package>] :: <element name> <element type> <target element name>
These files can be generated by Fuji out of a product combined out of all features by FeatureHouse.
- file containing the feature model in the guidsl format
- file containing all feature names in composition order (base feature first)
If something is unclear, also look into the source files. The functions are annotated.