Shriram Krishnamurthi Brown University
As programs evolve, their code becomes increasingly tangled by the addition of both programmers and requirements. This mosaic quality complicates program comprehension and maintenance. The lack of quality documentation in most systems further complicates this process.
A new developer is likely to approach a system with the same mindset as a user, viewing the system as a collection of features, not in terms of its internal structure. The proposed research thus describes program fragments in terms of the features they impact, so developers can assess the effect their changes are likely to have and, in particular, be alerted to unexpected consequences. It will do this by exploiting information provided in the program's test suites.
The proposal should result in tools to help programmers such as a better, ``semantic'' code browser; an assistant to generate better version-control documentation; and an analysis of test suite dependencies. It will also study questions that facilitate future programming language design. Broader impact will include introducing new, related ideas into software engineering education and training undergraduates to conduct research.