skip to main content
10.1145/3302333.3302342acmotherconferencesArticle/Chapter ViewAbstractPublication PagesvamosConference Proceedingsconference-collections
research-article

On the Evolution of Feature Dependencies: An Exploratory Study of Preprocessor-based Systems

Published: 06 February 2019 Publication History

Abstract

Feature dependencies are the subject of several studies and have been approached with different goals, such as software quality. However, we still It is not known whether feature dependencies are prone to change during the lifetime of configurable systems. To minimize this lack, we perform an empirical study to assess the evolution of feature dependencies. We focus in feature dependencies at the source-code level written with preprocessor directives, for this, we analyze the history of feature dependency changes in 15 preprocessor based systems written in C. In order to identify the most common types of changes on feature dependencies, we propose a catalog of possible changes in these dependencies. We found out that about 9% of the feature dependencies between two subsequent versions are added, and less of 4% are excluded. Whereas, about 87% of the dependencies between two subsequent versions are preserved, and 14% has some kind of structural modification. Besides, the results show that functions are 3x more prone to change than variables in feature dependencies. In summary, our results show that: (i) feature dependencies prone to be preserved during the evolution; (ii) about 1/5 of the dependencies preserved between two versions have structural changes; (iii) functions changes more than variables; (iv) developers may have to deal with 1/4 of the dependencies on each evolution of the configurable system.

References

