Augur Visualizing Software Development Activity

Download Report

Transcript Augur Visualizing Software Development Activity

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
– 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
2
Example
String.java
Frank
class String implements Comparable
String(char value[]){
Daniel
Feb ‘04
}
Jan ‘04
String substring(int index){
Amy
Feb ‘04
}
public int compareTo(Object o){
March ‘04
}
}
3
Artifact-Based Tools
String.java
Frank
class String implements Comparable
String(char value[]){
Daniel
August ‘02
}
Jan ‘00
String substring(int index){
Amy
July ‘02
}
public int compareTo(Object o){
March ‘04
}
}
4
Activity-Based Tools
String.java
Frank
class String implements Comparable
String(char value[]){
Daniel
August ‘02
}
Jan ‘00
String substring(int index){
Amy
July ‘02
}
public int compareTo(Object o){
March ‘04
}
}
5
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
6
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
7
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
8
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
9
SeeSoft
10
Date Legend
Mar 11
Mar 06
Feb 02
SeeSoft
1.3
1.3
1.3
1.3
1.1
1.1
1.3
1.3
1.3
1.2
1.2
1.2
1.1
1.3
1.3
1.3
1.1
1.2
1.1
1.1
1.1
(edward
(edward
(edward
(edward
(jon
(jon
(edward
(edward
(edward
(sandy
(sandy
(sandy
(jon
(edward
(edward
(edward
(jon
(sandy
(jon
(jon
(jon
11-Mar-04): /**
11-Mar-04): * This is a test class to demo Augur!
11-Mar-04): * @authors Jon, Sandy, Edward
11-Mar-04): */
02-Feb-04): public class HelloWorld {
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Default constructor
11-Mar-04):
*/
06-Mar-04): public HelloWorld(){
06-Mar-04):
Log.println(“Constructor called");
06-Mar-04): }
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Prints HelloWorld msg & logs call
11-Mar-04):
*/
02-Feb-04): public void printMessage(){
06-Mar-04):
Log.println("printMessage called");
02-Feb-04):
System.out.println("HelloWorld");
02-Feb-04): }
02-Feb-04): }//end HelloWorld class
11
HelloWorld.java
Author Legend
Sandy
Edward
Jon
SeeSoft
1.3
1.3
1.3
1.3
1.1
1.1
1.3
1.3
1.3
1.2
1.2
1.2
1.1
1.3
1.3
1.3
1.1
1.2
1.1
1.1
1.1
(edward
(edward
(edward
(edward
(jon
(jon
(edward
(edward
(edward
(sandy
(sandy
(sandy
(jon
(edward
(edward
(edward
(jon
(sandy
(jon
(jon
(jon
11-Mar-04): /**
11-Mar-04): * This is a test class to demo Augur!
11-Mar-04): * @authors Jon, Sandy, Edward
11-Mar-04): */
02-Feb-04): public class HelloWorld {
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Default constructor
11-Mar-04):
*/
06-Mar-04): public HelloWorld(){
06-Mar-04):
Log.println(“Constructor called");
06-Mar-04): }
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Prints HelloWorld msg & logs call
11-Mar-04):
*/
02-Feb-04): public void printMessage(){
06-Mar-04):
Log.println("printMessage called");
02-Feb-04):
System.out.println("HelloWorld");
02-Feb-04): }
02-Feb-04): }//end HelloWorld class
12
HelloWorld.java
Structure Legend
Augur
1.3
1.3
1.3
1.3
1.1
1.1
1.3
1.3
1.3
1.2
1.2
1.2
1.1
1.3
1.3
1.3
1.1
1.2
1.1
1.1
1.1
(edward
(edward
(edward
(edward
(jon
(jon
(edward
(edward
(edward
(sandy
(sandy
(sandy
(jon
(edward
(edward
(edward
(jon
(sandy
(jon
(jon
(jon
Constructor
Comment
Method
11-Mar-04): /**
11-Mar-04): * This is a test class to demo Augur!
11-Mar-04): * @authors Jon, Sandy, Edward
11-Mar-04): */
02-Feb-04): public class HelloWorld {
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Default constructor
11-Mar-04):
*/
06-Mar-04): public HelloWorld(){
06-Mar-04):
Log.println(“Constructor called");
06-Mar-04): }
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Prints HelloWorld msg & logs call
11-Mar-04):
*/
02-Feb-04): public void printMessage(){
06-Mar-04):
Log.println("printMessage called");
02-Feb-04):
System.out.println("HelloWorld");
02-Feb-04): }
02-Feb-04): }//end HelloWorld class
13
HelloWorld.java
Author Legend
Structure Legend
Sandy
Edward
Jon
Constructor
Comment
Method
Augur
1.3
1.3
1.3
1.3
1.1
1.1
1.3
1.3
1.3
1.2
1.2
1.2
1.1
1.3
1.3
1.3
1.1
1.2
1.1
1.1
1.1
(edward
(edward
(edward
(edward
(jon
(jon
(edward
(edward
(edward
(sandy
(sandy
(sandy
(jon
(edward
(edward
(edward
(jon
(sandy
(jon
(jon
(jon
Date Legend
Mar 11
Mar 06
Feb 02
11-Mar-04): /**
11-Mar-04): * This is a test class to demo Augur!
11-Mar-04): * @authors Jon, Sandy, Edward
11-Mar-04): */
02-Feb-04): public class HelloWorld {
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Default constructor
11-Mar-04):
*/
06-Mar-04): public HelloWorld(){
06-Mar-04):
Log.println(“Constructor called");
06-Mar-04): }
02-Feb-04):
11-Mar-04): /**
11-Mar-04):
* Prints HelloWorld msg & logs call
11-Mar-04):
*/
02-Feb-04): public void printMessage(){
06-Mar-04):
Log.println("printMessage called");
02-Feb-04):
System.out.println("HelloWorld");
02-Mar-04): }
02-Feb-04): }//end HelloWorld class
14
HelloWorld.java
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
15
Author Legend
Structure Legend
Sandy
Edward
Jon
Constructor
Comment
Method
Augur
LargerFile.java
File.java
Date Legend
Mar 11
Mar 06
Feb 02
LargestFile.java
HelloWorld.java
File2.java
SmallerFile.java
16
HelloWorld.java
Augur in Practice
•
Three examples follow that demonstrate
how relationships between artifact and
activity can be interpreted with Augur
17
Three Examples
1. The activity of commenting
18
Example One
Clearly there is a temporal pattern
here, but…
Conner
Constructor
Antoine
Comment
Conner
Method
Now we see, most recently added
lines are comments…
And comments were added by a
another author!
Antoine
Comment
Conner
Method
Antoine
Comment
Conner
Method
Not just detecting comments, but the
activity of commenting!
This richer characterization made
possible by the combination of
information.
19
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
23
Three Examples
1. The activity of commenting
2. Unification of views reveal richer notions
of activity
24
Unification of Views
25
Three Examples
1. The activity of commenting
2. Unification of views reveal richer notions
of activity
3. Exploring changes in context
26
In Context
27
28
FileTree Explorer
Controls and Color Legend
Primary Visualization Window
(Augmented Seesoft View)
Secondary Visualizations
29
Architecture
30
Extensibility
• Supports
1. Multiple Version
Control Systems
2. Multiple analytic tools
3. Multiple visualizations
31
Ongoing &
Future Work
• Exploring temporal activity patterns in
source code
• Exploring social networking patterns in
source code
• Applying Augur philosophy in other
environments
32
Past 124
Hours3 Months
Past
2 Year
1
Years,
Month
Week
Temporal Patterns
33
Author “bmazur”
Selected
“hawkprime”
“oscarmm”
“suvarov”
Selected
Selected
Selected
34
Social Patterns
35
36
37
38
Integrating Augur
Philosophy
39
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
40
Thank You
Download Augur:
http://www.isr.uci.edu/projects/augur
Contact :
[email protected]
[email protected]
41