Navigation
Main
Background
People
  Community
  Download
  Links
   
 
Project Description

Overview

STITCH is a program comprehension tool that aims to support program understanding by linking together information from different levels of abstraction from various artifacts. It is designed for use in the Extreme Programming (XP) environment. STITCH takes advantage of key practices in XP. In particular, development starts with the Planning Game practice and user stories that are written on index cards. Work is then assigned based on these stories and cards. The next key practice that comes into play is Test-Driven Development, in which test cases are implemented before the code is written. Based on the sequence in which artifacts are created, STITCH links User Stories to test cases and then to source code. STITCH tracks changes made to either User Stories, test cases and source code. It keeps track of links among related artifacts and providing higher-level and domain information to developers, thereby aiding program comprehension in a dynamic fashion.

Motivation

Program comprehension is a necessary first step of various core activities in software developement such as code reviewing, debugging, refactoring, maintainence and code reusing. Previous empirical studies [Wiedenbeck93] have found that although programers might use different comprehension strategies in order to understand a program, they must construct a number of mental models at different levels of abstraction: domain model, program model and situation model. In addition, they needed to be able to form mappings between the three models. However, as current software systems increase in size and complexity, creating complete models and their mapping become very difficult, especially when the system is evolving and changes are frequently made.

We seek to address the problem of providing software developers with information necessary to construct mental models at the different levels of abstraction and form mappings between them. Therefore, our goal is to construct a tool to link different kinds of software artifacts, and to manage these links. It will allow disparate software artifacts to evolve separately while still being able to provide necessary traceability information to aid in program comprehension.