Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2568225.2568283acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Mining configuration constraints: static analyses and empirical results

Published: 31 May 2014 Publication History

Abstract

Highly-configurable systems allow users to tailor the software to their specific needs. Not all combinations of configuration options are valid though, and constraints arise for technical or non-technical reasons. Explicitly describing these constraints in a variability model allows reasoning about the supported configurations. To automate creating variability models, we need to identify the origin of such configuration constraints. We propose an approach which uses build-time errors and a novel feature-effect heuristic to automatically extract configuration constraints from C code. We conduct an empirical study on four highly-configurable open-source systems with existing variability models having three objectives in mind: evaluate the accuracy of our approach, determine the recoverability of existing variability-model constraints using our analysis, and classify the sources of variability-model constraints. We find that both our extraction heuristics are highly accurate (93% and 77% respectively), and that we can recover 19% of the existing variability-models using our approach. However, we find that many of the remaining constraints require expert knowledge or more expensive analyses. We argue that our approach, tooling, and experimental results support researchers and practitioners working on variability model re-engineering, evolution, and consistency-checking techniques.

References

[1]
CDLTools. https://bitbucket.org/tberger/cdltools.
[2]
FARCE. https://bitbucket.org/tberger/farce.
[3]
KBuildMiner. http://code.google.com/p/variability/ wiki/PresenceConditionsExtraction.
[4]
LVAT. http://code.google.com/p/ linux-variability-analysis-tools.
[5]
Online appendix. http://gsd.uwaterloo.ca/farce.
[6]
L. Aversano, M. Di Penta, and I. Baxter. Handling preprocessor-conditioned declarations. In Proceedings of the International Workshop Source Code Analysis and Manipulation (SCAM), pages 83–92, 2002.
[7]
I. Baxter and M. Mehlich. Preprocessor conditional removal by simple partial evaluation. In Proceedings of the Working Conference on Reverse Engineering (WCRE), pages 281–290. IEEE Computer Society, 2001.
[8]
J. Bayer, J.-F. Girard, M. Würthner, J.-M. DeBaud, and M. Apel. Transitioning legacy assets to a product line architecture. In Proceedings of the European Software Engineering Conference/Foundations of Software Engineering (ESEC/FSE), pages 446–463. Springer, 1999.
[9]
D. Benavides, S. Segura, and A. Ruiz-Cortés. Automated analysis of feature models 20 years later: A literature review. Information Systems, 35(6):615 – 636, 2010.
[10]
T. Berger, R. Rublack, D. Nair, J. M. Atlee, M. Becker, K. Czarnecki, and A. W ˛ asowski. A survey of variability modeling in industrial practice. In Proceedings of the International Workshop on Variability Modelling of Software-intensive Systems (VaMoS), pages 7:1–7:8, 2013.
[11]
T. Berger and S. She. Formal semantics of the CDL language. Technical Note. Available at www.informatik. uni-leipzig.de/~berger/cdl_semantics.pdf.
[12]
T. Berger, S. She, K. Czarnecki, and A. W ˛ asowski. Feature-to-Code mapping in two large product lines. Technical report, University of Leipzig, 2010.
[13]
T. Berger, S. She, R. Lotufo, A. Wasowski, and K. Czarnecki. A study of variability models and languages in the systems software domain. IEEE Transactions on Software Engineering, 39(12):1611–1640, 2013.
[14]
T. Berger, S. She, R. Lotufo, A. W ˛ asowski, and K. Czarnecki. Variability modeling in the real: A perspective from the operating systems domain. In Proceedings of the International Conference Automated Software Engineering (ASE), pages 73–82. ACM Press, 2010.
[15]
J. Bergey, L. O’Brian, and D. Smith. Mining existing assets for software product lines. Technical Report CMU/SEI-2000-TN-008, SEI, Pittsburgh, PA, 2000.
[16]
E. Bodden, M. Mezini, C. Brabrand, T. Tolêdo, M. Ribeiro, and P. Borba. Spllift - statically analyzing software product lines in minutes instead of years. In Proceedings of the Conference Programming Language Design and Implementation (PLDI), pages 355–364. ACM Press, 2013.
[17]
C. Brabrand, M. Ribeiro, T. Tolêdo, and P. Borba. Intraprocedural dataflow analysis for software product lines. In Proceedings of the International Conference Aspect-Oriented Software Development (AOSD), pages 13–24. ACM Press, 2012.
[18]
K. Czarnecki and U. W. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, Boston, MA, 2000.
[19]
K. Czarnecki and K. Pietroszek. Verifying feature-based model templates against well-formedness OCL constraints. In Proceedings of the International Conference Generative Programming and Component Engineering (GPCE), pages 211–220. ACM Press, 2006.
[20]
J.-M. Davril, E. Delfosse, N. Hariri, M. Acher, J. Cleland-Huang, and P. Heymans. Feature model extraction from large collections of informal product descriptions. In Proceedings of the European Software Engineering Conference/Foundations of Software Engineering (ESEC/FSE), pages 290–300. ACM Press, 2013.
[21]
D. Dhungana, P. Grünbacher, and R. Rabiser. The DOPLER meta-tool for decision-oriented variability modeling: A multiple case study. Automated Software Engineering, 18(1):77–114, 2011.
[22]
N. Hariri, C. Castro-Herrera, M. Mirakhorli, J. Cleland-Huang, and B. Mobasher. Supporting domain analysis through mining and recommending features from online product listings. IEEE Transactions on Software Engineering, 39(12):1736–1752, 2013.
[23]
A. Hubaux, Y. Xiong, and K. Czarnecki. A user survey of configuration challenges in Linux and eCos. In Proceedings of the International Workshop on Variability Modelling of Software-intensive Systems (VaMoS), pages 149–155. ACM Press, 2012.
[24]
K. Kang, S. G. Cohen, J. A. Hess, W. E. Novak, and A. S. Peterson. Feature-Oriented Domain Analysis (FODA) Feasibility Study. Technical Report CMU/SEI-90-TR-21, SEI, Pittsburgh, PA, 1990.
[25]
C. Kästner, S. Apel, T. Thüm, and G. Saake. Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol. (TOSEM), 21(3):Article 14, 2012.
[26]
C. Kästner, P. G. Giarrusso, T. Rendel, S. Erdweg, K. Ostermann, and T. Berger. Variability-aware parsing in the presence of lexical macros and conditional compilation. In Proceedings of the International Conference Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pages 805–824. ACM Press, Oct. 2011.
[27]
C. Kästner, K. Ostermann, and S. Erdweg. A variability-aware module system. In Proceedings of the International Conference Object-Oriented Programming, Systems, Languages and Applications (OOPSLA). ACM Press, 2012.
[28]
D. Le, H. Lee, K. Kang, and L. Keun. Validating consistency between a feature model and its implementation. In Safe and Secure Software Reuse, volume 7925, pages 1–16. Springer, 2013.
[29]
J. Liebig, S. Apel, C. Lengauer, C. Kästner, and M. Schulze. An analysis of the variability in forty preprocessor-based software product lines. In Proceedings of the International Conference Software Engineering (ICSE), volume 1, pages 105 –114, 2010.
[30]
J. Liebig, A. von Rhein, C. Kästner, S. Apel, J. Dörre, and C. Lengauer. Scalable analysis of variable software. In Proceedings of the European Software Engineering Conference/Foundations of Software Engineering (ESEC/FSE), pages 81–91. ACM Press, 2013.
[31]
R. Lotufo, S. She, T. Berger, K. Czarnecki, and A. W ˛ asowski. Evolution of the Linux kernel variability model. In Software Product Lines: Going Beyond, volume 6287, pages 136–150. Springer, 2010.
[32]
S. Nadi and R. Holt. Mining Kbuild to detect variability anomalies in Linux. In Proceedings of the European Conference on Software Maintenance and Reengineering (CSMR), pages 107–116, 2012.
[33]
S. Nadi and R. Holt. The Linux kernel: A case study of build system variability. Journal of Software: Evolution and Process, 2013. Early online view. http://dx.doi.org/10.1002/smr.1595.
[34]
H. V. Nguyen, C. Kästner, and T. N. Nguyen. Exploring variability-aware execution for testing plugin-based web applications. In Proceedings of the International Conference Software Engineering (ICSE), 2014.
[35]
Y. Padioleau. Parsing C/C++ code without pre-processing. In Proceedings of the International Conference Compiler Construction (CC), pages 109–125. Springer, 2009.
[36]
L. Passos, J. Guo, L. Teixeira, K. Czarnecki, A. W ˛ asowski, and P. Borba. Coevolution of variability models and related artifacts: A case study from the Linux kernel. In Proceedings of the International Software Product Line Conference (SPLC), pages 91–100. ACM Press, 2013.
[37]
L. Passos, M. Novakovic, Y. Xiong, T. Berger, K. Czarnecki, and A. W ˛ asowski. A study of non-Boolean constraints in variability models of an embedded operating system. In Proceedings of the International Software Product Line Conference (SPLC), pages 2:1–2:8. ACM Press, 2011.
[38]
A. Rabkin and R. Katz. Static extraction of program configuration options. In Proceedings of the International Conference Software Engineering (ICSE), pages 131–140. ACM Press, 2011.
[39]
E. Reisner, C. Song, K.-K. Ma, J. S. Foster, and A. Porter. Using symbolic evaluation to understand behavior in configurable software systems. In Proceedings of the International Conference Software Engineering (ICSE), pages 445–454. ACM Press, 2010.
[40]
S. She and T. Berger. Formal semantics of the Kconfig language. Technical Note. Available at eng.uwaterloo. ca/~shshe/kconfig_semantics.pdf.
[41]
S. She, R. Lotufo, T. Berger, A. Wasowski, and K. Czarnecki. The variability model of the Linux kernel. In Proceedings of the International Workshop on Variability Modelling of Software-intensive Systems (VaMoS), 2010.
[42]
S. She, R. Lotufo, T. Berger, A. W ˛ asowski, and K. Czarnecki. Reverse engineering feature models. In Proceedings of the International Conference Software Engineering (ICSE), pages 461–470. ACM Press, 2011.
[43]
D. Simon and T. Eisenbarth. Evolutionary introduction of software product lines. In Proceedings of the International Software Product Line Conference (SPLC), volume 2379, pages 272–282. Springer, 2002.
[44]
J. Sincero, H. Schirmeier, W. Schröder-Preikschat, and O. Spinczyk. Is the Linux kernel a software product line? In Proceedings of the International Workshop on Open Source Software and Product Lines (SPLC-OSSPL), 2007.
[45]
J. Sincero, R. Tartler, D. Lohmann, and W. Schröder-Preikschat. Efficient extraction and analysis of preprocessor-based variability. In Proceedings of the International Conference Generative Programming and Component Engineering (GPCE), pages 33–42. ACM Press, 2010.
[46]
C. Stoermer and L. O’Brien. MAP – Mining architectures for product line evaluations. In Proceedings of the Working Conference Software Architecture (WICSA), pages 35–44. IEEE Computer Society, 2001.
[47]
A. Tamrawi, H. A. Nguyen, H. V. Nguyen, and T. N. Nguyen. Build code analysis with symbolic evaluation. In Proceedings of the International Conference Software Engineering (ICSE), pages 650–660. IEEE Computer Society, 2012.
[48]
R. Tartler, D. Lohmann, J. Sincero, and W. Schröder-Preikschat. Feature consistency in compile-time-configurable system software: Facing the Linux 10,000 feature problem. In Proceedings of the European Conference on Computer Systems (EuroSys), pages 47–60. ACM Press, 2011.
[49]
S. Thaker, D. Batory, D. Kitchin, and W. Cook. Safe composition of product lines. In Proceedings of the International Conference Generative Programming and Component Engineering (GPCE), pages 95–104. ACM Press, 2007.
[50]
T. Thüm, S. Apel, C. Kästner, I. Schaefer, and G. Saake. A classification and survey of analysis strategies for software product lines. ACM Computing Surveys, 2014. to appear.
[51]
T. Thüm, D. Batory, and C. Kästner. Reasoning about edits to feature models. In Proceedings of the International Conference Software Engineering (ICSE), pages 254–264. IEEE Computer Society, 2009.
[52]
B. Veer and J. Dallaway. The eCos component writer’s guide. ecos.sourceware.org/ecos/docs-latest/ cdl-guide/cdl-guide.html.
[53]
J. White, D. Schmidt, D. Benavides, P. Trinidad, and A. Cortés. Automated diagnosis of product-line configuration errors in feature models. In Proceedings of the International Software Product Line Conference (SPLC), pages 225–234. IEEE Computer Society, 2008.
[54]
Y. Xiong, A. Hubaux, S. She, and K. Czarnecki. Generating range fixes for software configuration. In Proceedings of the International Conference Software Engineering (ICSE), pages 58–68. IEEE Computer Society, 2012.
[55]
B. Zhang and M. Becker. Code-based variability model extraction for software product line improvement. In Proceedings of the International Software Product Line Conference (SPLC), pages 91–98. ACM Press, 2012.
[56]
R. Zippel and contributors. kconfig-language.txt. available in the kernel tree at www.kernel.org.

