RTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmail

Post on 11-Nov-2014

414 views 0 download

Tags:

description

Slides of the presentation given at CSMR 2011, about our paper "RTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmail"

Transcript of RTFM (Read The Factual Mails) --Augmenting Program Comprehension with REmail

Augmenting Program Comprehension with REmail

Alberto Bacchelli, Michele Lanza, Vitezslav HumpaREVEAL @ Faculty of InformaticsUniversity of Lugano, Switzerland

Software maintenance impacts between 85% and 90% of the global cost of a system.Leveraging legacy system dollars for e-businessErlikh [IT Professional, 2(3), 2000]

Software maintenance impacts between 85% and 90% of the global cost of a system.Leveraging legacy system dollars for e-businessErlikh [IT Professional, 2(3), 2000]

Program comprehension takes up to 50%-60% of maintenance time.Program Understanding: Challenge for the 1990’sCorbi [IBM System Journal, 28(2), 1989]

Software maintenance impacts between 85% and 90% of the global cost of a system.Leveraging legacy system dollars for e-businessErlikh [IT Professional, 2(3), 2000]

Program comprehension takes up to 50%-60% of maintenance time.Program Understanding: Challenge for the 1990’sCorbi [IBM System Journal, 28(2), 1989]

Software maintenance impacts between 85% and 90% of the global cost of a system.Leveraging legacy system dollars for e-businessErlikh [IT Professional, 2(3), 2000]

Program comprehension takes up to 50%-60% of maintenance time.Program Understanding: Challenge for the 1990’sCorbi [IBM System Journal, 28(2), 1989]

Maintaining mental models: a study of developer work habitsLaToza, Venolia, DeLine [ICSE 2006]

Developers who need to understand code, and cannot find appropriate documentation, simply query other programmers.cannot find appropriate documentation

Why theyfor program comprehension?

cannot find appropriate documentation

Why theyfor program comprehension?

Superficial: Does not provide real context.

cannot find appropriate documentation

Why theyfor program comprehension?

Superficial: Does not provide real context.

Simplistic: Does not cover difficult cases.

cannot find appropriate documentation

Why theyfor program comprehension?

Superficial: Does not provide real context.

Simplistic: Does not cover difficult cases.

Narrow: Not all cases can be predicted.

cannot find appropriate documentation

Why theyfor program comprehension?

Superficial: Does not provide real context.

Simplistic: Does not cover difficult cases.

Narrow: Not all cases can be predicted.

Outdated: Code and documentation drift apart.

cannot find appropriate documentation

Why theyfor program comprehension?

Superficial: Does not provide real context.

Simplistic: Does not cover difficult cases.

Narrow: Not all cases can be predicted.

Outdated: Code and documentation drift apart.

Missing:

cannot find appropriate documentation

Emails

Number of emails

Number of emails

Emails

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

Number of emails

13,657 Emails

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

Number of emails

13,657emails

Emails

emails

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

Number of emails

13,657emailsin one (1)

Emails

emails

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

Number of emails

13,657emailsin one (1)month.

Emails

emails

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

emails are the“bread and butter ofproject communication.”—Karl Fogel, creator of Subversion

emailsEmails

0

1

2

3

4

5

6

0% 5% 10% 15% 20% 25% 30%

EmailsPlannedMeetings

UnplannedMeetings

Internal DocumentsBug Database

ExternalDocuments

Phone

Web

IM

Other

Effectiveness

Frequency of usage

EmailsPlannedMeetings

UnplannedMeetings

Internal DocumentsBug Database

ExternalDocuments

Phone

Web

IM

Other

Effectiveness

Frequency of usage

Emails are widely usedand highly effective

0

1

2

3

4

5

6

0% 5% 10% 15% 20% 25% 30%

Augmenting Program Comprehension with Emails

Drawbacks in using emails for program comprehension

Drawbacks in using emails for program comprehension

Information overload

Drawbacks in using emails for program comprehension

Information overload

Drawbacks in using emails for program comprehension

Information overload Separation fromactual development

Drawbacks in using emails for program comprehension

Information overload Separation fromactual development

0!

2000!

4000!

6000!

8000!

10000!

12000!

14000!

16000!

Jun-95

!Sep

-95!

Dec

-95!

Mar-96!

Jun-96

!Sep

-96!

Dec

-96!

Mar-97!

Jun-97

!Sep

-97!

Dec

-97!

Mar-98!

Jun-98

!Sep

