skip to main content
10.1145/1985793.1985812acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article

Static extraction of program configuration options

Published: 21 May 2011 Publication History

Abstract

Many programs use a key-value model for configuration options. We examined how this model is used in seven open source Java projects totaling over a million lines of code. We present a static analysis that extracts a list of configuration options for a program. Our analysis finds 95% of the options read by the programs in our sample, making it more complete than existing documentation.
Most configuration options we saw fall into a small number of types. A dozen types cover 90% of options. We present a second analysis that exploits this fact, inferring a type for most options. Together, these analyses enable more visibility into program configuration, helping reduce the burden of configuration documentation and configuration debugging.

References

[1]
Apache Derby. http://db.apache.org/derby/.
[2]
HBase. http://hbase.apache.org/.
[3]
R. P. Buse and W. R. Weimer. Automatic documentation inference for exceptions. In ISSTA, New York, NY, USA, 2008.
[4]
A. Christensen, A. Møller, and M. Schwartzbach. Precise Analysis of String Expressions. In Symposium on Static Analysis, 2003.
[5]
A. Diwan, K. S. McKinley, and J. E. B. Moss. Type-based alias analysis. SIGPLAN Notices, 33(5), 1998.
[6]
K.-G. Doh, H. Kim, and D. A. Schmidt. Abstract parsing: Static analysis of dynamically generated string output using lr-parsing technology. In Symposium on Static Analysis, 2009.
[7]
J. Dong, Y. Zhao, and T. Peng. Architecture and design pattern discovery techniques-a review. In International Conference on Software Engineering Research and Practice (SERP), 2007.
[8]
S. Duan, V. Thummala, and S. Babu. Tuning database configuration parameters with iTuned. VLDB, 2009.
[9]
Hadoop. http://hadoop.apache.org/.
[10]
R. Hasti and S. Horwitz. Using static single assignment form to improve flow-insensitive pointer analysis. In PLDI, 1998.
[11]
D. Hettena and R. Cox. A guide to nachos 5.0j. http://inst.eecs.berkeley.edu/~cs162/sp07/Nachos/walk/walk.html.
[12]
D. Hovemeyer and W. Pugh. Finding bugs is easy. ACM SIGPLAN Notices, 39(12):106, 2004.
[13]
L. Keller, P. Upadhyaya, and G. Candea. ConfErr: A tool for assessing resilience to human configuration errors. In DSN, 2008.
[14]
C. Kirkegaard and A. Møller. Static analysis for Java Servlets and JSP. In Symposium on Static Analysis, 2006.
[15]
C. Kramer and L. Prechelt. Design recovery by automated search for structural design patterns in object-oriented software. In Working Conference on Reverse Engineering, 1996.
[16]
T. Kremenek, P. Twohey, G. Back, A. Ng, and D. Engler. From uncertainty to belief: inferring the specification within. In OSDI, 2006.
[17]
A. Lakshman, P. Malik, and K. Ranganathan. Cassandra: A Structured Storage System on a P2P Network. In SIGMOD, 2008.
[18]
T. Lethbridge, J. Singer, and A. Forward. How software engineers use documentation: The state of the practice. IEEE software, pages 35--39, 2003.
[19]
M. Levesque. Fundamental issues with open source software development. First Monday:, Special Issue #2: Open Source, October 2005.
[20]
J. Lim, T. Reps, and B. Liblit. Extracting output formats from executables. In Working Conference on Reverse Engineering, 2006.
[21]
B. Livshits, J. Whaley, and M. Lam. Reflection analysis for Java. In Third Asian Symposium on Programming Languages and Systems, 2005.
[22]
M. Michlmayr, F. Hunt, and D. Probert. Quality practices and problems in free software projects. In Proceedings of the First International Conference on Open Source Systems, 2005.
[23]
M. Naik. JChord. http://jchord.googlecode.com.
[24]
E. Reisner, C. Song, K. Ma, J. Foster, and A. Porter. Using symbolic evaluation to understand behavior in configurable software systems. In ICSE, 2010.
[25]
A. Rowstron and P. Druschel. Pastry: Scalable, decentralized object location, and routing for large-scale peer-to-peer systems. In Middleware, 2001.
[26]
C. Rubio-González and B. Liblit. Expect the unexpected: error code mismatches between documentation and the real world. In PASTE, 2010.
[27]
J. Sawin and A. Rountev. Improving static resolution of dynamic class loading in java using dynamically gathered environment information. In Automated Software Engineering, 2009.
[28]
D. Schreck, V. Dallmeier, and T. Zimmermann. How documentation evolves over time. In IWPSE '07: inth international workshop on Principles of software evolution, 2007.
[29]
J. Singer. Practices of software maintenance. In Proceedings of the International Conference on Software Maintenance, 1999.
[30]
Y.-Y. Su, M. Attariyan, and J. Flinn. Autobash: improving configuration management with operating system causality analysis. In SOSP, 2007.
[31]
J. Tucek, S. Lu, C. Huang, S. Xanthos, and Y. Zhou. Triage: diagnosing production run failures at the user's site. In SOSP, 2007.
[32]
R. Wang, X. Wang, K. Zhang, and Z. Li. Towards automatic reverse engineering of software security configurations. In CCS, 2008.

Cited By

View all
  • (2025)Characterizing and detecting Python version incompatibilities caused by inconsistent version specificationsJournal of Systems and Software10.1016/j.jss.2025.112337222(112337)Online publication date: Apr-2025
  • (2024)Ctest4J: A Practical Configuration Testing Framework for JavaCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3663799(562-566)Online publication date: 10-Jul-2024
  • (2024)Face It Yourselves: An LLM-Based Two-Stage Strategy to Localize Configuration Errors via LogsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652106(13-25)Online publication date: 11-Sep-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ICSE '11: Proceedings of the 33rd International Conference on Software Engineering
May 2011
1258 pages
ISBN:9781450304450
DOI:10.1145/1985793
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

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 21 May 2011

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. configuration
  2. documentation
  3. experiences
  4. static analysis

Qualifiers

  • Research-article

Conference

ICSE11
Sponsor:
ICSE11: International Conference on Software Engineering
May 21 - 28, 2011
HI, Waikiki, Honolulu, USA

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)32
  • Downloads (Last 6 weeks)4
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Characterizing and detecting Python version incompatibilities caused by inconsistent version specificationsJournal of Systems and Software10.1016/j.jss.2025.112337222(112337)Online publication date: Apr-2025
  • (2024)Ctest4J: A Practical Configuration Testing Framework for JavaCompanion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering10.1145/3663529.3663799(562-566)Online publication date: 10-Jul-2024
  • (2024)Face It Yourselves: An LLM-Based Two-Stage Strategy to Localize Configuration Errors via LogsProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652106(13-25)Online publication date: 11-Sep-2024
  • (2024)Towards a Taxonomy of Infrastructure as Code Misconfigurations: An Ansible StudyService-Oriented Computing10.1007/978-3-031-72578-4_5(83-103)Online publication date: 19-Oct-2024
  • (2023)DiagConfig: Configuration Diagnosis of Performance Violations in Configurable Software SystemsProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616300(566-578)Online publication date: 30-Nov-2023
  • (2023)Enhancing the Configuration Tuning Pipeline of Large-Scale Distributed Applications Using Large Language Models (Idea Paper)Companion of the 2023 ACM/SPEC International Conference on Performance Engineering10.1145/3578245.3585032(39-44)Online publication date: 15-Apr-2023
  • (2023)Fail through the Cracks: Cross-System Interaction Failures in Modern Cloud SystemsProceedings of the Eighteenth European Conference on Computer Systems10.1145/3552326.3587448(433-451)Online publication date: 8-May-2023
  • (2023)Test Selection for Unified Regression Testing2023 IEEE/ACM 45th International Conference on Software Engineering (ICSE)10.1109/ICSE48619.2023.00145(1687-1699)Online publication date: May-2023
  • (2023)WMWatcher: Preventing Workload-Related Misconfigurations in Production Environment2023 30th Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC60848.2023.00038(279-288)Online publication date: 4-Dec-2023
  • (2023)CRSExtractor: Automated configuration option read sites extraction towards IoT cloud infrastructureHeliyon10.1016/j.heliyon.2023.e153539:4(e15353)Online publication date: Apr-2023
  • 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

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media