Design Snippets

Vibha Sazawal, University of Maryland, College Park, Department of Computer Science and UMIACS


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.


Download the Design Snippets Tool


Download some sample Java code to examine with the Design Snippets Tool