Back to results

George Mason University

Helping Developer Work with Design Decisions

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.

Author and committee

dc:creator, dc:contributor.*
Author
  • Mehrpour, Sahar

Identifiers

dc:identifier.*
Identifier
hdl:1920/14317
OAI identifier oai:identifier
oai:MARS:1920/14317

Chain of custody

source
Harvested from
George Mason University
Base URL
mars.gmu.edu/server/oai/request
Last updated
2026-07-27
Source record
OAI-PMH GetRecord
related terms
citation

Mehrpour, Sahar. Helping Developer Work with Design Decisions. 2024.