[1]
Iago Abal, Jean Melo, Stefan Stănciulescu, Claus Brabrand, Márcio Ribeiro, and Andrzej Wkasowski. 2018. Variability Bugs in Highly Configurable Systems: A Qualitative Analysis. IEEE Transactions on Software Engineering and Methodology 26, 3 (2018), 1--34.
[2]
Sven Apel, Don Batory, Christian Kstner, and Gunter Saake. 2013. Feature-Oriented Software Product Lines: Concepts and Implementation. Springer Publishing Company, Incorporated.
[3]
Sven Apel and Christian Kästner. 2009. Virtual Separation of Concerns - A Second Chance for Preprocessors. Journal of Object Technology 8, 6 (2009), 59--78.
[4]
Thorsten Berger, Ralf Rublack, Divya Nair, Joanne M. Atlee, Martin Becker, Krzysztof Czarnecki, and Andrzej Wkasowski. 2013. A Survey of Variability Modeling in Industrial Practice. In 7th International Workshop on Variability Modelling of Software-intensive Systems (VaMoS). 1--8.
[5]
Aline Brito, Laerte Xavier, Andre Hora, and Marco Tulio Valente. 2018. APIDiff: Detecting API Breaking Changes. In 25th International Conference on Software Analysis, Evolution and Reengineering (SANER), Tool Track. 507--511.
[6]
Bruno Cafeo, Elder Cirilo, Alessandro Garcia, Francisco Dantas, and Jaejoon Lee. 2016. Feature Dependencies As Change Propagators. Information & Software Technology 69, C (2016), 37--49.
[7]
Bruno Cafeo, Francisco Dantas, Elder Cirilo, and Alessandro Garcia. 2013. Towards indicators of instabilities in software product lines: An empirical evaluation of metrics. In 4th International Workshop on Emerging Trends in Software Metrics (WETSoM). 69--75.
[8]
Bruno Cafeo, Francisco Dantas, Alessandro Gurgel, Everton Guimarães, Elder Cirilo, Alessandro Garcia, and Carlos Lucena. 2012. Analysing the Impact of Feature Dependency Implementation on Product Line Stability: An Exploratory Study. In 26th Brazilian Symposium on Software Engineering (SBES). 141--150.
[9]
Bruno Cafeo, Claus Hunsen, Alessandro Garcia, Sven Apel, and Jaejoon Lee. 2016. Segregating Feature Interfaces to Support Software Product Line Maintenance. In 15th International Conference on Modularity (MODULARITY). 1--12.
[10]
Danny Dig and Ralph Johnson. 2006. How Do APIs Evolve? A Story of Refactoring: Research Articles. J. Softw. Maint. Evol. 18, 2 (2006), 83--107.
[11]
Michael D. Ernst, Greg J. Badros, and David Notkin. 2002. An Empirical Analysis of C Preprocessor Use. Transactions on Software Engineering 28, 12 (2002), 1146--1170.
[12]
Brady Garvin and Myra Cohen. 2011. Feature Interaction Faults Revisited: An Exploratory Study. In 22nd International Symposium on Software Reliability Engineering(ISSRE). 90--99.
[13]
Claus Hunsen, Bo Zhang, Janet Siegmund, Christian Kästner, Olaf Lessenich, Martin Becker, and Sven Apel. 2016. Preprocessor-based Variability in Open-source and Industrial Software Systems: An Empirical Study. Empirical Software Engineering 21, 2 (2016), 449--482.
[14]
Kyo Kang, Sholom Cohen, James Hess, Willian Novak, and Spencer Peterson. 1990. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report. Carnegie-Mellon University Software Engineering Institute.
[15]
Christian Kästner, Sven Apel, and Klaus Ostermann. 2011. The Road to Feature Modularity?. In 15th International Software Product Line Conference (SPLC). 1--8.
[16]
Christian Kästner, Paolo G. Giarrusso, Tillmann Rendel, Sebastian Erdweg, Klaus Ostermann, and Thorsten Berger. 2011. Variability-aware Parsing in the Presence of Lexical Macros and Conditional Compilation. In International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA). 805--824.
[17]
Christian Kröher, Lea Gerling, and Klaus Schmid. 2018. Identifying the Intensity of Variability Changes in Software Product Line Evolution. In 22Nd International Systems and Software Product Line Conference (SPLC). ACM.
[18]
Jörg Liebig, Sven Apel, Christian Lengauer, Christian Kästner, and Michael Schulze. 2010. An Analysis of the Variability in Forty Preprocessor-based Software Product Lines. In 32Nd International Conference on Software Engineering (ICSE). 105--114.
[19]
Jörg Liebig, Christian Kästner, and Sven Apel. 2011. Analyzing the Discipline of Preprocessor Annotations in 30 Million Lines of C Code. In 10th International Conference on Aspect-oriented Software Development. 191--202.
[20]
Max Lillack, Christian Kästner, and Eric Bodden. 2014. Tracking Load-time Configuration Options. In International Conference on Automated Software Engineering. 445--456.
[21]
Romero Malaquias, Márcio Ribeiro, Rodrigo Bonifácio, Eduardo Monteiro, Flávio Medeiros, Alessandro Garcia, and Rohit Gheyi. 2017. The Discipline of Preprocessor-based Annotations Does #Ifdef TAG N'T #Endif Matter. In 25th International Conference on Program Comprehension (ICPC). 297--307.
[22]
Flávio Medeiros, Christian Kästner, Márcio Ribeiro, Rohit Gheyi, and Sven Apel. 2016. A Comparison of 10 Sampling Algorithms for Configurable Systems. In 38th International Conference on Software Engineering. 643--654.
[23]
Flávio Medeiros, Christian Kästner, Márcio Ribeiro, Sarah Nadi, and Rohit Gheyi. 2015. The Love/Hate Relationship with the C Preprocessor: An Interview Study. In 29th European Conference on Object-Oriented Programming (ECOOP). 495--518.
[24]
Flávio Medeiros, Márcio Ribeiro, and Rohit Gheyi. 2013. Investigating Preprocessor-based Syntax Errors. In 12th International Conference on Generative Programming: Concepts & Experiences (GPCE). 75--84.
[25]
Flávio Medeiros, Márcio Ribeiro, Rohit Gheyi, Sven Apel, Christian Kästner, Bruno Ferreira, Luiz Carvalho, and Baldoino Fonseca. 2017. Discipline Matters: Refactoring of Preprocessor Directives in the #ifdef Hell. Transactions on Software Engineering (2017), 1--1.
[26]
Klaus Pohl, Günter Böckle, and Frank J. van der Linden. 2005. Software Product Line Engineering: Foundations, Principles and Techniques. Springer-Verlag New York, Inc.
[27]
Rodrigo Queiroz, Leonardo Passos, Marco Tulio Valente, Claus Hunsen, Sven Apel, and Krzysztof Czarnecki. 2017. The Shape of Feature Code: An Analysis of Twenty C-preprocessor-based Systems. Software & Systems Modeling 16, 1 (2017), 77--96.
[28]
Márcio Ribeiro, Paulo Borba, and Christian Kästner. 2014. Feature Maintenance with Emergent Interfaces. In 36th International Conference on Software Engineering (ICSE). 989--1000.
[29]
Márcio Ribeiro, Felipe Queiroz, Paulo Borba, Társis Tolêdo, Claus Brabrand, and Sérgio Soares. 2011. On the Impact of Feature Dependencies when Maintaining Preprocessor-based Software Product Lines. In 10th International Conference on Generative Programming and Component Engineering (GPCE). 23--32.
[30]
Márcio Ribeiro, Társis Tolêdo, Johnni Winther, Claus Brabrand, and Paulo Borba. 2012. Emergo: A Tool for Improving Maintainability of Preprocessor-based Product Lines. In 11th Annual International Conference on Aspect-oriented Software Development Companion (AOSD). 23--26.
[31]
Iran Rodrigues, Márcio Ribeiro, Flávio Medeiros, Paulo Borba, Baldoino Fonseca, and Rohit Gheyi. 2016. Assessing fine-grained feature dependencies. Information & Software Technology 78 (2016), 27--52.
[32]
Reimar Schröter, Norbert Siegmund, Thomas Thüm, and Gunter Saake. 2014. Feature-context Interfaces: Tailored Programming Interfaces for Software Product Lines. In 18th International Software Product Line Conference (SPLC). 102--111.
[33]
Claes Wohlin, Per Runeson, Martin Hst, Magnus C. Ohlsson, Bjrn Regnell, and Anders Wessln. 2012. Experimentation in Software Engineering. Springer Publishing Company, Incorporated.
[34]
Larte Xavier, Aline Brito, André Hora, and Marco Valente. 2017. Historical and impact analysis of API breaking changes: A large-scale study. In 24th International Conference on Software Analysis, Evolution and Reengineering (SANER). 138--147.

