Tuesday, April 19, 2016 at 5:00 PM in Rice 242
Advisor: Westley Weimer
Committee Members: : Baishakhi Ray (Committee Chair), Jason Lawrence, Stephanie Forrest (University of New Mexico) and Chad Dodson (Minor Representative)
Title: Improving Program Acceptability Through Source Code Transformations
ABSTRACT: Today’s software may need to satisfy a wide range of users with a broad set of expectations. In addition to functional requirements, software is subject to a number of non-functional requirements. For example, some users might require certain minimal levels of performance, such as interactive response times, while others require bounded energy consumption to maximize battery life, and yet others desire the most accurate physical simulation possible. Moreover, the long life cycles of large software projects often cast programmers themselves as users of the software source code, which must therefore balance maintainability against other requirements. Producing software that is acceptable to different user bases requires tuning the trade-offs between various functional and non-functional requirements.
In part because of the variety of non-functional requirements, a number of mechanisms have been proposed to evaluate or ensure them. Many of these involve significant additional effort. For example, some approaches to performance tuning require software to be organized in a particular modular style during implementation. Additionally, after the original implementation, coding style may be standardized through formal code reviews.
My research aims to provide automatic assistance in managing non-functional requirements to developers. I target existing software artifacts—the programs they would write anyway—instead of requiring a particular design paradigm. I leverage the hypothesis that competent programmers produce software that is close to acceptable, possessing many of the desired properties, and use local source code transformations to improve the properties further. I propose to apply this approach to three problem domains. First, I propose to use program transformations to help programmers balance run time and visual quality in graphics programs. Second, I propose to employ search-based software engineering techniques to identify transformations that reduce the energy requirements of large data center applications. Finally, I propose to investigate the impact of transforming typographical coding style on developers’ performance maintaining that code.