Pacogen 

Anytime optimization of pairwise covering set for feature models

Main author: A. Hervieu (INRIA Rennes Bretagne Atlantique) 

Co-authors: B. Baudry and A. Gotlieb (INRIA Rennes Bretagne Atlantique) 

 

What is Pacogen ?

The Pacogen tool allows the generation of minimal-sized set of configurations ensuring the pairwise covering of a feature model. Pairwise testing is a well-known testing approach that requires every pair of input parameters to be considered in a test set. Applying this testing criterion to feature models is not difficult: it suffices to consider each pair of possible feature to be included in a set of test configurations, valid for the feature model. An interesting feature of the tool is its ability to provide a near-optimal result in a given amount of time. The robustness of Pacogen has been tested on several feature models that are publicly available on the SPLOT website.

Requirements and License

The tool is distributed as a 32-bits or 64-bits binary executable for Linux.
Pacogen is released as Free software, under the CeCILL-C license.
The tool is distributed as is, without any warranty of any kind. Installing and using the tool can be done at its own risks.

Downloading and using the tool

32-bits binary executable for Linux  --  64-bits binary executable for Linux

To launch the tool use this command :

./Pacogen_Launcher.perl InputModel TimeMinization Size

- InputModel: File describing the feature model, it reads xmi files or text file which contains a textual description of the feature model.
- Size: the internal size of the matrix to be used to generate pairwise covering test sets
- TimeMinimization: the maximum time allocated to the generation (in ms). '_' will return the first solution without minimization.

Textual description of the model

The textual description of the model is composed of two list, separated by a ";". First list contain the list of all the feature, separated by a ",", in upper cases. The second list describe the relationships between all those features.
Relationships are described like this : and(ROOT,[Children list]).
Actually there are 6 operators :
and(ROOT,[Children list]).
or(FATHER,[FT1 ,FT2])
xor(FATHER,[FT1 ,FT2])
optionnal(FATHER,[FT1 ,FT2])
require(FT1 ,FT2)
mutex([FT1 ,FT2])

For the solving process the value of the root node as to be set at 0.

Traduction example :

A,B,C,D,E,F;and(0,[A,B]),xor(A,[C,D]),or(B,[E,F]),require(D,E)

Screenshots


Resolving Process

Experimental Results, 0 means feature selected, -1 means feature not selected

Experimental results


Size of different feature models according to different time of minimization
  2000 ms 10000 ms 20000 ms 180000 ms 300000 ms 900000 ms
cims_pl 1 1 1 1 1 1
gmf_eclipse_reuso_ufrj 1 1 1 1 1 1
monitor_engine 4 4 4 4 4 4
test_fm 4 4 4 4 4 4
e_portal 5 5 5 5 5 5
sal 5 5 5 5 5 5
moviesapp_pl 6 6 6 6 6 6
avionfeatures 6 6 6 6 6 6
doorlopende_reisverzekering 6 6 6 6 6 6
virtual_office_of_the_future 6 6 6 6 6 6
asghar 6 6 6 6 6 6
intelligenttutoringsystem 7 6 6 6 6 6
eshop_ufrj 7 7 6 6 6 6
monitor_engine_system 6 6 6 6 6 6
vms 6 6 6 6 6 6
phone_sple 6 6 6 6 6 6
elec5619___end_user_model 6 6 6 6 6 6
ide4ocl_1335626098 7 6 6 6 6 6
ide4ocl 6 6 6 6 6 6
car_pl 6 6 6 6 6 6
ide4ocl_1587576681 7 6 6 6 6 6
vodplayer 6 6 6 6 6 6
mobile_phone 7 7 7 7 7 7
tata_cars 7 7 7 7 7 7
project_portal_suite 15 7 7 7 7 7
card_product 9 8 7 7 7 7
mobile_game 7 7 7 7 7 7
car_software_system 7 7 7 7 7 7
coff_feature_model 8 8 8 8 8 8
cfdp_library1832208360 8 8 8 8 8 8
mobile_games 8 8 8 8 8 8
fame_dbms 8 8 8 8 8 8
smart_home   21 20 8 8 8
cfdp_library460954790 8 8 8 8 8 8
wb2 8 8 8 8 8 8
cfdp_library 8 8 8 8 8 8
gophone_inc 9 9 9 9 9 9
digital_video_system   9 9 9 9 9
composicao_lo     25 12 9 9
small_graph_product_line 9 9 9 9 9 9
text_editor 9 9 9 9 9 9
dummy_car 9 9 9 9 9 9
softwareclassification 10 10 10 10 10 10
stack_pl 12 10 10 10 10 10
storefrontsystem   10 10 10 10 10
stacja_pogodowa 11 10 10 10 10 10
eclipse_platform   12 11 11 11 11
his       11 11 11
spl_doctor_chat   12 12 12 12 12
reference_management_softwares_feature_model_148124576   12 12 12 12 12
reference_management_softwares_feature_model_1826570939   12 12 12 12 12
key_word_in_context_index_systems   12 12 12 12 12
smart_home_v2   13 13 13 13 13
feature_model_do_dominio_de_agendamento   13 13 13 13 13
reference_management_softwares_feature_model   13 13 13 13 13
fire_alarm   13 13 13 13 13
inventory   15 15 15 15 15
atm_software   17 17 16 16 15
ec2   16 16 16 16 16
smart_home_v21       16 16 16
jcalc_lps   19 18 18 18 18
reuso___ufrj___eclipse1       19 18 18
bicycle_feature_model   23 22 22 22 22
thread       25 25 25
plone_meeting       25 25 25
xtext           37
smart_home     21 8 8 8
inventory     15 15 15 15
sienna       20 20 20
web_portal     16 16 16 16
model_transformation       26 25 25
arcade_game_pl_feature_model         13 13
doc_gen       17 17 17

References

A. Hervieu "Using constraint model to generate automatically pairwise test set for feature diagrams"   INSA's Internship report -- June 2010