A Reverse Engineering Approach to Support Software Maintenance: Version Control Knowledge Extraction Xiaomin Wu University of Victoria firstname.lastname@example.org Adam Murray University of Ottawa email@example.com Margaret-Anne Storey University of Victoria firstname.lastname@example.org Rob Lintern University of Victoria email@example.com
Most traditional reverse engineering tools focus on abstraction and analysis of source code, presenting a visual representation of the software architecture. This approach can be both helpful and cost effective in software maintenance tasks. However, where large software teams are concerned, with moderate levels of employee turnover, traditional reverse engineering tools can be inadequate. To address this issue, we examine the use of software process data, such as software artifact change history and developer activities. We propose the application of this data confers additional information developers need to better understand, maintain and develop software in large team settings. To explore this hypothesis, we evaluate the use of a tool, Xia, in the navigation of both software artifacts and their version history. This paper introduces Xia, reveals the results of our evaluation and proposes directions for future research in this area.
Reverse engineering is concerned with the analysis of existing software systems, with the aim of supporting software understanding, maintenance, reengineering and evolution activities through improved program comprehension. To facilitate understanding, traditional reverse engineering tools extract knowledge from source code and software documentation. However, this approach is rather limiting as often information concerning how the code was developed and the rationale for its design are lacking. Moreover, a piece of source code may be cryptic due to a lack of developer comments. The traditional reverse engineering approach involves analysis of source code and related software artifacts; yet, this approach is both time consuming and may not be able to solve the problem without communication between maintainer and original developer. However, it is difficult to tell who the original developer was through source code analysis alone. To find out who last worked on the code the maintainer must turn to the version log of the software. Therefore, we believe the vast information
generated in the software development process, which is usually stored in an associated version control tool, would provide useful information to support program understanding and maintenance. In this paper, we introduce a reverse engineering approach that abstracts information from both the source code and version logs. A tool, called Xia, was developed to analyze and browse software artifacts and associated versioning information. Xia has been tightly integrated with a full-featured IDE, the Eclipse platform. In Xia, advanced visual user interface techniques are used for browsing and interactively exploring software artifacts as well as the data in a CVS repository. A preliminary user study was conducted to evaluate both the usability and functionality of this tool. Section 2 gives some background on version control systems, and elicits our problems, which are described in Section 3. Section 4 introduces our approach to the design and implementation of Xia. The details and results of our user study are described in Section 5. In Section 6, we outline our improvements to Xia as a result of lessons learnt from the user study. Finally, Section 7 concludes the paper.
2. Background on version control tools
Presently, most medium to large-scale software projects are developed and maintained in association with a version control tool. Version control tools contribute to software projects in the following ways: software artifact management, change management and team work support. Software artifact management involves definition and control of software artifacts (including...
Please join StudyMode to read the full document