Font Size: a A A

Creating, maintaining and building task specific concern maps for supporting as-needed program comprehension

Posted on:2011-01-03Degree:Ph.DType:Dissertation
University:University of California, IrvineCandidate:Ratanotayanon, SukanyaFull Text:PDF
GTID:1445390002955658Subject:Computer Science
Abstract/Summary:PDF Full Text Request
Mappings from concerns to their implementation (called "concern maps") can help programmers who use the "As-Needed" program comprehension strategy to more accurately identify code sections that are relevant to their tasks, even when there are cross-cutting concerns. But in order for concern maps to be effective, they must stay up to date. Inaccurate concern maps provide little help and can even mislead programmers.;A concern map can become out of date due to lack of synchrony with evolution of the source code and the underlying conceptual concern. This is a challenging problem, especially for extensional concern maps, which list their members explicitly. To explore the evolvability of different concern map representations, I have created three prototype tools that use different concern map representations and employ varying data sources to synchronize concern members with code. To keep up with concern evolution, these tools provide semi-automatic mechanisms to record new members and provide visualizations to help developers to be more aware of their concern models.;The above tools were used in an empirical study to examine characteristics of concern map representations and mechanisms to keep them up to date during software evolution. This study traced the evolution of the "syntax highlighting" concern of jEdit (98KLOC) across 34 major releases. The results showed that the various concern map representations performed similarly during software evolution. However compared to intensional concern maps, extensional concern maps had a higher fidelity and were more portable.;The use of concern maps in an IDE to help programmers deal with scattered concern implementations was validated in a small user study. Subjects received a task description in a Change Request Proposal (CRP), either on paper or as concern maps in our tool, and they were asked to implement the changes. The results showed that both groups were able to make changes in approximately the same amount of time. However, subjects who used our tool made more accurate changes and were less likely to become disoriented.;While keeping concern maps up to date is important, it is not sufficient. It is not possible to have all concern maps prepared for every future task. To address this challenge, I present an approach for creating an ad hoc concern map by searching a repository, which consists of concern map fragments. These concern map fragments are created from information extracted from common software tools, e.g. changesets from revision control systems. The task descriptions contained in the concern map fragments allows programmers to search for members of a concern using conceptual keywords. To improve the search results, members of these fragments are expanded using a static dependency graph (SDG) and ranked to identify important members.;An empirical study was performed to evaluate the effectiveness of the above technique, especially the usefulness of data sources used to locate concern members. In this study, we compared results of creating ad hoc concern maps using five searchable repositories built from the varying combinations of change sets, bug reports and feature requests, and SDGs. The results showed that using the combination of changesets with bug reports and feature requests provided the best balance of precision and recall rates and a manageable size of results. We also found that the large-scale refactoring decreases the effectiveness of using changesets data.;In summary, incorporating tools that enable programmers to access concern maps show promising results in helping them to better focus on information relevant to their tasks. This dissertation provides an insight into the evolvability of concern map representations and effectiveness of different evolution mechanism. This insight will be useful in informing the design of the tools that integrate concern maps into the software lifecycle. In addition, this dissertation presents a novel approach for creating an ad hoc concern map by searching changesets for members of a concern.
Keywords/Search Tags:Concern, Creating, Members, Task, Programmers, Changesets
PDF Full Text Request
Related items