visualizing and navigating source code historytmm/courses/533-09/projects/alexb/finalpre… ·...

22
Introduction Approach Demonstration Lessons Learned Future Work Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of British Columbia December 14, 2009 Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 1 / 18

Upload: others

Post on 04-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Visualizing and Navigating Source Code History

Alex Bradley

CPSC 533CUniversity of British Columbia

December 14, 2009

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 1 / 18

Page 2: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Outline

1 IntroductionProblem DescriptionPrevious Work

2 Approach

3 Demonstration

4 Lessons Learned

5 Future Work

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 2 / 18

Page 3: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Problem Description

Domain: software engineeringTask: compare past revisions of a source code file to learn how itevolved

Which authors contributed to a certain section of the code?When was a given bug introduced, and by whom?See “big picture” of code history: when did large changes occur?

Major refactorings, introduction of important features. . .

Two-way comparison currently well-supported, but what aboutmany-revision comparisons and visualizing entire code history?

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 3 / 18

Page 4: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Previous Work: Two-way comparison tools

Existing interfaces such as Eclipse revision control UI providevery good support for two-way revision comparison

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 4 / 18

Page 5: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Previous Work: Visual Code Navigator1, CVSscan2

G. Lommerse1, F. Nossin1, L. Voinea1,2, A. Telea1,2, J. J. van Wijk2

Flow of vertical revision“stripes”, with lines colouredaccording to some property ofinterest

Statement typeAuthor of lineDifferences from otherrevisions

Focused on “big picture”visualization; comparison ofactual text of revisions lesswell supported

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 5 / 18

Page 6: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Previous Work: Visual Code Navigator1, CVSscan2

G. Lommerse1, F. Nossin1, L. Voinea1,2, A. Telea1,2, J. J. van Wijk2

Flow of vertical revision“stripes”, with lines colouredaccording to some property ofinterest

Statement typeAuthor of lineDifferences from otherrevisions

Focused on “big picture”visualization; comparison ofactual text of revisions lesswell supported

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 5 / 18

Page 7: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Project Approach

My solution: “Source Code History Navigator” (SCHN)

Implemented as Eclipse pluginKey techniques:

Overview+detail, focus+contextSmall mid-size multiples

High-level overview of entire revision history provided by “flow” ofrevision stripes, as in VCN/CVSscanStripes can be “expanded” into text viewers that display details ofrevision code

Many text viewers can be opened side-by-side, creating “smallmultiples” effect

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 6 / 18

Page 8: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Overview: Revision Flow

57 revisions, lines coloured by differences from neighbouring stripes

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 7 / 18

Page 9: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Overview: Revision Flow

57 revisions, lines coloured by code age

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 8 / 18

Page 10: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Overview: Revision Flow

57 revisions, lines coloured by authorship

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 9 / 18

Page 11: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Overview: Revision Flow

57 revisions, lines coloured by statement type

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 10 / 18

Page 12: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Detail: Many-revision comparison

Scrollbars of viewers can be locked together for easy navigationText lines coloured (matching stripes) to show differences fromneighbours (orange = both ways)

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 11 / 18

Page 13: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Mid-level overview

Reducing font size in text viewers provide “middle ground”between stripe overview and full-size text detail

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 12 / 18

Page 14: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Demonstration

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 13 / 18

Page 15: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Lessons: Grid view not very useful

Did not appear to have much benefit compared to row of revisionsComparing many revisions works well with linear visual scan andhorizontal scrolling; grid forces pair comparisons and“zigzagging” scan

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 14 / 18

Page 16: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Lessons: Grid view not very useful

Did not appear to have much benefit compared to row of revisionsComparing many revisions works well with linear visual scan andhorizontal scrolling; grid forces pair comparisons and“zigzagging” scan

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 14 / 18

Page 17: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Lessons: Colours are tricky

Large patches of saturated colour in author-of-line view grabattention and make it difficult to spot small changes

One-pixel lines can be tricky to spot in general

Multiple attempts at colouring neighbour differences

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 15 / 18

Page 18: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Lessons: Colours are tricky

Large patches of saturated colour in author-of-line view grabattention and make it difficult to spot small changes

One-pixel lines can be tricky to spot in general

Multiple attempts at colouring neighbour differences

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 15 / 18

Page 19: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Lessons: Colours are tricky

Large patches of saturated colour in author-of-line view grabattention and make it difficult to spot small changes

One-pixel lines can be tricky to spot in general

Multiple attempts at colouring neighbour differences

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 15 / 18

Page 20: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Future Work

Improvements to visualization techniquesKeep improving presentation of neighbour differences

Mouseover highlights for individual difference pairsCharacter-level differences in text viewers (currently only line diffs)How to present deletions?

Add legends for colours used (e.g. colour-to-author mapping)Scaling of stripes

Scale down stripes too big for window (how?)Scale up a flow of short stripes to fit window

Improve performanceImplement caching of CVS data (and computed diffs?)Optimize graphical rendering

Validation: Apply to more real codebases, do user studies

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 16 / 18

Page 21: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

References/Image Sources

G. Lommerse, F. Nossin, L. Voinea, and A. Telea. The visualcode navigator: An interactive toolset for source codeinvestigation. In INFOVIS ’05: Proceedings of the 2005 IEEESymposium on Information Visualization, page 4, Washington,DC, USA, 2005. IEEE Computer Society.

L. Voinea, A. Telea, and J. J. van Wijk. CVSscan: visualization ofcode evolution. In SoftVis ’05: Proceedings of the 2005 ACMsymposium on Software visualization, pages 47–56, New York,NY, USA, 2005. ACM.

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 17 / 18

Page 22: Visualizing and Navigating Source Code Historytmm/courses/533-09/projects/alexb/finalpre… · Visualizing and Navigating Source Code History Alex Bradley CPSC 533C University of

Introduction Approach Demonstration Lessons Learned Future Work

Questions?

Alex Bradley (UBC CPSC 533C) Visualizing & Navigating Source Code History December 14, 2009 18 / 18