UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

Leveraging developer discussions to improve design accessibility Viviani, Giovanni

Abstract

Since the inception of software engineering, the design of a software system has been recognized as one of its most important attributes. A software system’s design determines many of its properties, such as maintainability and performance. One might expect that there is a common and well-established understanding about what software design is and is not. Such an understanding is not evident in the literature, where design has been described in many ways such as large-scale architecture and low-level design patterns, to name just a few. At the same time, an understanding of design is also needed to maintain system properties as changes to the system are made. When developers lose track of the overall design, the system may not conform to its intended properties. Unfortunately, many systems do not have up-to-date design documentation and approaches to recover design often focus on how a system works by extracting structural and behavioural information rather than why it was designed to work like that. In this thesis, we propose an automated approach to extract design information from written discussions between developers. The aim is to make this information accessible to developers, helping them understand the design of a system and make better design decisions. First, we present an interview study we conducted to understand what researchers and practitioners consider as software design. These interviews revealed five recurring topics that can help inform what software design truly represents. We then introduce a classifier able to locate paragraphs in discussions, which we call design points, that pertain to design. Results show that this classifier is able to locate design information with high accuracy even in systems that it was not trained on. We describe a study conducted with software developers that shows that newcomers to a project, when provided with design points relevant to a programming task, are able to interpret and use the design information to consider additional design alternatives. We finally discuss an early exploration into the use of semantic frames to identify useful design points.

Item Citations and Data

Rights

Attribution-NonCommercial-NoDerivatives 4.0 International