Xiaomin Wu University of Victoria xwu@cs.uvic.ca Adam Murray University of Ottawa amurray@site.uottawa.ca Margaret-Anne Storey University of Victoria mstorey@uvic.ca Rob Lintern University of Victoria rlintern@uvic.ca
Abstract
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.
1. Introduction
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,
References: [1] Ball, T. A. and Eick, S. G. 1996. Software visualization in the large [18] Shneiderman, B. and Wattenberg, M. 2001. Ordered Treemap Layouts [2] Best, C., Storey, M.-A. and Michaud, J. 2002. Designing a Component-Based Framework for Visualization in Software Engineering and Knowledge Engineering [3] Card, S. K., Mackinlay, J. D., and Shneiderman, B. 1999. [4] CVS 2004. The CVS website: http://www.cvshome.org/ [5] Dourish, P. 2002. “Visualizing Software Development Activity”: http://www.isr.uci.edu/projects/augur/ [6] Eclipse Platform, 2004. The Eclipse Platform Subproject Webpage: http://www.eclipse.org/platform/index.html [7] Eick, S. G., Steffen, J. L., and Summer, E. E. 1992. Seesoft – A tool for visualizing line oriented software statistics [26] Ware, C. 2000. Information Visualization, perception for design [27] WinCVS 2004. WinCVS website: http://www.wincvs.org/ [9] German, D., Hindle, A., and Jordan N., 2004 [10] Lintern, R., Michaud, J., Storey, M.-A., and Wu, X. 2003. [11] McGuire, K. 2002. VCM 2.0 Story (article in Eclipse website: http://dev.eclipse.org/viewcvs/index.cgi/platformvcm-home/docs/online/vcm_story2.0/vcm2story.html) [12] Nielsen, J. 1993. Usability Engineering. Academic Press. [13] Northover, S. 2001. SWT: The Standard Widget Toolkit, http://www.Eclipse.org/articles/Article-SWT-Design1/SWT-Design-1.html