TY - JOUR
T1 - Where do configuration constraints stem from? An extraction approach and an empirical study
AU - Nadi, Sarah
AU - Berger, Thorsten
AU - Kästner, Christian
AU - Czarnecki, Krzysztof
N1 - Publisher Copyright:
© 2015 IEEE.
PY - 2015/8/1
Y1 - 2015/8/1
N2 - Highly configurable systems allow users to tailor software to specific needs. Valid combinations of configuration options are often restricted by intricate constraints. Describing options and constraints in a variability model allows reasoning about the supported configurations. To automate creating and verifying such models, we need to identify the origin of such constraints. We propose a static analysis approach, based on two rules, to extract configuration constraints from code. We apply it on four highly configurable systems to evaluate the accuracy of our approach and to determine which constraints are recoverable from the code. We find that our approach is highly accurate (93% and 77% respectively) and that we can recover 28% of existing constraints. We complement our approach with a qualitative study to identify constraint sources, triangulating results from our automatic extraction, manual inspections, and interviews with 27 developers. We find that, apart from low-level implementation dependencies, configuration constraints enforce correct runtime behavior, improve users' configuration experience, and prevent corner cases. While the majority of constraints is extractable from code, our results indicate that creating a complete model requires further substantial domain knowledge and testing. Our results aim at supporting researchers and practitioners working on variability model engineering, evolution, and verification techniques.
AB - Highly configurable systems allow users to tailor software to specific needs. Valid combinations of configuration options are often restricted by intricate constraints. Describing options and constraints in a variability model allows reasoning about the supported configurations. To automate creating and verifying such models, we need to identify the origin of such constraints. We propose a static analysis approach, based on two rules, to extract configuration constraints from code. We apply it on four highly configurable systems to evaluate the accuracy of our approach and to determine which constraints are recoverable from the code. We find that our approach is highly accurate (93% and 77% respectively) and that we can recover 28% of existing constraints. We complement our approach with a qualitative study to identify constraint sources, triangulating results from our automatic extraction, manual inspections, and interviews with 27 developers. We find that, apart from low-level implementation dependencies, configuration constraints enforce correct runtime behavior, improve users' configuration experience, and prevent corner cases. While the majority of constraints is extractable from code, our results indicate that creating a complete model requires further substantial domain knowledge and testing. Our results aim at supporting researchers and practitioners working on variability model engineering, evolution, and verification techniques.
KW - Reverse-engineering
KW - Variability models
KW - qualitative studies
UR - http://www.scopus.com/inward/record.url?scp=84939508727&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84939508727&partnerID=8YFLogxK
U2 - 10.1109/TSE.2015.2415793
DO - 10.1109/TSE.2015.2415793
M3 - Article
AN - SCOPUS:84939508727
SN - 0098-5589
VL - 41
SP - 820
EP - 841
JO - IEEE Transactions on Software Engineering
JF - IEEE Transactions on Software Engineering
IS - 8
M1 - 7065312
ER -