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/
Top Related