Supporting software history exploration

Software developers often confront questions such as "Why was the code implemented this way"? To answer such questions, developers make use of information in a software system's bug and source repositories. In this paper, we consider two user interfaces for helping a developer explore information from such repositories. One user interface, from Holmes and Begel's Deep Intellisense tool, exposes historical information across several integrated views, favouring exploration from a single code element to all of that element's historical information. The second user interface, in a tool called Rationalizer that we introduce in this paper, integrates historical information into the source code editor, favouring exploration from a particular code line to its immediate history. We introduce a model to express how software repository information is connected and use this model to compare the two interfaces. Through a lab experiment, we found that our model can help predict which interface is helpful for a particular kind of historical question. We also found deficiencies in the interfaces that hindered users in the exploration of historical information. These results can help inform tool developers who are presenting historical information either directly from or mined from software repositories.

[1]  Thomas D. LaToza,et al.  Hard-to-answer questions about code , 2010, PLATEAU '10.

[2]  Mik Kersten,et al.  Using task context to improve programmer productivity , 2006, SIGSOFT '06/FSE-14.

[3]  Andrew Begel,et al.  Deep intellisense: a tool for rehydrating evaporated information , 2008, MSR '08.

[4]  Lucian Voinea,et al.  Visual querying and analysis of large software repositories , 2008, Empirical Software Engineering.

[5]  Brad A. Myers,et al.  An Exploratory Study of How Developers Seek, Relate, and Collect Relevant Information during Software Maintenance Tasks , 2006, IEEE Transactions on Software Engineering.

[6]  Paul Dourish,et al.  Unifying artifacts and activities in a visual tool for distributed software development teams , 2004, Proceedings. 26th International Conference on Software Engineering.

[7]  Gail C. Murphy,et al.  Hipikat: recommending pertinent software development artifacts , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[8]  Gina Venolia Textual Allusions to Artifacts in Software-Related Repositories , 2006, MSR '06.

[9]  NovaisRenato Lima,et al.  Software evolution visualization , 2007 .

[10]  Thomas D. LaToza,et al.  Maintaining mental models: a study of developer work habits , 2006, ICSE.

[11]  Gail C. Murphy,et al.  Questions programmers ask during software evolution tasks , 2006, SIGSOFT '06/FSE-14.

[12]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[13]  G. Lommerse,et al.  The visual code navigator: an interactive toolset for source code investigation , 2005, IEEE Symposium on Information Visualization, 2005. INFOVIS 2005..

[14]  Allen Newell,et al.  Computer text-editing: An information-processing analysis of a routine cognitive skill , 1980, Cognitive Psychology.

[15]  P. Cederqvist,et al.  Version Management with CVS , 1993 .

[16]  Christoph Treude,et al.  Mashup environments in software engineering , 2010, Web2SE '10.

[17]  Lucian Voinea,et al.  CVSscan: visualization of code evolution , 2005, SoftVis '05.

[18]  John T. Stasko,et al.  Visualization of test information to assist fault localization , 2002, ICSE '02.

[19]  Allen Newell,et al.  The keystroke-level model for user performance time with interactive systems , 1980, CACM.

[20]  Robert DeLine,et al.  Information Needs in Collocated Software Development Teams , 2007, 29th International Conference on Software Engineering (ICSE'07).

[21]  Thomas Fritz,et al.  Using information fragments to answer the questions developers ask , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[22]  Thomas D. LaToza,et al.  On the importance of understanding the strategies that developers use , 2010, CHASE '10.