Notice and Invitation
Oral Defense of Doctoral Dissertation
College of Engineering and Computing, George Mason University
Sahar Mehrpour
Bachelor of Science, Sharif University of Technology, 2011
Master of Science, University of Manitoba, 2016
Helping Developers Work with
Design Decisions
Tuesday, May 28, 2024, 11:00am-1:00pm
Engineering Building, Room 4201
https://gmu.zoom.us/j/91272054513?pwd=a3pPZHlyN3VDNTRudlB1T1ZQQVBlQT09
All are invited to attend.
Committee
Dr. Thomas LaToza, Chair
Dr. Paul Ammann
Dr. Brittany Johnson
Dr. Sungsoo Ray Hong
Dr. George Fairbanks
Abstract
When writing code, developers make design decisions by choosing between alternatives. Design decisions are the foundation of software, outlining the functional and non-functional attributes of the
software. Developers constantly work with design decisions when they identify or choose alternatives, document or reason about design decisions, or hypothesize a design decision
and test it against the code. Subsequent work with code requires reasoning about these design decisions, ensuring their code is consistent, and answering rationale questions about why they were made.
To understand design decisions, developers traditionally use design documentation. Traditional approaches to documentation rely on developers to write down design decisions and update them as the
code evolves. Unfortunately, documentation is often incomplete, outdated, and untrustworthy, pushing developers to learn design decisions directly from code. Moreover, learning decisions from code is challenging as developers may become disoriented and confused,
and have difficulty understanding the design rationale.
To address these problems, I introduced an innovative approach to documentation called `active documentation,' which makes design decisions explicit, making them checkable against the code and providing
instant feedback on any divergences between the code and the documentation. This approach helps developers understand design decisions through detailed explanations and code examples that demonstrate how to follow a design decision. Based
on this concept, I developed and evaluated a tool named ActiveDocumentation, which is shown to expedite and enhance the ability of developers to work with unfamiliar codebases. To simplify the creation and upkeep of active documentation, new methods are essential
for generating and modifying checkable design decisions. Therefore, I proposed two new methods: snippet-based authoring and semi-natural language authoring, which allow the authoring of checkable decisions in simple and expressive formats. I incorporated these
approaches into a new tool named RulePad, whose evaluation indicates it enables developers to author design rules more quickly and with greater precision. Additionally, to assist developers in finding undocumented design rules within a codebase, I developed
and evaluated a tool called DesignRuleMiner. This tool leverages frequent itemset mining techniques to identify potential design rules. The evaluation of DesignRuleMiner shows its effectiveness in supporting developers to comprehend the design rules of an
unfamiliar codebase more rapidly.