university of british columbia software practices lab ecoop 2005 the emergent structure of...
Post on 19-Dec-2015
214 views
TRANSCRIPT
University of British Columbia
Software Practices Lab
ECOOP 2005
The Emergent Structure of
Development Tasks
Gail Murphy
Joint work with Mik Kersten, Martin Robillard, and Davor Čubranić
This presentation
includes videos.
The slides with videos
have links to
flash versions.
© Copyright 2005, Gail Murphy, except for slides explicitly marked with a different copyright.Permission is granted to use this presentation, in whole or in part for educational purposes, provided that every slide used is used in its entirety, with no changes, deletions or additions; and that the copyright notice is preserved on every slide used.
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
This Talk is About…
• A mismatch between– how developers work with software artifacts– how tools attempt to support that work
• Using the structure of tasks to reduce the mismatch
How Developers
WorkTask Structure
Using Task
Structure
How Developers
WorkTask Structure
Using Task
Structure
Abstract
Concrete
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Observations I
• Lots of different kinds of artifacts– bug report– Java source code– HTML files– (and more if we continued the task, particularly
on an enterprise application)
• Work with parts of each artifact– description of the bug report– parts of Java classes, etc.
• Move between parts of artifacts frequently
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
A Developer at Work II
Mik: Have you solved
79620 yet?
Mik: Have you solved 79620 yet?X
Gail: just started
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Observations II
• Interruptions happen– instant messaging, email, people arriving at the
door, etc.– developer needing to switch to work on
something else
• One study shows interruptions happen as often as just over every 3 min! [Gonzáles & Mark 04]
• Interruptions cause context switches for the developer
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Our Claim
• Current tools are not sufficiently supporting a developer– to find and manipulate the pieces of a project’s
information space on which they are working– to manage the multiple problems on which they
work at the same time
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
90% of changes
touch more
than one file
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
The Challenge
Bug 79620: The Thumbnail…
ThumbnailUpdater.start()
StackLayout.setPreferred…
IFigure.isVisible()
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
The Underlying Problem
• Views become overloaded
• Analyses can be costly
• Difficult to switch between sub-graphs
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
The Key Ideas
• Tasks performed by developers involve only some parts of some artifacts– E.g., collections of sub-graphs
• Many tasks exhibit structure in the sub-graphs
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
What is a Task?
• One dictionary definition:– “something hard or unpleasant that has to be
done” [Merriam-Webster]
• A better definition for our purposes:– an identifiable unit of work, e.g.,
• “Determine how fonts are set”• “Fix bug #x”• “Improve performance of restore”
• May have sub-tasks, or not
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
What is Task Structure?• Parts of the software system and
relationships between those parts that were changed to complete the task
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
An Example of Task Structure• Changing an Eclipse plug-in to support
editing and viewing a new document type
*LabelProvider.getText()
*Action.run()
*ContentProvider.getElements()
*ContentProvider.elementsChanged(..)
Bug #2045
*ContentProvider
niftyIconFile
Plugin.xml
niftyDocType.html
testOpenView
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
An Example of Task Structure• Changing an Eclipse plug-in to support
editing and viewing a new document type
*LabelProvider.getText()
*Action.run()
Bug #2045
*ContentProvider.getElements()
*ContentProvider.elementsChanged(..)
*ContentProvider
niftyIconFile
Plugin.xml
niftyDocType.html
testOpenView
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Determining a Task’s Structure• The structure of a task can be determined
through post-hoc analysis of project repositories
• E.g.,
Bugs
Versions
Bug 2045, closed
28/07/05: 08:00 by murphy
Artifacts checked in
28/07/05: 07:59 by murphy
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Task Context
• Parts and relationships of artifacts relevant to a developer as they work on the task
• For a particular task,task context task structure
• Can be approximated as a developer works:– algorithmically over the structure of the graph – by monitoring a developer’s activity and
heuristics on the graph
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Task Context: Algorithmically
• E.g., Given a set of program elements of interest I, suggest a fuzzy set of program elements S that may be of interest[Robillard 05]
tool()
fTool
I
tool()
fTool
a b c d e
setTool(…)
S
© Copyright 2005, G. Murphy and M. Robillard. All rights
reserved.
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Task Context: Algorithmically…• Algorithm guided by specificity and
reinforcement
tool()
fTool
a b c d e
S
4 4 4 5 29
setTool(…)
32
setTool(…)
e.g., setTool is highly
specific because it is
one of only two
accessors of fTool.
setTool is reinforced
because fTool is in I.
© Copyright 2005, G. Murphy and M. Robillard. All rights
reserved.
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Task Context: Monitoring
• E.g., Capture the developer’s interaction history with the IDE
Assign a degree of interest to elements (and relations) based on occurrences in interaction history [Kersten & Murphy AOSD 04]
interest
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Terminology
• To simplify discussion, I will just use the term task structure for the remainder of the talk
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Making Use of Task Structure
• Improve tools– Reduce overload in IDE views– Perform queries automatically
• Improve collaboration– Form and access a group memory– Share task structure
• Improve IDE platform– Capture and recommend workflow– Simplify tool development
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Improve Tools
• E.g., Mylar [eclipse.org/mylar]
• Form task structures from interaction of a developer with the IDE
• Uses task structures to– scope views– predict relevant parts of structure– actively populate views– support task switching
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Mylar…
1. Form task structure and use it to filter views, reducing information overload
• developer identifies and activates tasks• structure of tasks formed from developer’s
interaction with IDE• task structure includes degree of interest for
each node/edge• can filter views by the structure of active tasks
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
Flash
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Mylar…
ClassEditPart
refreshVisuals(…)
Font(…) Label
Label(…)
alignOnHeight(…)
Task structure formed
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Mylar…
2. Manage multiple tasks• can show multiple task structures
simultaneously• can switch between tasks
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
Flash
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Mylar…
3. Use task structure to predict additional structure
• e.g., errors can populate task structure (even temporarily)
• e.g., drive search of surrounding structure• source code references
• bug repository
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
Flash
Flash
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Mylar…
3. Use task structure to predict additional structure
• e.g., errors can populate task structure (even temporarily)
• e.g., drive search of surrounding structure• source code references
• bug repository
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Mylar…• One way to gather and represent task structure
• Current focus is on using task structure to facilitate an individual developer’s work in an IDE
• Initial study showed– developer’s used Mylar views more than regular Eclipse
views– a developer’s edit ratio can improve with Mylar-like
features
• A field experiment is currently underway– gathering baseline and Mylar usage statistics from
approximately 30 developers
© Copyright 2005, G. Murphy and M. Kersten. All rights
reserved.
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Improve Collaboration
• Task structure can improve focus of collaborations between developers– asynchronous (e.g., accessing a group memory)– synchronous (e.g., awareness about check-in
conflicts)
• Some examples of tools for collaboration
Asynchronous Synchronous
eROSE
(Saarland U.)
Jazz
(IBM)(UBC)
Palantír
(UCI)
Improve Collaboration
• Task structure can improve focus of collaborations between developers– asynchronous (e.g., accessing a group memory)– synchronous (e.g., awareness about check-in
conflicts)
• Some examples of tools for collaboration
Asynchronous Synchronous
eROSE
(Saarland U.)
Jazz
(IBM)(UBC)
Palantír
(UCI)
Asynchronous: eROSE
Zimmermann et al ICSE 04
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Asynchronous: Hipikat
• Task structure can improve focus of collaborations between developers– asynchronous (e.g., accessing a group memory)– synchronous (e.g., awareness about check-in
conflicts)
• Some examples of tools for collaboration
Asynchronous Synchronous
eROSE
(Saarland U.)
Jazz
(IBM)(UBC/SPL)
Palantír
(UCI)
Bugzilla
news
Ĉubranić & Murphy, ICSE 03
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Asynchronous & Task Structure• E.g., Imagine a HipikatTS
– group memory would include structures of completed tasks
– search group memory with structure of current task
Synchronous: JAZZ
• Task structure can improve focus of collaborations between developers– asynchronous (e.g., accessing a group memory)– synchronous (e.g., awareness about check-in
conflicts)
• Some examples of tools for collaboration
Asynchronous Synchronous
eROSE
(Saarland U.)
Jazz
(IBM)(UBC)
Palantír
(UCI)
Synchronous: JAZZ
• Task structure can improve focus of collaborations between developers– asynchronous (e.g., accessing a group memory)– synchronous (e.g., awareness about check-in
conflicts)
• Some examples of tools for collaboration
Asynchronous Synchronous
eROSE
(Saarland U.)
Jazz
(IBM)(UBC)
Palantír
(UCI)
Hupfer et al, CSCW 04
Synchronous: Palantír
• Task structure can improve focus of collaborations between developers– asynchronous (e.g., accessing a group memory)– synchronous (e.g., awareness about check-in
conflicts)
• Some examples of tools for collaboration
Asynchronous Synchronous
eROSE
(Saarland U.)
Jazz
(IBM)(UBC)
Palantír
(UCI)
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Synchronous & Task Structure • E.g., Imagine comparing task structures on
check-in– compare committer’s task structure to current task
structures of other group members– perform focused source analyses on those task
structures
Committer’s Task
StructureOther Developer’s Task
Structure
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Improve IDE Platform
• Capture and recommend workflow– E.g., mine completed task structures for patterns
to form best practices or inform UI
• Simplify tool development– E.g., arbitrate competition for limited screen real
estate like gutters based on task being performed
ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.
Open Questions• How should task structure be defined?
– should it include rationale?– should it include how the task was worked on? – should it include confidence levels?
• Can we determine task structure accurately without the developer’s involvement?
• Can we make more program analyses feasible by using the focus of task structure?
• Which is better to pursue: tool support for task structure or improve the languages developers use to express their systems?
• And many more…