Grossman, Daniel JToman, John2019-05-022019-05-022019-05-022019Toman_washington_0250E_19727.pdfhttp://hdl.handle.net/1773/43662Thesis (Ph.D.)--University of Washington, 2019Configurations 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.application/pdfen-USCC BY-SAAbstract InterpretationDynamic AnalysisDynamic Configuration UpdatesProgramming LanguagesStatic AnalysisComputer scienceComputer science and engineeringLearning to Adapt: Analyses for Configurable SoftwareThesis