Learning to Adapt: Analyses for Configurable Software
MetadataShow full item record
Configurations are powerful tools for end-user customization of software. For example, non-expert software users may customize the behavior of programs via option menus, system administrators may tune server behavior by editing configuration files, and software developers may specialize generic frameworks to suit their purposes with software annotations and configuration files. Although configurations are extremely powerful tools that increase software flexibility, they increase implementation complexity causing subtle bugs and confounding analysis tools. This dissertation considers the challenges posed by highly-configurable software and proposes that specialized program analyses can overcome these challenges. In particular, this dissertation explores two main topics. The first direction is creating program analyses to find defects in software that supports configuration changes at runtime. The second is the development of principled techniques for analyzing applications built on highly-configurable frameworks. These two research efforts are supported with formal proofs and empirical evaluations of proof-of-concept implementations.