FeatureTweezer logo

FeatureTweezer: Language-Independent Reference Checking of Software Product Lines


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.


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: If something is unclear, also look into the source files. The functions are annotated.



FeatureTweezer is being developed at the University of Passau, Germany. For more information please contact the developers: