{"id":{"repo_id":"iastate","oai_identifier":"oai:dr.lib.iastate.edu:20.500.12876/106543"},"canonical_url":"https://search.dev.ndltd.org/etd/iastate/oai:dr.lib.iastate.edu:20.500.12876/106543","repository":{"repo_id":"iastate","name":"Iowa State University","base_url":"https://dr.lib.iastate.edu/server/oai/request"},"display":{"title":"Configuration-aware software documentation","abstract":"Configurability is a common property of software allowing programs to be customized for theuser. While configurability is pervasive, it can also lead to faults (or misconfigurations) and make program evolution challenging. Dependencies can be missed, essential code can be left in place when a configuration option is removed, or code can be deleted or changed when still in use by other configuration options. One challenge is a lack of sufficient documentation and traceability between configuration options and code during software evolution, which leads to limited understanding of the impact of changes across large configuration spaces. Existing approaches to solve these problems include automated documentation, analysis of version control history, or the use of special program configuration management languages. However, none of these provides a sufficient solution for managing configuration changes over time. In this thesis, we propose an automated approach called ConfiGen, which provides user-facing documentation and a back-end analysis showing the definitions and uses of configuration options. It includes traceability links to lines of program code and can be used to identify changes during system evolution. We have implemented a prototype of ConfiGen on top of a popular documentation tool and performed an empirical evaluation of its effectiveness on over 10 years of history for three C-language, highly configurable systems. We see that the configuration space becomes increasingly complex across versions, with up to a 40% increase in configuration density per file and a 128% increase in configuration footprint across the documentation, and git history analysis alone is insufficient.","abstract_html":"Configurability is a common property of software allowing programs to be customized for theuser. While configurability is pervasive, it can also lead to faults (or misconfigurations) and make program evolution challenging. Dependencies can be missed, essential code can be left in place when a configuration option is removed, or code can be deleted or changed when still in use by other configuration options. One challenge is a lack of sufficient documentation and traceability between configuration options and code during software evolution, which leads to limited understanding of the impact of changes across large configuration spaces. Existing approaches to solve these problems include automated documentation, analysis of version control history, or the use of special program configuration management languages. However, none of these provides a sufficient solution for managing configuration changes over time. In this thesis, we propose an automated approach called ConfiGen, which provides user-facing documentation and a back-end analysis showing the definitions and uses of configuration options. It includes traceability links to lines of program code and can be used to identify changes during system evolution. We have implemented a prototype of ConfiGen on top of a popular documentation tool and performed an empirical evaluation of its effectiveness on over 10 years of history for three C-language, highly configurable systems. We see that the configuration space becomes increasingly complex across versions, with up to a 40% increase in configuration density per file and a 128% increase in configuration footprint across the documentation, and git history analysis alone is insufficient.","abstract_has_math":false,"creators":["Ahmmed, Jobayer"],"institution":"Iowa State University - Thesis & Dissertation","degree_name":"Master of Science","degree_level":"thesis","degree_discipline":"Computer science","degree_department":null,"school":null,"contributors":[],"advisors":["Cohen, Myra, B."],"committee_chairs":[],"committee_members":[],"year":2026,"date_issued":"2026-05","date_published":"2026-05","updated_at":"2026-07-24T02:38:12Z","subjects":["Computer science"],"languages":["en_US"],"rights":[],"rights_urls":[],"identifier_entries":[]},"links":{"outbound_url":"https://dr.lib.iastate.edu/handle/20.500.12876/106543","outbound_label":"Repository record","outbound_source":"dc:identifier.uri"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:contributor.advisor","label":"Advisor","values":["Cohen, Myra, B."]},{"key":"dc:creator","label":"Author","values":["Ahmmed, Jobayer"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.accessioned","label":"Dc Date Accessioned","values":["2026-06-09T16:04:41Z"]},{"key":"dc:date.available","label":"Dc Date Available","values":["2026-06-09T16:04:41Z"]},{"key":"dc:date.issued","label":"Date","values":["2026-05"]},{"key":"dc:type","label":"Dc Type","values":["Text"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer science"]},{"key":"thesis:degree_level","label":"Degree Level","values":["thesis"]},{"key":"thesis:degree_name","label":"Degree Name","values":["Master of Science"]},{"key":"thesis:institution_name","label":"Thesis Institution Name","values":["Iowa State University - Thesis & Dissertation"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["Computer science"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:language.iso","label":"Language (ISO)","values":["en_US"]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier.uri","label":"Identifier URI","values":["https://dr.lib.iastate.edu/handle/20.500.12876/106543"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description","label":"Description","values":["May2026"]},{"key":"dc:description.abstract","label":"Abstract","values":["Configurability is a common property of software allowing programs to be customized for theuser. While configurability is pervasive, it can also lead to faults (or misconfigurations) and make program evolution challenging. Dependencies can be missed, essential code can be left in place when a configuration option is removed, or code can be deleted or changed when still in use by other configuration options. One challenge is a lack of sufficient documentation and traceability between configuration options and code during software evolution, which leads to limited understanding of the impact of changes across large configuration spaces. Existing approaches to solve these problems include automated documentation, analysis of version control history, or the use of special program configuration management languages. However, none of these provides a sufficient solution for managing configuration changes over time. In this thesis, we propose an automated approach called ConfiGen, which provides user-facing documentation and a back-end analysis showing the definitions and uses of configuration options. It includes traceability links to lines of program code and can be used to identify changes during system evolution. We have implemented a prototype of ConfiGen on top of a popular documentation tool and performed an empirical evaluation of its effectiveness on over 10 years of history for three C-language, highly configurable systems. We see that the configuration space becomes increasingly complex across versions, with up to a 40% increase in configuration density per file and a 128% increase in configuration footprint across the documentation, and git history analysis alone is insufficient."]},{"key":"dc:format.mimetype","label":"Dc Format Mimetype","values":["PDF"]},{"key":"dc:title","label":"Title","values":["Configuration-aware software documentation"]}]}],"canonical_facts":{"dc:contributor.advisor":["Cohen, Myra, B."],"dc:creator":["Ahmmed, Jobayer"],"dc:date.accessioned":["2026-06-09T16:04:41Z"],"dc:date.available":["2026-06-09T16:04:41Z"],"dc:date.issued":["2026-05"],"dc:description":["May2026"],"dc:description.abstract":["Configurability is a common property of software allowing programs to be customized for theuser. While configurability is pervasive, it can also lead to faults (or misconfigurations) and make program evolution challenging. Dependencies can be missed, essential code can be left in place when a configuration option is removed, or code can be deleted or changed when still in use by other configuration options. One challenge is a lack of sufficient documentation and traceability between configuration options and code during software evolution, which leads to limited understanding of the impact of changes across large configuration spaces. Existing approaches to solve these problems include automated documentation, analysis of version control history, or the use of special program configuration management languages. However, none of these provides a sufficient solution for managing configuration changes over time. In this thesis, we propose an automated approach called ConfiGen, which provides user-facing documentation and a back-end analysis showing the definitions and uses of configuration options. It includes traceability links to lines of program code and can be used to identify changes during system evolution. We have implemented a prototype of ConfiGen on top of a popular documentation tool and performed an empirical evaluation of its effectiveness on over 10 years of history for three C-language, highly configurable systems. We see that the configuration space becomes increasingly complex across versions, with up to a 40% increase in configuration density per file and a 128% increase in configuration footprint across the documentation, and git history analysis alone is insufficient."],"dc:format.mimetype":["PDF"],"dc:identifier.uri":["https://dr.lib.iastate.edu/handle/20.500.12876/106543"],"dc:language.iso":["en_US"],"dc:subject":["Computer science"],"dc:title":["Configuration-aware software documentation"],"dc:type":["Text"],"thesis:degree_discipline":["Computer science"],"thesis:degree_level":["thesis"],"thesis:degree_name":["Master of Science"],"thesis:institution_name":["Iowa State University - Thesis & Dissertation"]},"updated_at":"2026-07-24T02:38:12Z"}