Agile Software Development Overview

61
SESSION 1 THE COOPERATIVE GAME AgileDev Tour Duong Trong Tan Hanoi, December 2010 1 TurboBoost your development performance
  • date post

    12-Sep-2014
  • Category

    Education

  • view

    12
  • download

    0

description

Agile Software Development Overview

Transcript of Agile Software Development Overview

Page 1: Agile Software Development Overview

TurboBoost your development performance

1

SESSION 1 THE COOPERATIVE GAME

AgileDev Tour

Duong Trong TanHanoi, December 2010

Page 2: Agile Software Development Overview

TurboBoost your development performance

2

Objectives

Software Engineering trendsWhat is agile development?The agile manifestoThe diversity of adoptions

Scrum XP TDD Crystal Kanban

Agile mashupThe cooperative game

Page 3: Agile Software Development Overview

TurboBoost your development performance

3

“AGILE PROJECTS SUCCEED WHEN THE TEAM GETS THE SPIRIT OF AGILITY.”

– R O N J E F F R I E S

AgileDev Basics

Image courtesy to Pollyanna Pixton

Page 4: Agile Software Development Overview

TurboBoost your development performance 4

Hyper productive

Earned Value Based

Iterative

Kaizen

Continuous improvement

Adaptive

Changes

Rapid

IncrementalLean

Small teams

Agile

Page 5: Agile Software Development Overview

TurboBoost your development performance

5

About Trends

Agile techniques were in use since the beginning.Agile techniques did not show competitive

advantage in the 1970s / 1980s, but did during the 1990s and do now.Trial runs of current agile methodologies, 1993 -

1995RAD Crystal XP Crystal Scrum Kanban

In chaos, there are special kinds of controlled pattern => agile methods.

Page 6: Agile Software Development Overview

TurboBoost your development performance 6

So, what are software projects?

Page 7: Agile Software Development Overview

7

TurboBoost your development performance

Partiesand Concerns

Users?

Customers?

BO?

Developers?

Page 8: Agile Software Development Overview

TurboBoost your development performance 8

What is agile development?

Page 9: Agile Software Development Overview

TurboBoost your development performance

9

The Agile Manifesto

We are uncovering better ways of developing

software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more.

AgileAlliance.org

Page 10: Agile Software Development Overview

TurboBoost your development performance

10

The Twelve Principles of Agile Software

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

4. Business people and developers must work together daily throughout the project.5. Build projects around motivated individuals. Give them the environment and support

they need, and trust them to get the job done.6. The most efficient and effective method of conveying information to and within a

development team is face-to-face conversation.7. Working software is the primary measure of progress.8. Agile processes promote sustainable development. The sponsors, developers, and users

should be able to maintain a constant pace indefinitely.9. Continuous attention to technical excellence and good design enhances agility.10. Simplicity--the art of maximizing the amount of work not done--is essential.11. The best architectures, requirements, and designs emerge from self-organizing teams.12. At regular intervals, the team reflects on how to become more effective, then tunes and

adjusts its behavior accordingly.

AgileAlliance.org

Page 11: Agile Software Development Overview

TurboBoost your development performance

11

AgileDev Plan-driven

Low criticalitySenior developersObjectives change

very oftenSmall number of

developersCulture that thrives

on chaos

High criticalityJunior developersLow objectives

changeLarge number of

developersCulture that

demands order

Home ground comparison

Page 12: Agile Software Development Overview

TurboBoost your development performance

12

The diversity of methods

Methods

XP

Scrum

Crystal

Kanban

RAD

YAADM

Page 13: Agile Software Development Overview

TurboBoost your development performance

13

A HYPER-PRODUCTIVE DEVELOPMENT MODEL

Scrum

Page 14: Agile Software Development Overview

TurboBoost your development performance

14

Scrum

One of the most successful agile methods because of its hyper-productivity

It is management – orientedSomewhat CMM Level 3 equivalenceWidely used in various types of projects

Google AdWorlds project 3M Universities RnD projects In VN: LogiGear, KPM, FSOFT, FAT, etc.

Page 15: Agile Software Development Overview

