university of british columbia software practices lab ecoop 2005 the emergent structure of...

45
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.

Post on 19-Dec-2015

214 views

Category:

Documents


0 download

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

How Developers Work

Abstract

Concrete

ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.

A Developer at Work I

Flash

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.

A Developer at Work II

Flash

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

Task Structure

Abstract

Concrete

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

Using Task Structure

Abstract

Concrete

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…

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)

Synchronous: Palantír

UCI Web Page

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…

ECOOP 2005 © Copyright 2005, G. Murphy. All rights reserved.

Summary

• There is a mismatch between– how developers work with software artifacts– how tools attempt to support that work

• This mismatch can be reduced by– capturing, retaining and using the structure of

tasks to focus tool support