1 / 41

Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams

Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams. Jon Froehlich and Paul Dourish Interactive & Collaborative Technologies Group School of Information and Computer Science University of California, Irvine. Overview. Software development is complex

brasen
Download Presentation

Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams Jon Froehlich and Paul Dourish Interactive & Collaborative Technologies Group School of Information and Computer Science University of California, Irvine

  2. Overview • Software development is complex • Involves dealing with complexity of source code (artifact) • Distributed software development is even more complex • Involves dealing with both complexity of artifact and` activities around that artifact • These two sources of complexity are not independent • Our approach seeks to combine them in a familiar visual frame

  3. Frank class String implements Comparable String(charvalue[]){ Daniel Feb ‘04 } Jan ‘04 String substring(int index){ Amy Feb ‘04 } publicintcompareTo(Objecto){ March ‘04 } } Example String.java

  4. Frank class String implements Comparable String(charvalue[]){ Daniel August ‘02 } Jan ‘00 String substring(int index){ Amy July ‘02 } publicintcompareTo(Objecto){ March ‘04 } } Artifact-Based Tools String.java

  5. Frank class String implements Comparable String(charvalue[]){ Daniel August ‘02 } Jan ‘00 String substring(int index){ Amy July ‘02 } publicintcompareTo(Objecto){ March ‘04 } } Activity-Based Tools String.java

  6. Separation • This separation makes it difficult to see elements that involve both artifact and activity: • Who has been working on new sections of code? • Which developers have worked together recently and on what functions/files? • or more complicated questions like • What modules depend on those recently updated

  7. Our Approach • To address this separation, we’ve developed a visualization tool called Augur. • Augur uses the source code itself to reveal information about development activity • The source code becomes a unifying principle with which to reveal information about its development

  8. Our Approach • Augur relies on existing configuration management systems for its activity data • Currently supports CVS • Augur performs language/structural analysis to better understand semantics of code

  9. Visualizations • Visualizations shift load from cognitive system to perceptual system • Leverage visual system’s ability to perceive patterns and structures • Visualizations allow user to process large amounts of information in a consumable way

  10. SeeSoft

  11. Date Legend Mar 11 Mar 06 Feb 02 Date Legend Mar 11 Mar 06 Feb 02 SeeSoft 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Thisisatestclassto demo Augur! 1.3 (edward 11-Mar-04):*@authorsJon, Sandy, Edward 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicclass HelloWorld { 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Defaultconstructor 1.3 (edward 11-Mar-04):*/ 1.2 (sandy 06-Mar-04):public HelloWorld(){ 1.2 (sandy 06-Mar-04): Log.println(“Constructor called"); 1.2 (sandy 06-Mar-04): } 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*PrintsHelloWorldmsg&logscall 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicvoid printMessage(){ 1.2 (sandy 06-Mar-04): Log.println("printMessage called"); 1.1 (jon 02-Feb-04): System.out.println("HelloWorld"); 1.1 (jon 02-Feb-04): } 1.1 (jon 02-Feb-04): }//end HelloWorld class HelloWorld.java Temporal Activity

  12. Author Legend Sandy Edward Jon SeeSoft 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Thisisatestclassto demo Augur! 1.3 (edward 11-Mar-04):*@authorsJon, Sandy, Edward 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicclass HelloWorld { 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Defaultconstructor 1.3 (edward 11-Mar-04):*/ 1.2 (sandy 06-Mar-04):public HelloWorld(){ 1.2 (sandy 06-Mar-04): Log.println(“Constructor called"); 1.2 (sandy 06-Mar-04): } 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*PrintsHelloWorldmsg&logscall 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicvoid printMessage(){ 1.2 (sandy 06-Mar-04): Log.println("printMessage called"); 1.1 (jon 02-Feb-04): System.out.println("HelloWorld"); 1.1 (jon 02-Feb-04): } 1.1 (jon 02-Feb-04): }//end HelloWorld class HelloWorld.java

  13. Structure Legend Constructor Comment Method Augur 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Thisisatestclassto demo Augur! 1.3 (edward 11-Mar-04):*@authorsJon, Sandy, Edward 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicclass HelloWorld { 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Defaultconstructor 1.3 (edward 11-Mar-04):*/ 1.2 (sandy 06-Mar-04):public HelloWorld(){ 1.2 (sandy 06-Mar-04): Log.println(“Constructor called"); 1.2 (sandy 06-Mar-04): } 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*PrintsHelloWorldmsg&logscall 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicvoid printMessage(){ 1.2 (sandy 06-Mar-04): Log.println("printMessage called"); 1.1 (jon 02-Feb-04): System.out.println("HelloWorld"); 1.1 (jon 02-Feb-04): } 1.1 (jon 02-Feb-04): }//end HelloWorld class HelloWorld.java

  14. Author Legend Sandy Edward Jon Structure Legend Constructor Comment Method Date Legend Mar 11 Mar 06 Feb 02 Structure Legend Constructor Comment Method Whitespace Augur 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Thisisatestclassto demo Augur! 1.3 (edward 11-Mar-04):*@authorsJon, Sandy, Edward 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicclass HelloWorld { 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*Defaultconstructor 1.3 (edward 11-Mar-04):*/ 1.2 (sandy 06-Mar-04):public HelloWorld(){ 1.2 (sandy 06-Mar-04): Log.println(“Constructor called"); 1.2 (sandy 06-Mar-04): } 1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04):/** 1.3 (edward 11-Mar-04):*PrintsHelloWorldmsg&logscall 1.3 (edward 11-Mar-04):*/ 1.1 (jon 02-Feb-04):publicvoid printMessage(){ 1.2 (sandy 06-Mar-04): Log.println("printMessage called"); 1.1 (jon 02-Feb-04): System.out.println("HelloWorld"); 1.1 (jon 02-Mar-04): } 1.1 (jon 02-Feb-04): }//end HelloWorld class HelloWorld.java

  15. Big Picture: on March 6th, Sandy added logging functionality to HelloWorld. How? * Adding a constructor * Adding one line to an existing method Augur • Source code is the common artifact around which developer activities take place • The code itself provides a common & familiar space in which to reveal information about development activity • Code becomes a unifying structure for organizing many different types of information /** * This is a test class to demo Augur! * @authors Jon, Sandy, Edward */ publicclass HelloWorld { /** * Default constructor */ public HelloWorld(){ Log.println(“Constructor called"); } /** * Prints HelloWorld msg & logs call */ publicvoid printMessage(){ Log.println("printMessage called"); System.out.println("HelloWorld"); } }//end HelloWorld class

  16. Author Legend Sandy Edward Jon Structure Legend Constructor Comment Method Date Legend Mar 11 Mar 06 Feb 02 LargerFile.java LargestFile.java File.java SmallerFile.java File2.java Augur HelloWorld.java HelloWorld.java

  17. Augur in Practice • Three examples follow that demonstrate how relationships between artifact and activity can be interpreted with Augur

  18. Three Examples • The activity of commenting

  19. Structure Legend Constructor Comment Import Field Method Whitespace Conner Constructor Antoine Comment Conner Method Antoine Comment Conner Method Antoine Comment Conner Method Example One Clearly there is a temporal pattern here, but… Now we see, most recently added lines are comments… And comments were added by a another author! Not just detecting comments, but the activity of commenting! This richer characterization made possible by the combination of information. It appears that there are relationships between temporality and artifact! First the methods were added and then, 6 months later, the comments were added/modified.

  20. Author Activity

  21. Author Activity

  22. Author Activity • Majority of author’s development activity is commenting • This is easily discernible • Tying together multiple views makes this inference possible Project Length: 4 yrs, 4 mos old Author’s First Commit: ~1 year ago Observation: 74% of lines are comments

  23. Three Examples • The activity of commenting • Unification of views reveal richer notions of activity

  24. Unification of Views

  25. Three Examples • The activity of commenting • Unification of views reveal richer notions of activity • Exploring changes in context

  26. Structure Legend Constructor Comment Import Field Method Whitespace In Context Commit Log Commit Date: 05/09/04 Author: offkey Comment: TestMultiLabeller.java added Comment: Tests GlobalStringLabeller.java

  27. Controls and Color Legend Primary Visualization Window (Augmented Seesoft View) FileTree Explorer Secondary Visualizations

  28. Architecture

  29. Extensibility • Supports 1. Multiple Version Control Systems 2. Multiple analytic tools 3. Multiple visualizations

  30. Ongoing & Future Work • Exploring temporal activity patterns in source code • Exploring social networking patterns in source code • Applying Augur philosophy in other environments

  31. Temporal Patterns Past 24 Hours Past 24 Hours Past 2 Years, 3 Months Past 1 Month Past 1 Week Past 1 Year

  32. Author “bmazur” Selected Author “suvarov” Selected Author “oscarmm” Selected Author “hawkprime” Selected

  33. Social Patterns

  34. Integrating Augur Philosophy

  35. Conclusion • Activity information is situated within the source code • Source code is an “inhabited space” • Exposing activity information in the context of code provides a richer understanding of the relationship between them

  36. Thank You Download Augur: http://www.isr.uci.edu/projects/augur Contact : jfroehli@ics.uci.edu jpd@ics.uci.edu

More Related