TurboBoost your development performance 15Image courtesy to ScrumAlliance

Page 16: Agile Software Development Overview

TurboBoost your development performance

16

Scrum Roles

ScrumMasterProductOwnerScrum TeamOther parties (all kinds of chicken)

Page 17: Agile Software Development Overview

TurboBoost your development performance

17

Scrum Team

Team is cross-functional and consists of 5-9 people

There are no set project roles within the teamTeam defines tasks and assignmentsTeam is self-organizing and self-managingMaintains the Sprint BacklogConducts the Sprint Review

Page 18: Agile Software Development Overview

TurboBoost your development performance

18

ScrumMaster

Holds daily 15 minute team meeting (Daily Scrum)

Assures every people related to the project follow the rules

Removes obstaclesShields the team from external interference:

“Keep Chickens away from Pigs”Maintains the Sprint Burndown ChartConducts Sprint Retrospective at the end of a

SprintIs a facilitator, not a manager

Page 19: Agile Software Development Overview

TurboBoost your development performance

19

Product Owner (PO)

Accountable for product successDefines all product featuresResponsible for prioritizing product featuresMaintains the Product BacklogInsures team working on highest valued

features

Page 20: Agile Software Development Overview

TurboBoost your development performance

20

The Product Backlog

List of all desired product featuresList can contain bugs, and non-functional

itemsProduct Owner responsible for prioritizingItems can be added by anyone at anytimeEach item should have a business value

assignedMaintained by the Product Owner

Page 21: Agile Software Development Overview

TurboBoost your development performance

21

A Sprint

Time box: 2-4 weeks (why?)An iteration for building a piece of increment

(potentially shippable) of the whole systemIt’s the working time, not planning or asking

what to do.The team manages itself during a SprintThe team commits to Product Backlog during

the Sprint planning meetingThe Sprint Backlog is updated during a

Sprint

Page 22: Agile Software Development Overview

TurboBoost your development performance

22

The Sprint Backlog

Each item is prioritized and estimated

Importance Item Name Notes How to test

 

 

 

 

 

Page 23: Agile Software Development Overview

TurboBoost your development performance 23

2. Daily Scrum Meeting What have you done?

What will you do?

What is impeding you?

1. Sprint Planning Meeting

3. A Sprint (2-4 weeks)

4. Sprint Review Meeting

5. Sprint Retrospective Meeting

The Scrum Skeleton

Page 24: Agile Software Development Overview

TurboBoost your development performance

24

Sprint Planning Meeting

Time box: 8 hours Product backlog prepared prior to meeting

First Half Team selects items committing to complete Additional discussion of Product Backlog occurs

during actual SprintSecond Half

Occurs after first half done – PO available for questions

Team solely responsible for deciding how to build Tasks created / assigned – Sprint Backlog produced

Page 25: Agile Software Development Overview

TurboBoost your development performance

25

Scrum Daily Meeting

Held every day during a SprintTimebox:15 minutesTeam members report to each other not Scrum

MasterAsks 3 questions during meeting

“What have you done since last daily scrum?” “What will you do before the next daily scrum?” “What obstacles are impeding your work?”

Opportunity for team members to synchronize their work

It helps removing burdens between members

Page 26: Agile Software Development Overview

TurboBoost your development performance

26

Sprint Review

Time box: 4 hoursTeam presents “done” code to PO and

stakeholdersFunctionality not “done” is not shownFeedback generated – Product Backlog

maybe reprioritizedScrumMaster sets next Sprint Review

Page 27: Agile Software Development Overview

TurboBoost your development performance

27

Sprint Retrospective

Time box: 3 hoursParticipants

ScrumMaster Scrum Team. Product Owner is optional

Questions What went well and what can be improved?

ScurmMaster helps the team in discovery – not provide answers

Page 28: Agile Software Development Overview

TurboBoost your development performance

28

The Sprint Backlog

A kind o f To-do list for a SprintCreated by the Scrum Team (can be

originated by one member, responsibility belongs to another)

Product Owner has defined as highest priority

Used for synchronizing works between team members

Page 29: Agile Software Development Overview

