My dissertation relates to decisions that affect a software system's ease of change. All successful software systems change over time (enhancements, modifications, restructurings, etc.); as a result, ease of change is a desirable software property. Unfortunately, ease of change is difficult to achieve and sustain. When modifying an existing system, software engineers must simultaneously consider both the low-level details of their modification task and the effect that their decisions have on the system's overall ease of change. The software design literature contains numerous rules for building modifiable software; however, these abstract rules are often difficult to map to concrete elements of a software system.
I propose that static analysis of computer programs can be used to connect high-level software design rules to code. The key insight is to present analysis results in the form of scoped, streamlined design representations that can be co-displayed with code.
|
I have created a tool that
analyzes Java programs to generate scoped design
representations intended for use in the context of code. These design
representations are called "design snippets."
Design snippets help software engineers reason about ease
of change as they modify existing programs. Because they are co-displayed
with code, they are compatible with existing software evolution processes.
|
|