-98!

Dec

-98!

Mar-99!

Jun-99

!Sep

-99!

Dec

-99!

Mar-00!

Jun-00

!Sep

-00!

Dec

-00!

Mar-01!

Jun-01

!Sep

-01!

Dec

-01!

Mar-02!

Jun-02

!Sep

-02!

Dec

-02!

Mar-03!

Jun-03

!Sep

-03!

Dec

-03!

Mar-04!

Jun-04

!Sep

-04!

Dec

-04!

Mar-05!

Jun-05

!Sep

-05!

Dec

-05!

Mar-06!

Jun-06

!Sep

-06!

Dec

-06!

Mar-07!

Jun-07

!Sep

-07!

Dec

-07!

Mar-08!

Jun-08

!Sep

-08!

Dec

-08!

Mar-09!

Jun-09

!Sep

-09!

Dec

-09!

Mar-10!

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 10% 20% 30%

Communicating about code Designing new featuresUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 10% 20% 30%

Communicating about code Designing new features

Understanding code - Tools

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 10% 20% 30%

Communicating about code Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

0

2

4

6

0% 15% 30%

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

0

2

4

6

0% 15% 30%

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

Debugger

Visual Studio Editor

0

2

4

6

0% 15% 30%

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

0

2

4

6

0% 15% 30%

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

0

2

4

6

0% 15% 30%

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

Readingcode

0

2

4

6

0% 15% 30%

0

2

4

6

0% 10% 20% 30%

Communicating about code

0

2

4

6

0% 13% 27% 40%

Designing new features

Understanding code - Tools

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Unplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

Readingcode

Debugging

Checkin messages

Tracestatements

Runningcode

Other

Views

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 13% 27% 40%

Designing new features

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

0

2

4

6

0% 15% 30%

Understanding code - Tools

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Readingcode

Debugging

Checkin messages

Tracestatements

Runningcode

Other

Views

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 13% 27% 40%

Designing new features

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

0

2

4

6

0% 15% 30%

Understanding code - Tools

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Readingcode

Debugging

Checkin messages

Tracestatements

Runningcode

Other

Views

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

0

2

4

6

0% 13% 27% 40%

Designing new features

Code editor

WhiteboardPaper

Word processorVisio

Other

VisualDesigns

0

2

4

6

0% 15% 30%

Understanding code - Tools

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Readingcode

Debugging

Checkin messages

Tracestatements

Runningcode

Other

Views

IDE

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Designing new features

0

2

4

6

0% 15% 30%

Understanding code - Tools

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

0

2

4

6

0% 15% 30% 45%

Understanding code - Techniques

Readingcode

Debugging

Checkin messages

Tracestatements

Runningcode

Other

Views

IDE

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Designing new features

0

2

4

6

0% 15% 30%

Understanding code - Tools

Debugger

Visual Studio Editor

SourceInsight

DiffOther

VI

ProfilerSQL

EmacsNotepad

SlickEdit

Understanding code - Techniques

IDE

IDE

0

2

4

6

0% 10% 20% 30%

Communicating about codeUnplanned Meetings

EmailsPlanned Meetings

Internal docsBug Database

Web External Docs

IM

OtherPhone

Designing new features

Understanding code - Tools Understanding code - Techniques

IDE

IDEIDE

Drawbacks in using emails for program comprehension

Information overload Separation fromactual development

Recommendation systems for software engineeringRobillard, Walker, Zimmermann [IEEE Software, 27(4), 2010]

Recommendation systems for software engineeringRobillard, Walker, Zimmermann [IEEE Software, 27(4), 2010]

I. A data-collection mechanism to store data and model artifacts.data-collection mechanism

Recommendation systems for software engineeringRobillard, Walker, Zimmermann [IEEE Software, 27(4), 2010]

I. A data-collection mechanism to store data and model artifacts.

II. A recommendation engine to analyze the data and give output.

data-collection mechanism

Recommendation systems for software engineeringRobillard, Walker, Zimmermann [IEEE Software, 27(4), 2010]

I. A data-collection mechanism to store data and model artifacts.

II. A recommendation engine to analyze the data and give output.

III. A user interface to trigger recommendations and show the results.

data-collection mechanism

data-collection mechanism

data-collection mechanism

Email data

data-collection mechanism

MBox

Email data

data-collection mechanism

MBox

Email data

data-collection mechanism

MBox

Email data

data-collection mechanism

MBox

Email data