TurboBoost your development performance

29

The Burn-down Chart

Burndown Chart shows the Sprint trend, the performance\velocity of the team through Sprints

Page 30: Agile Software Development Overview

TurboBoost your development performance

30

Potentially Shippable Product

Selected items are fully implemented, tested and ready for use

Small but complete, “it will be bigger”Scrum Team needs to define what does

“done” mean, in what aspects and contexts. “DONE” may be executable, “passed all tests”,

“approved by senior engineers”, “reviewed by peers” or just nothing to do more with the item.

Page 31: Agile Software Development Overview

TurboBoost your development performance

31

Distributed Scrum

Isolated Scrums - Teams are isolated across geographies.

Distributed Scrum of Scrums – Scrum teams are isolated across geographies and integrated by a Scrum of

Totally Integrated Scrums – Scrum teams are cross-functional with members distributed across geographies.

Sutherland et al.

Page 32: Agile Software Development Overview

TurboBoost your development performance

32

Top Distributed Scrum Issues

Difficult leveraging available resources, best practices are often deemed proprietary, are time consuming and difficult to maintain

Difficulty synchronizing work between distributed sites

Lack of effective communication mechanismsConflicting behaviors, processes, and technologiesIncompatible data formats, schemas, and

standardsEnsuring electronic transmission confidentiality

and privacy

Sutherland et al.

Page 33: Agile Software Development Overview

TurboBoost your development performance

33

FROM HACKING CODE TO A REAL PROCESS

eXtreme Programming

Page 34: Agile Software Development Overview

TurboBoost your development performance

34

eXtreme Programming Project

Page 35: Agile Software Development Overview

TurboBoost your development performance

35

XP Values

Simplicity encourages starting with the simplest solution

Communication favors simple designs, common metaphors, collaboration of users

and programmers, frequent verbal communication, and feedback

Feedback From the system, customer and from the team, to avoid

optimism

Courage design and code for today and not for tomorrow

Respect respect for others as well as self-respect

Page 36: Agile Software Development Overview

TurboBoost your development performance 36

Page 37: Agile Software Development Overview

TurboBoost your development performance

37

XP Roles

The CustomerSets project goals and makes business decisions

The DeveloperTurn customer stories into working code

The TrackerKeeps track of any metrics used by team

The CoachGuides and mentors the team

Page 38: Agile Software Development Overview

TurboBoost your development performance 38

Test Driven Development

This is not a complete dev strategy. It is ‘embedded’ into methods.

Tests created before coding

This strategy focused on quality

Derived version: Behaviors Driven Development

Page 39: Agile Software Development Overview

TurboBoost your development performance

39

“A HUMAN-POWERED METHODOLOGY FOR SMALL TEAM”

Crystal Clear

Page 40: Agile Software Development Overview

TurboBoost your development performance

40

Crystal Clear Practices

Frequent DeliveryReflective ImprovementOsmotic CommunicationPersonal SafetyFocusEasy Access to Expert UsersAutomated TestsConfiguration ManagementFrequent Integration

Page 41: Agile Software Development Overview

TurboBoost your development performance

41

Crystal Clear

“The team can reduce intermediate work products as it produces running code more frequently, as it uses richer communication channels between people.”

- Alistair Cockburn

Page 42: Agile Software Development Overview

TurboBoost your development performance

42

Crystal Clear

Every product is slightly different and evolves over time, so the methodology, the set of conventions the team adopts, must be tuned and evolve.

- Alistair Cockburn

Page 43: Agile Software Development Overview

TurboBoost your development performance

43

Crystal Clear Roles

Sponsor Allocates money for the project

Expert UserLead Designer

Lead Technical person, mentors less experienced team members

Designer-Programmer Each person designs and programs

Page 44: Agile Software Development Overview

TurboBoost your development performance

44

Kanban

Kanban literally means “visual card,” “signboard,” or “billboard.”

Toyota originally used Kanban cards to limit the amount of inventory tied up in “Work In Progress” on a manufacturing floor

Work Items

Step 1 DoneStep 2 Step n…

QueueIn

Process