Cited By

View all
  • (2024)Feature-oriented Test Case Prioritization Strategies: An Evaluation for Highly Configurable SystemsProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3672592(72-83)Online publication date: 2-Sep-2024
  • (2024)Feature-oriented test case selection and prioritization during the evolution of highly-configurable systemsJournal of Systems and Software10.1016/j.jss.2024.112157217(112157)Online publication date: Nov-2024
  • (2023)Feature-oriented Test Case Selection during Evolution of Highly-Configurable SystemsProceedings of the 27th ACM International Systems and Software Product Line Conference - Volume A10.1145/3579027.3608979(76-86)Online publication date: 28-Aug-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
VaMoS '19: Proceedings of the 13th International Workshop on Variability Modelling of Software-Intensive Systems
February 2019
116 pages
ISBN:9781450366489
DOI:10.1145/3302333
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

In-Cooperation

  • FWO: Fund for Scientific Research - Flanders (Belgium)
  • FNRS: Fonds National de la Recherche Scientifique

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 06 February 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Configurable Systems
  2. Feature Dependencies
  3. Maintenance
  4. Preprocessor

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

Conference

VAMOS '19

Acceptance Rates

VaMoS '19 Paper Acceptance Rate 14 of 24 submissions, 58%;
Overall Acceptance Rate 66 of 147 submissions, 45%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 23 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Feature-oriented Test Case Prioritization Strategies: An Evaluation for Highly Configurable SystemsProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3672592(72-83)Online publication date: 2-Sep-2024
  • (2024)Feature-oriented test case selection and prioritization during the evolution of highly-configurable systemsJournal of Systems and Software10.1016/j.jss.2024.112157217(112157)Online publication date: Nov-2024
  • (2023)Feature-oriented Test Case Selection during Evolution of Highly-Configurable SystemsProceedings of the 27th ACM International Systems and Software Product Line Conference - Volume A10.1145/3579027.3608979(76-86)Online publication date: 28-Aug-2023
  • (2023)Evolutionary Feature Dependencies: Analyzing Feature Co-Changes in C Systems2023 IEEE 23rd International Working Conference on Source Code Analysis and Manipulation (SCAM)10.1109/SCAM59687.2023.00019(84-95)Online publication date: 2-Oct-2023
  • (2023)Comparing the intensity of variability changes in software product line evolutionJournal of Systems and Software10.1016/j.jss.2023.111737203:COnline publication date: 13-Jul-2023
  • (2022)Cost-effective learning-based strategies for test case prioritization in continuous integration of highly-configurable softwareEmpirical Software Engineering10.1007/s10664-021-10093-327:6Online publication date: 1-Nov-2022
  • (2020)Learning-based prioritization of test cases in continuous integration of highly-configurable softwareProceedings of the 24th ACM Conference on Systems and Software Product Line: Volume A - Volume A10.1145/3382025.3414967(1-11)Online publication date: 19-Oct-2020

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media