unifying artifacts and activities in a visual tool for distributed software development teams jon...

41
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

Upload: asher-rice

Post on 04-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

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

Jon Froehlich and Paul DourishInteractive & 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

String.java

class String implements Comparable

}

String substring(int index){

}

}

String(char value[]){

}

public int compareTo(Object o){

Example

Amy

Frank

Daniel

Jan ‘04

March ‘04

Feb ‘04

Feb ‘04

4

String.java

class String implements Comparable

}

String substring(int index){

}

}

String(char value[]){

}

public int compareTo(Object o){

Artifact-Based Tools

Amy

Frank

Daniel

Jan ‘00

March ‘04

August ‘02

July ‘02

5

String.java

Activity-Based Tools

Amy

Frank

Daniel

Jan ‘00

March ‘04

August ‘02

July ‘02

class String implements Comparable

}

String substring(int index){

}

}

String(char value[]){

}

public int compareTo(Object o){

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

1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * This is a test class to demo Augur!1.3 (edward 11-Mar-04): * @authors Jon, Sandy, Edward1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public class HelloWorld {1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * Default constructor1.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): * Prints HelloWorld msg & logs call1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public void 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

SeeSoft

HelloWorld.java

Date Legend

Mar 11Mar 06Feb 02

Date Legend

Mar 11Mar 06Feb 02

12

1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * This is a test class to demo Augur!1.3 (edward 11-Mar-04): * @authors Jon, Sandy, Edward1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public class HelloWorld {1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * Default constructor1.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): * Prints HelloWorld msg & logs call1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public void 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

SeeSoft

HelloWorld.java

Author Legend

SandyEdwardJon

Author Legend

SandyEdwardJon

13

1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * This is a test class to demo Augur!1.3 (edward 11-Mar-04): * @authors Jon, Sandy, Edward1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public class HelloWorld {1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * Default constructor1.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): * Prints HelloWorld msg & logs call1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public void 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

Augur

HelloWorld.java

Structure Legend

ConstructorCommentMethod

Structure Legend

ConstructorCommentMethod

14

Augur1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * This is a test class to demo Augur!1.3 (edward 11-Mar-04): * @authors Jon, Sandy, Edward1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public class HelloWorld {1.1 (jon 02-Feb-04): 1.3 (edward 11-Mar-04): /**1.3 (edward 11-Mar-04): * Default constructor1.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): * Prints HelloWorld msg & logs call1.3 (edward 11-Mar-04): */1.1 (jon 02-Feb-04): public void 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

Author Legend

SandyEdwardJon

Author Legend

SandyEdwardJon

Structure Legend

ConstructorCommentMethod

Structure Legend

ConstructorCommentMethod

Date Legend

Mar 11Mar 06Feb 02

Date Legend

Mar 11Mar 06Feb 02

15

• 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

Augur

16

Augur

HelloWorld.java

Author Legend

SandyEdwardJon

Author Legend

SandyEdwardJon

Structure Legend

ConstructorCommentMethod

Structure Legend

ConstructorCommentMethod

Date Legend

Mar 11Mar 06Feb 02

Date Legend

Mar 11Mar 06Feb 02

HelloWorld.java

SmallerFile.java

LargerFile.java LargestFile.javaFile.java

File2.java

17

Augur in Practice

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

18

Three Examples

1. The activity of commenting

19

Example One

Constructor

MethodComment

CommentMethod

CommentMethod

Conner

ConnerAntoine

AntoineConner

AntoineConner

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.

20

21

Author Activity

22

Author Activity

23

Author Activity

• Majority of author’s development activity is commenting– This is easily discernible

• Tying together multiple views makes this inference possible

24

Three Examples

1. The activity of commenting

2. Unification of views reveal richer notions of activity

25

Unification of Views

26

Three Examples

1. The activity of commenting

2. Unification of views reveal richer notions of activity

3. Exploring changes in context

27

In Context

28

29

Controls and Color LegendControls and Color Legend

Primary Visualization WindowPrimary Visualization Window

(Augmented Seesoft View)(Augmented Seesoft View)

Secondary VisualizationsSecondary Visualizations

FileTre

e E

xp

lore

rFileTre

e E

xp

lore

r

30

Architecture

31

Extensibility

• Supports1. Multiple Version

Control Systems

2. Multiple analytic tools

3. Multiple visualizations

32

Ongoing & Future Work

• Exploring temporal activity patterns in source code

• Exploring social networking patterns in source code

• Applying Augur philosophy in other environments

33

Past 2 Years, 3 MonthsPast 1 YearPast 1 MonthPast 1 WeekPast 24 Hours

Temporal Patterns

34

Author “hawkprime” SelectedAuthor “oscarmm” SelectedAuthor “suvarov” SelectedAuthor “bmazur” Selected

35

Social Patterns

36

37

38

39

Integrating Augur Philosophy

40

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

41

Thank You

Download Augur:

http://www.isr.uci.edu/projects/augur

Contact :

[email protected]

[email protected]