data-collection mechanism

MBox

Email data

data-collection mechanism

MBox

Email data

data-collection mechanism

MBox

Recommendation systems for software engineeringRobillard, Walker, Zimmermann [IEEE Software, 27(4), 2010]

I. A data-collection mechanism to store data and model artifacts.

II. A recommendation engine to analyze the data and give output.

III. A user interface to trigger recommendations and show the results.

recommendation engine

recommendation engine

recommendation engine

MBox

recommendation engine

Linking E-Mails and Source Code ArtifactsBacchelli, Lanza, Robbes [ICSE 2010]

MBox

recommendation engine

Linking E-Mails and Source Code ArtifactsBacchelli, Lanza, Robbes [ICSE 2010]

MBox

recommendation engine

Linking E-Mails and Source Code ArtifactsBacchelli, Lanza, Robbes [ICSE 2010]

MBox

recommendation engine

Linking E-Mails and Source Code ArtifactsBacchelli, Lanza, Robbes [ICSE 2010]

MBox

Recommendation systems for software engineeringRobillard, Walker, Zimmermann [IEEE Software, 27(4), 2010]

I. A data-collection mechanism to store data and model artifacts.

II. A recommendation engine to analyze the data and give output.

III. A user interface to trigger recommendations and show the results.user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

user interface

Augmenting Program Comprehension with REmail

on program comprehension

on program comprehension

I. Finding Entry Points in a software system.Entry Points

on program comprehension

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

Entry Points

on program comprehension

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

Entry Points

on program comprehension

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

IV. Recovering Additional Documentation about system’s entities.

Entry Points

Mailing List

Classes

Emails

org.freenetproject.devl org.apache.mina.dev

22,859 21,079

1,424 408

on program comprehension

The Freenet Project

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

IV. Recovering Additional Documentation about system’s entities.

Entry Points

on program comprehension

on Entry Points

on Entry Points

on Entry Points

on Entry PointsThe Freenet Project

on Entry PointsThe Freenet Project

on Entry PointsThe Freenet Project

Node (74 emails).

PacketSender (61 emails).

PeerNode (67 emails).

RequestClient (98 emails).

on Entry PointsThe Freenet Project

Node (74 emails).

PacketSender (61 emails).

PeerNode (67 emails).

RequestClient (98 emails).

on Entry PointsThe Freenet Project

Node (74 emails).

PacketSender (61 emails).

PeerNode (67 emails).

RequestClient (98 emails).

“Are you interested in implementing message priorities? MessageItem and PacketSender are the most relevant classes.”

—Matthew Toseland, Main Freenet Developer, Jan 2008

on Entry Points

on Entry Points

MinaArchitecture

IO FilterChain

IO ServiceIO Filter

IO Handler

Remote PeerIO Session

MinaArchitecture

IO FilterChain

IO ServiceIO Filter

IO Handler

Remote PeerIO Session

on Entry Points

MinaArchitecture

IO FilterChain

IO ServiceIO Filter

IO Handler

Remote PeerIO Session

on Entry Points

Emails

MinaArchitecture

IO FilterChain

IO ServiceIO Filter

IO Handler

Remote PeerIO Session

on Entry Points

1,139Emails

MinaArchitecture

IO FilterChain

IO ServiceIO Filter

IO Handler

Remote PeerIO Session

on Entry Points

1,139 2,255Emails 416 487 341

MinaArchitecture

IO FilterChain

IO ServiceIO Filter

IO Handler

Remote PeerIO Session

on Entry Points

1,139 2,255Emails 416 487 341

IOBuffer (541 emails)

IOConnector (347 emails)

ProtocolCodecFilter (1,010 emails)

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

IV. Recovering Additional Documentation about system’s entities.

on program comprehension

Software Evolution Analysis

on Software Evolution Analysis

on Software Evolution Analysis

SCM Data

on Software Evolution Analysis

SCM Data Email Data

on Software Evolution

AvailablePortFinder

Base64

CircularQueue

ConcurrentHashSet

CopyOnWriteMap

DefaultExceptionMonitor

ExceptionMonitor

ExpirationListener

ExpiringMap

IdentityHashSet

LazyInitializedCacheMap

2006 2007 2008 2009 2010

Related email thread Class additionRelevant change Trivial change

on Software Evolution

AvailablePortFinder

Base64

CircularQueue

ConcurrentHashSet

CopyOnWriteMap

DefaultExceptionMonitor