Cited By

View all
  • (2025)DeVAIC: A tool for security assessment of AI-generated codeInformation and Software Technology10.1016/j.infsof.2024.107572177(107572)Online publication date: Jan-2025
  • (2024)Towards Automated Configuration DocumentationProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695311(2256-2261)Online publication date: 27-Oct-2024
  • (2024)Pragmatic Random Sampling of the Linux Kernel: Enhancing the Randomness and Correctness of the conf ToolProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3672586(24-35)Online publication date: 2-Sep-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE 2014: Proceedings of the 36th International Conference on Software Engineering
May 2014
1139 pages
ISBN:9781450327565
DOI:10.1145/2568225
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]

Sponsors

In-Cooperation

  • TCSE: IEEE Computer Society's Tech. Council on Software Engin.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 31 May 2014

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Variability models
  2. reverse engineering
  3. static analysis

Qualifiers

  • Research-article

Conference

ICSE '14
Sponsor:

Acceptance Rates

Overall Acceptance Rate 276 of 1,856 submissions, 15%

Upcoming Conference

ICSE 2025

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)60
  • Downloads (Last 6 weeks)5
Reflects downloads up to 12 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2025)DeVAIC: A tool for security assessment of AI-generated codeInformation and Software Technology10.1016/j.infsof.2024.107572177(107572)Online publication date: Jan-2025
  • (2024)Towards Automated Configuration DocumentationProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695311(2256-2261)Online publication date: 27-Oct-2024
  • (2024)Pragmatic Random Sampling of the Linux Kernel: Enhancing the Randomness and Correctness of the conf ToolProceedings of the 28th ACM International Systems and Software Product Line Conference10.1145/3646548.3672586(24-35)Online publication date: 2-Sep-2024
  • (2024)Leveraging Software Product Lines for Testing Autonomous VehiclesProceedings of the 18th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3634713.3634720(56-60)Online publication date: 7-Feb-2024
  • (2024)Less is More? An Empirical Study on Configuration Issues in Python PyPI EcosystemProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639077(1-12)Online publication date: 20-May-2024
  • (2024)FeaMod: Enhancing Modularity, Adaptability and Code Reuse in Embedded Software Development2024 IEEE International Conference on Information Reuse and Integration for Data Science (IRI)10.1109/IRI62200.2024.00058(246-251)Online publication date: 7-Aug-2024
  • (2024)A Product-Line-Engineering Framework for Secure Enterprise-Resource-Planning SystemsProcedia Computer Science10.1016/j.procs.2024.06.338239(1619-1626)Online publication date: 2024
  • (2024)CCE&D: A Configuration Failure Prevention Method for Autonomous Driving SystemsInformation Security and Privacy10.1007/978-981-97-5101-3_16(288-302)Online publication date: 15-Jul-2024
  • (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
  • (2022)Facilitating Reuse of Functions in Embedded SoftwareIEEE Access10.1109/ACCESS.2022.319765610(88595-88605)Online publication date: 2022
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media