Supporting Software History Exploration Alexander W. J. Bradley Gail C. Murphy Software Practices Lab Department of Computer Science University of British Columbia
Supporting Software History Exploration – Bradley and Murphy – MSR Why was the code implemented this way? When, how, by whom and why was this code changed or inserted? What bugs are related to this code? Cf. LaToza, Venolia and DeLine, 2006; Ko, DeLine and Venolia, 2007; LaToza and Myers, 2010
Supporting Software History Exploration – Bradley and Murphy – MSR History exploration UI styles ● Element-based ● Separate views from editor ● Gives deep information related to single code element ● Line-based ● Integrated into editor (at side) ● Gives recent information for many code lines (breadth-first)
Supporting Software History Exploration – Bradley and Murphy – MSR Why was the code implemented this way? When, how, by whom and why was this code changed or inserted? What bugs are related to this code? Person Bug Code Revision
Supporting Software History Exploration – Bradley and Murphy – MSR
6 Deep Intellisense Holmes and Begel (MSR 2008) – as replicated for our experiments ● Element-based ● Separate views from editor ● Gives deep information related to single code element
Supporting Software History Exploration – Bradley and Murphy – MSR Deep Intellisense Selection of code elements (SCE)
Supporting Software History Exploration – Bradley and Murphy – MSR Deep Intellisense Opening of new view (ONV) Double-click
Supporting Software History Exploration – Bradley and Murphy – MSR Deep Intellisense Filter application (FA)
Supporting Software History Exploration – Bradley and Murphy – MSR Rationalizer ● Line-based ● Integrated into editor (at side) ● Gives recent information for many code lines (breadth-first)
Supporting Software History Exploration – Bradley and Murphy – MSR Rationalizer Opening of new view (ONV) Ctrl -click
Supporting Software History Exploration – Bradley and Murphy – MSR Rationalizer Filter application (FA)
Supporting Software History Exploration – Bradley and Murphy – MSR Rationalizer Visual scan while scrolling through column data (VS) Image credit for eye: Wikipedia (public domain image)
Supporting Software History Exploration – Bradley and Murphy – MSR Model Predictions “Deep history” prediction – Deep Intellisense will have a significant advantage over Rationalizer for finding entire history of elements with long history ● “History to source” prediction ● Rationalizer will have a significant advantage over Deep Intellisense for finding many sections of code affected by persons or bugs
Supporting Software History Exploration – Bradley and Murphy – MSR Deep History Find all the revisions that have affected a code element
Supporting Software History Exploration – Bradley and Murphy – MSR Deep History Find all the revisions that have affected a code element
Supporting Software History Exploration – Bradley and Murphy – MSR Deep History Deep Intellisense: 1 SCE
Supporting Software History Exploration – Bradley and Murphy – MSR Deep History Rationalizer: O(r) ONV r past revisions
Supporting Software History Exploration – Bradley and Murphy – MSR History to Source Find which code elements have been affected by a given bug or person
Supporting Software History Exploration – Bradley and Murphy – MSR History to Source... Deep Intellisense: O(E) SCE + O(E) FA E code elements in class
Supporting Software History Exploration – Bradley and Murphy – MSR History to Source Rationalizer: 1 FA + O(l a ) VS l a lines affected
Supporting Software History Exploration – Bradley and Murphy – MSR Summary of Predictions
Supporting Software History Exploration – Bradley and Murphy – MSR Evaluation – Overview 11 participants answered 8 questions – Focus on 5 “prediction-testing” questions – Look for whether user strategies conform to predictions – Measure correctness and user satisfaction Elicit user preferences about the two UIs Gather feedback about possible improvements Set A Set B Set A
Supporting Software History Exploration – Bradley and Murphy – MSR Results – Strategy Conformance For 9/10 question-tool combinations, observed user strategies were as difficult as expected – Usually took as many operations as predicted – For “history to source” questions, sometimes used alternative strategies that seemed at least as difficult as our predicted strategies
Supporting Software History Exploration – Bradley and Murphy – MSR Results – Measurements Significant differences (p <.05) in answer correctness scoresSignificant differences (p <.05) in user satisfaction scores
Supporting Software History Exploration – Bradley and Murphy – MSR Results – Tool & UI Preferences Preferences nearly evenly split for UI characteristics and tool preferences
Supporting Software History Exploration – Bradley and Murphy – MSR Results – General User Comments
Supporting Software History Exploration – Bradley and Murphy – MSR Discussion Improving UIs for history exploration – Allow for both breadth- and depth-based exploration Merge best features of DI and Rationalizer – Further studies needed to find relative frequencies of these kinds of tasks in practice Improving our model – Should take into account user confusion, disorientation and mistakes
Supporting Software History Exploration – Bradley and Murphy – MSR Related Work Information needs [Sillito, Murphy and De Volder, SIGSOFT/FSE 2006; LaToza, Venolia and DeLine, ICSE 2006; Ko, DeLine and Venolia, ICSE 2007; LaToza and Myers, PLATEAU 2010] Models of software history entities [ Čubranić and Murphy, ICSE 2003; Venolia, MSR 2006] User interaction strategies – GOMS [Card, Moran and Newell, 1980] Software visualization [e.g., Ball and Eick, 1996] –Software evolution visualization [e.g., Voinea and Telea, 2009]
Supporting Software History Exploration – Bradley and Murphy – MSR Summary Introduced Rationalizer, which provides extensive software history information integrated into editor Our model can help predict how hard users will have to work to answer history exploration questions with different UI styles Interested in the tools? Contact a.bradley [at] alumni.cs.ubc.ca