ExceptionMonitor

ExpirationListener

ExpiringMap

IdentityHashSet

LazyInitializedCacheMap

2006 2007 2008 2009 2010

Related email thread Class additionRelevant change Trivial change

on Software Evolution

LazyInitializer

Log4jXmlFormatter

MapBackedSet

NamePreservingRunnable

SynchronizedQueue

Transform

2006 2007 2008 2009 2010

Related email thread Class additionRelevant change Trivial change

on Software Evolution

LazyInitializer

Log4jXmlFormatter

MapBackedSet

NamePreservingRunnable

SynchronizedQueue

Transform

2006 2007 2008 2009 2010

Related email thread Class additionRelevant change Trivial change

on Software Evolution

AvailablePortFinder

Base64

CircularQueue

ConcurrentHashSet

CopyOnWriteMap

DefaultExceptionMonitor

ExceptionMonitor

ExpirationListener

ExpiringMap

IdentityHashSet

LazyInitializedCacheMap

2006 2007 2008 2009 2010

Related email thread Class additionRelevant change Trivial change

on Software Evolution

AvailablePortFinder

Base64

CircularQueue

ConcurrentHashSet

CopyOnWriteMap

DefaultExceptionMonitor

ExceptionMonitor

ExpirationListener

ExpiringMap

IdentityHashSet

LazyInitializedCacheMap

2006 2007 2008 2009 2010

Related email thread Class additionRelevant change Trivial change

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

IV. Recovering Additional Documentation about system’s entities.

on program comprehension

Expert Finding

on Expert Finding

on

SCM Data

Expert Finding

on

SCM Data Email Data

Expert Finding

on Expert Finding

ExceptionMonitor

on

SCM Data

Expert Finding

ExceptionMonitor

Revision Date Author995,776 Oct 2010 elecharny

900,040 Jan 2010 elecharny

783,334 Jan 2009 elecharny

774,593 May 2009 elecharny

678,335 Jul 2008 mwebb

671,827 Jun 2008 jvermillard

576,217 Sep 2007 trustin

565,669 Aug 2007 trustin

555,855 Jul 2007 trustin

497,314 Jan 2007 trustin

on

SCM Data

Expert Finding

ExceptionMonitor

on

SCM Data

Expert Finding

Revision Date Author995,776 Oct 2010 elecharny

900,040 Jan 2010 elecharny

783,334 Jan 2009 elecharny

774,593 May 2009 elecharny

678,335 Jul 2008 mwebb

671,827 Jun 2008 jvermillard

576,217 Sep 2007 trustin

565,669 Aug 2007 trustin

555,855 Jul 2007 trustin

497,314 Jan 2007 trustin

ExceptionMonitor

elecharny

mwebb

jvermillard

trustin

Experts:

on

SCM Data

Expert Finding

Revision Date Author995,776 Oct 2010 elecharny

900,040 Jan 2010 elecharny

783,334 Jan 2009 elecharny

774,593 May 2009 elecharny

678,335 Jul 2008 mwebb

671,827 Jun 2008 jvermillard

576,217 Sep 2007 trustin

565,669 Aug 2007 trustin

555,855 Jul 2007 trustin

497,314 Jan 2007 trustin

ExceptionMonitor

elecharny mwebb jvermillard trustinExperts:

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

karasul

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

karasul

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

karasul

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

karasul

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

karasul

irving

on Expert Finding

ExceptionMonitor

Experts: elecharny mwebb jvermillard trustin

Email Data

karasul irving

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

IV. Recovering Additional Documentation about system’s entities.

on program comprehension

Additional Documentation

on Additional Documentation

on Additional Documentation

CircularQueue

on Additional Documentation

CircularQueue

“unbounded circular queue based on array.”

—CircularQueue, code comment

on Additional Documentation

CircularQueue

on Additional Documentation

CircularQueue

“Even though ConcurrentLinkedQueue performs bad comparing to synchronized CircularQueue, the former is not only a comparable data structure, but it’s also thread safe, and tested. [We should] remove the CircularQueue from the code base.”

— About CircularQueue, email thread

I. Finding Entry Points in a software system.

II. Conducting Software Evolution Analysis.

III. Improving Expert Finding techniques.

IV. Recovering Additional Documentation about system’s entities.

on program comprehension

Additional Documentation

RTFM!

RTFM!(Read The Factual Mails)

RTFM!(Read The Factual Mails)

http://code.google.com/p/r-email/