co-ordination support for managing progress of distributed agile projects

23
Co-ordination Support for Managing Progress of Distributed Agile Projects Sultan Alyahya, Wendy K. Ivins, W. A. Gray (Cardiff University, UK) ICGSE 15-18 Aug 2011

Upload: sultan-alyahya

Post on 28-Nov-2014

589 views

Category:

Education


6 download

DESCRIPTION

My presentation in Globagile Workshop (15/8/2011), ICGSE 2011 conference, Helsinki, Finland

TRANSCRIPT

Page 1: Co-ordination Support for Managing Progress of Distributed Agile Projects

Co-ordination Support for Managing Progress of Distributed Agile Projects

 Sultan Alyahya, Wendy K. Ivins, W. A. Gray

(Cardiff University, UK)ICGSE 15-18 Aug 2011

Page 2: Co-ordination Support for Managing Progress of Distributed Agile Projects

Contents

Tracking Progress in Agile Development Co-located Projects Distributed Projects

Current Agile Progress Tracking Systems

The Holistic Approach Discussion

Page 3: Co-ordination Support for Managing Progress of Distributed Agile Projects

Tracking Progress in Agile Development

“WORKING SOFTWARE IS THE PRIMARY MEASURE

OF PROGRESS”(Agile Manifesto Principles)

Page 4: Co-ordination Support for Managing Progress of Distributed Agile Projects

Tracking Progress in Agile Development

Implementation ≠ “Working Software”

Measuring progress of tasks producing code ≠ Measuring Progress in Agile

Page 5: Co-ordination Support for Managing Progress of Distributed Agile Projects

What Affects “WORKING SOFTWARE”? Unit Testing (UT): Un-tested Code

causes defects. Continuous Integration: Code must be

built & integration-tested to make AT. Acceptance Testing (AT): Failed AT

means produced code work improperly. Source Code versioning: Creating,

modifying & deleting code affect progress.

Page 6: Co-ordination Support for Managing Progress of Distributed Agile Projects

What Affects “WORKING SOFTWARE”?

Page 7: Co-ordination Support for Managing Progress of Distributed Agile Projects

Tracking Progress of Co-located Agile Projects

Face-to-Face Communication

Stand-up Meetings

Page 8: Co-ordination Support for Managing Progress of Distributed Agile Projects

Tracking Progress of Distributed Agile Projects

Temporal Distance Geographical Distance Socio-Cultural Distance

Page 9: Co-ordination Support for Managing Progress of Distributed Agile Projects

Tracking Progress of Distributed Agile Projects

Temporal Distance Geographical Distance Socio-Cultural Distance

Less Communication

Weak Co-ordination

Page 10: Co-ordination Support for Managing Progress of Distributed Agile Projects

Current Agile Progress Tracking Systems

Rally, TargetProcess, VersionOne .. etc

provide detailed information about iterations’ tasks/stories.

Static, receive progress information from team members only

Page 11: Co-ordination Support for Managing Progress of Distributed Agile Projects

Current Agile Progress Tracking Systems

There is an inconsistency between the progress information shown in the tracking system and the real software produced.

Page 12: Co-ordination Support for Managing Progress of Distributed Agile Projects

Technical Activities Affecting Development Progress

Potential Development Progress Changes

Scalability and Distribution

EffectCo-ordination Required

Create a new artefact - Creating a new artefact belonging to ‘unstarted’ or ‘completed’ task/story changes the task’s/story’s state.

- Corresponding completed story may need to have AT again.

- The relationship between the artefacts and tasks/stories in the distributed sites is difficult to realise.

- It is harder to determine the affected team members.

- Changing state of the task/story if its current state is ‘unstarted’ or ‘complete’.- Finding and notifying affected team members may be required.

Update an artefact - An artefact may be shared while corresponding unit tests are not ‘pass’.

- Modifying an artefact belonging to ‘unstarted’ or ‘completed’ task/story changes the task’s/story’s state.

- Modifying an integrated artefact may require it to be re-integrated.

- Modifying an artefact belonging to completed story may require new AT for the story.

- It is harder to realise impact of updating artefact on development progress.

- It is harder to determine the affected team members.

- Sharing new artefact versions should be prevented if corresponding unit tests are failed.- Developers who use previously integrated artefact should be aware that it has new versions

updated and, therefore, artefact need to be re-integrated.- Finding and notifying affected team members may be required.

Delete an artefact - Deleting an integrated artefact may break the build.

- Corresponding stories may need to undergo AT again.

- Deleting a released artefact may affect progress.

- It is difficult to realise importance of the artefact to team members.

- It is harder to determine who needs to be notified.

- If deleting an artefact breaks the build, this needs to be clarified to the developer and deletion may be delayed until developer discusses the activity with the affected developers.

- It is important to identify impact of deleting the artefact on progress and reflect it in the tracking system.

- Finding and notifying affected team members may be required.

Perform Integration - Team members may not realise which stories have been affected due to the integration process.

- Testers may not know exactly which stories become ready for the AT and which need to be re-tested. He/she needs to make full AT every time.

- It is harder to maintain the awareness about the effect of integration result on development progress if the team is distributed.

- Determining which stories have been affected and reflecting that in the tracking system are required.

- Finding and notifying affected team members may be required.