QueueIn

Process

QueueIn

Process

Page 45: Agile Software Development Overview

TurboBoost your development performance 45

Why use Kanban in Software Development?

Page 46: Agile Software Development Overview

TurboBoost your development performance

Time-boxed iterative development has challenges 46

• Short time-boxes give more frequent opportunity to measure progress and inspect software but force development items to be smaller

• Smaller development items are often too small to be valuable and difficult to identify

• Quality of requirements suffers as analysts rush to prepare for upcoming cycles

• Quality of current development suffers when busy analysts are unable to inspect software or answer questions during development

• Quality often suffers as testers race to complete work late in the development time-box

Page 47: Agile Software Development Overview

TurboBoost your development performance

47

The time-boxed iteration drama

Page 48: Agile Software Development Overview

TurboBoost your development performance 48

Using a Kanban approach in software drops time-

boxed iterations in favor of focusing on continuous

flow.

Page 49: Agile Software Development Overview

TurboBoost your development performance

49

Kanban queue

Step 1 DoneStep 2 Step n…Work Items

QueueIn

Process

QueueIn

Process QueueIn

Process

Page 50: Agile Software Development Overview

TurboBoost your development performance

50

Kanban queues (cont’d)

Large enough to keep the team busy

Small enough to avoid premature prioritisation

Ideally should be FIFO

Page 51: Agile Software Development Overview

TurboBoost your development performance

51

Kanban - Work In Progress

Reduce multi-taskingMaximize throughputEnhances teamwork

Page 52: Agile Software Development Overview

TurboBoost your development performance

52

The multitasking issues

Facts: 20% time lost to context switching per ‘task Sequential yields results sooner

Chart courtesy to Yahoo!

A AA

A

B BB CCC

B C

Page 53: Agile Software Development Overview

TurboBoost your development performance

53

Throughput

Organizational overhead goes up as work in progress increases

Total Cycle Time = Number of Things in Process Average Completion Rate

to improve cycle timeImprove Average Completion RateReduce Number of Things in Process

Page 54: Agile Software Development Overview

TurboBoost your development performance

54

Enhances Teamwork

Team focus on goals that add value not individual tasks

Page 55: Agile Software Development Overview

TurboBoost your development performance

55

Kanban Example 1

Image courtesy to Jeff Patton

Page 56: Agile Software Development Overview

TurboBoost your development performance

56

Kanban Example 2

Page 57: Agile Software Development Overview

TurboBoost your development performance

57

Kanban Example 3

Page 58: Agile Software Development Overview

TurboBoost your development performance

58

Agile Mashup

It is so-called Yet Another Agile Development Method (YAAM)

It follows the Agile Manifesto and keeps the sprit of agility

It utilizes practices from several methods, for example: Use sprint backlog and user stories with TDD and

standup meeting with a kanban liked dashboard. Use stand up meeting in daily Scrum Use Burn down chart in Kanban

Page 59: Agile Software Development Overview

TurboBoost your development performance 59

Agile Software Development, it is a cooperative game.

Page 60: Agile Software Development Overview

TurboBoost your development performance

60

Face-to-face communication is better

Richness of communication channelCom

mu

nic

ati

on

Eff

ect

iven

ess

2 people atwhiteboard

2 people on phone

2 peopleon email

Videotape

Paper

Slide courtesy to Cockburn. A.

Page 61: Agile Software Development Overview

TurboBoost your development performance

61

References and Further Readings

Agile Software Development: The Cooperative Game, 2nd Edn. By Alistair Cockburn.

Scrum Guide 2010 by Ken Schwaber and Jeff Sutherland Agile Project Management with Scrum by Ken Schwaber  Agile Java Crafting Code with Test-Driven Development By

Jeff Langr Test-Driven Development in Microsoft .NET by James W.

Newkirk and Alexei A. Vorontsov  Extreme Programming Explained by Kent Beck XP introduction,

http://www.extremeprogramming.org/ http://xprogramming.com/

http://www.agilealliance.org/ Kanban Oversimplified

http://www.agileproductdesign.com/blog/2009/kanban_over_simplified.html