CEC-ANNOUNCE-L Archives

May 2024

CEC-ANNOUNCE-L@LISTSERV.GMU.EDU

Options: Use Proportional Font
Show HTML Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
CS PHD Info <[log in to unmask]>
Reply To:
CS PHD Info <[log in to unmask]>
Date:
Wed, 22 May 2024 17:37:02 +0000
Content-Type:
multipart/alternative
Parts/Attachments:
text/plain (3199 bytes) , text/html (15 kB)
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.


ATOM RSS1 RSS2