Add or modify a unit test - Adding or modifying unit test without making the testing for it or with ‘fail’ result can affect the corresponding tasks if they were complete.

- Developers may not know which tasks are associated with the unit tests.

- States of corresponding completed tasks may need to be changed.- Finding and notifying owners of completed tasks may be required.

Add or modify an acceptance test - Adding or modifying acceptance test without making the testing for it or with ‘fail’ result can affect the corresponding story if it was complete.

- Team members may not know impact of adding acceptance test.

- States of corresponding completed stories may need to be changed.- Finding and notifying owner of completed story may be required.

Delete a unit test - Deleting a unit test may reduce code quality. - Deleting the only unit test for an artefact of

completed task affects its progress.

- Affected developers may not know the impact of deleting a unit test.

- If it is the only unit test for the corresponding source code artefact, and if the corresponding task is complete, task state may need to be changed.

- Finding and notifying owners of completed tasks may be required.

Delete an acceptance test - Deleting the only acceptance test for completed story affects its progress.

- Developers may not know the impact of deleting an acceptance test.

- If it is the only acceptance test for completed story, story state may need to be changed.- Finding and notifying owner of completed story may be required.

Run a unit test - Failed unit test prevents completing the task. - Usually, impact of running unit tests affect the developer created them only as long as corresponding source code artefact is not shared yet.

- If unit test fails, the corresponding task must not be set as ‘complete’.

Run an acceptance test - Failed acceptance test prevents completing the story.

- Testers may encounter difficulties in finding and targeting notifications to those affected ones.

- If acceptance test fails, corresponding story must not be set as ‘complete’.- State of relevant story may need to be changed.- Finding and notifying affected team members may be required.

Page 13: Co-ordination Support for Managing Progress of Distributed Agile Projects

Example:

Modifying a shared source code artefact belonging to completed story may require a new AT for the story.

What is the Co-ordination Required?

• Finding affected stories.• Finding affected team members.• Notifying affected team members.

Page 14: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach

Tracking System

Task/Story data

Development Environment(Dev+Unit testing)

Testing Environment

(Integration testing+Acceptance

Testing)

Versioning data

v

Technical operations (i.e. versioning operations)

v

vv

Page 15: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach Tightly integrating task/story

progress data with the versioning data

Tracking System

Task/Story data

Development Environment(Dev+Unit testing)

Testing Environment

(Integration testing+Acceptance

Testing)

Versioning data

v

Technical operations (i.e. versioning operations)

v

vv

Page 16: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach Tightly integrating task/story

progress data with the versioning data

s

s

s

s

Transient Version(TV)

Released Version(RV)

Integrated Version(IV)

Unit-Tested Version(UTV)

Promote Transient Version

(Unit tests passed)

Perform Integration

(Build succeed)

Promote Integrated Version

(Corresponding story(ies) is/are

complete )

Create New Version

Create New Artefact

Delete an Artefact

Page 17: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach Linking the UT tool, AT tool and CI tool

with the tracking system

Tracking System

Task/Story data

Development Environment(Dev+Unit testing)

Testing Environment

(Integration testing+Acceptance

Testing)

Versioning data

v

Technical operations (i.e. versioning operations)

v

vv

Page 18: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach

Providing a detailed user story’s progress model

Page 19: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach- Data Model

Unit TestIntegration

Results

Artefact

Task

User Story

Release

Acceptance Test

*

1

*

*

1..*

*

1

* 1

*

1

1..* HasHas

Belnogs to

Belnogs to

Included in

Has

V

V

V

V

Page 20: Co-ordination Support for Managing Progress of Distributed Agile Projects

The Holistic Approach- Process Models

A set of change process models, covering all the technical activities.

providing co-ordination support including:

identifying the potential sources of progress change

checking progress constraints finding and notifying affected team members reflecting progress change in the tracking system

Page 21: Co-ordination Support for Managing Progress of Distributed Agile Projects

Identify the task

that the artefact will belong toCheck if the artefact belongs

to unstarted task

Check if the developer wants to start the task now

Check if the developer wants to re-work on the task

Check if the artefact belongs to completed task

Inform the developer that the task is already completed

Inform the developer that the task is inactive

Change the task state

Ask developer if he wants to create the artefact from

scratch or from existing artefact

Name the new artefact

Identify the existing artefact and version

Give the artefact a new name

Create a new version in the developer's private space

Copy the existing artefact into the developer's private workspace

[Yes]

[No]

[From scratch][From existing artefact]

[Yes]

[Yes]

[Yes]

[No]

[No]

[No]

Developer System

Create a relationship between the task and the artefact

Notify the relevant members about the new story state

Request to create a new artefactAsk developer to choose the

corresponding task

Check if the corresponding storyIs not in ‘Active’ state

[No]

Notify the relevant members about the new task state

[Yes]Change the story state

to ‘Active’

x

x

x

x

Page 22: Co-ordination Support for Managing Progress of Distributed Agile Projects

Discussion The Holistic Approach helps team

members in minimising the inconsistency between the progress information shown in the tracking system and the real software produced.

It can potentially reduce the testing bottlenecks at the end of each iteration and release.

(>2/3 of agile community do not use any automated

AT tools, VersionOne, Dec 2010 ).

Page 23: Co-ordination Support for Managing Progress of Distributed Agile Projects

Questions