This repository contains four programs for feature location analysis in Software Product Lines (SPLs).
- feature_isolation_demo.cpp
Calculates set differences to isolate features without IDs. - feature_differences_demo.cpp
Calculates all set differences with IDs. - feature_calculation_demo.cpp
Calculates only valid set differences with IDs. - fl.cpp
Calculates valid set differences for F independent features according to model M19.
$ g++ src/features/feature_isolation_demo.cpp -std=c++20 -o fid.exe
$ g++ src/features/feature_differences_demo.cpp -std=c++20 -o fdd.exe
$ g++ src/features/feature_calculation_demo.cpp -std=c++20 -o fcd.exe
$ g++ src/fl/fl.cpp -std=c++20 -o fl.exe
$ ./fid.exe
$ ./fdd.exe
$ ./fcd.exe
$ ./fl.exe
The programs 1, 2 and 3 accept two values as input, namely the number of independent features and the selected model (M1 to M19, entered as an integer in the interval 1..19). Afterwards it stores the following results in a comma-separated value (CSV) file.
- M, selected model (repetition of input)
- T, actual total number of features
- F, number of independent features (repetition of the input)
- DF, actual total number of inherently dependent features
- O, actual number of or-features
- A, actual number of and-features
- N, actual number of not-features
- ON, actual number of or-not-features
- AN, actual number of and-not-features
- S, number of systems of SPL
- D, number of all set differences of SPL systems
- List of all systems with system names and features
- List of all features plus the set difference that isolates this feature with systems as elements
Program 4 asks for the number of independent features. Afterwards it creates six CSV files in the working directory. Their filenames begin with fl_ followed by the number of independent features, followed by _ and the symbol for the corresponding feature category, for example, F for independent features. Each line in each file contains two values separated by a tab.
- A string that contains the feature name.
- A bit string that represents a difference expression. The most significant bit (MSB) at the most left position indicates that the system has to be intersected if it has value 1 or that it has to be united if it has value 0.