Software continues to evolve long after the first version is released. Changes made to source code in the course of evolution might not have the intended semantics (fix bugs, add features), which negatively impacts both software producers and software consumers, and has high economic costs. More generally, the software evolution process is not very well understood. To remedy this situation, this work will use information derived from analyzing software history in two ways. First, to develop a type systems-based approach named differential typing, that enables reasoning about the properties of source code before and after a change has been made, and reveals the semantics of source code changes at development time. Second, to construct a framework for declarative hypothesis testing that automates and simplifies the process of conducting empirical studies in software evolution, and software engineering in general.
The interdisciplinary foundation of this work will catalyze interaction between two primary communities, programming languages and software engineering. The results of this research will lead to a better understanding of how software evolves, and to improvements in the software evolution process. By making the semantics of software changes explicit and revealing certain kinds of errors before software is deployed, the incidence of, and costs associated with, software bugs and incorrect software updates are reduced. The project will transform the way researchers conduct empirical software evolution studies by shifting the focus from how hypotheses are tested to what the right hypotheses are. The contributions will be made publicly available, which will benefit not only the research community, but also the software development community. Ideas from this work will be incorporated into education, so that tomorrow's graduates are better prepared to tackle software evolution challenges.
|Effective start/end date||4/1/12 → 6/30/16|
- National Science Foundation: $394,040.00