agile software development

21
June 19, 2002 1 Introduction to Agile Software Management Presented by Jim Murray Based on work done by Dottie Acton of LM Mission Systems 301-897-6458 [email protected]

Upload: softwarecentral

Post on 28-Oct-2014

949 views

Category:

Documents


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Agile Software Development

June 19, 2002 1

Introduction to Agile Software Management

Presented by Jim Murray

Based on work done by

Dottie Acton of LM Mission Systems

301-897-6458

[email protected]

Page 2: Agile Software Development

June 19, 2002 2

Topics

• Introduction

• Terminology

• The Agile Manifesto

• Some Agile Methodologies

• Summary

• References

Page 3: Agile Software Development

June 19, 2002 3

Terminology• Agility

– The ability to both create and respond to change in order to profit in a turbulent business environment

• Companies need to determine the amount of agility they need to be competitive

• Chaordic– Exhibiting properties of both chaos and order

• The blend of chaos and order inherent in the external environment and in people themselves, argues against the prevailing wisdom about predictability and planning

– Things get done because people adapt, not because they slavishly follow processes

– An agile view is a chaordic view• “Balanced between chaos and order, perched on the precipice at the

edge of chaos.”• Some people are not comfortable in this environment; others thrive on it

Page 4: Agile Software Development

June 19, 2002 4

1910

1920

1930

1940

1950

1960

1970

1980

1990

2000

WWIGreat

DepressionKorean

WarWWII Vietnam War Des

ert

Shie

ld /

Des

ert

Sto

rm

Op

erat

ion

Ira

qi F

reed

om

Ris

k M

gmt

Gu

ide

for

DoD

Acq

uis

itio

n

Pro

gram

Eva

luat

ion

and

R

evie

w T

echn

ique

(P

ER

T)

Ber

lin

Wal

l Fal

ls

Wil

lou

ghby

Tem

plat

es

“Sol

ving

th

e R

isk

Equ

atio

n”

Lin

e of

Bal

ance

Tec

hnol

ogy

Tot

al Q

uali

ty

Man

agem

ent

Cri

tica

l Pat

h M

etho

d (C

PM

)

Cold War

Bat

tle

of t

he A

tlan

tic

WWII ProductionAircraft 296,429Naval Ships 71,062Cargo Ships 5,425Artillery 372,431Tanks / SP Guns 102,351Trucks 2,455,964

Lea

n P

rod

ucti

on

Con

curr

ent

Dev

elop

men

t

Spir

al D

evel

opm

ent

1910

1920

1930

1940

1950

1960

1970

1980

1990

2000

WWIGreat

DepressionKorean

WarWWII Vietnam War Des

ert

Shie

ld /

Des

ert

Sto

rm

Op

erat

ion

Ira

qi F

reed

om

Ris

k M

gmt

Gu

ide

for

DoD

Acq

uis

itio

n

Pro

gram

Eva

luat

ion

and

R

evie

w T

echn

ique

(P

ER

T)

Ber

lin

Wal

l Fal

ls

Wil

lou

ghby

Tem

plat

es

“Sol

ving

th

e R

isk

Equ

atio

n”

Lin

e of

Bal

ance

Tec

hnol

ogy

Tot

al Q

uali

ty

Man

agem

ent

Cri

tica

l Pat

h M

etho

d (C

PM

)

Cold War

Bat

tle

of t

he A

tlan

tic

WWII ProductionAircraft 296,429Naval Ships 71,062Cargo Ships 5,425Artillery 372,431Tanks / SP Guns 102,351Trucks 2,455,964

Lea

n P

rod

ucti

on

Con

curr

ent

Dev

elop

men

t

Spir

al D

evel

opm

ent

1910

1920

1930

1940

1950

1960

1970

1980

1990

2000

WWIGreat

DepressionKorean

WarWWII Vietnam War Des

ert

Shie

ld /

Des

ert

Sto

rm

Op

erat

ion

Ira

qi F

reed

om

Ris

k M

gmt

Gu

ide

for

DoD

Acq

uis

itio

n

Pro

gram

Eva

luat

ion

and

R

evie

w T

echn

ique

(P

ER

T)

Ber

lin

Wal

l Fal

ls

Wil

lou

ghby

Tem

plat

es

“Sol

ving

th

e R

isk

Equ

atio

n”

Lin

e of

Bal

ance

Tec

hnol

ogy

Tot

al Q

uali

ty

Man

agem

ent

Cri

tica

l Pat

h M

etho

d (C

PM

)

Cold War

Bat

tle

of t

he A

tlan

tic

WWII ProductionAircraft 296,429Naval Ships 71,062Cargo Ships 5,425Artillery 372,431Tanks / SP Guns 102,351Trucks 2,455,964

Lea

n P

rod

ucti

on

Con

curr

ent

Dev

elop

men

t

Spir

al D

evel

opm

ent

Program Management Evolution• Program management is an evolving science

Continuing to seek efficient methods to address new development methods

Page 5: Agile Software Development

June 19, 2002 5

Current Problem in PM & SW development

31.1% of projects will be canceledbefore they ever get completed … 52.7% of projects will

cost 189% of their original estimates. – The Standish Group

Plus project complexity is increasing– Demand for quicker delivery of useful systems

– Increasingly vague, volatile requirements

– Greater uncertainty/risk from limited knowledge of:• Underlying technologies

• Off-the-shelf (OTS) components used

Are conventional development/managementpractices addressing the problem?

Page 6: Agile Software Development

June 19, 2002 6

What is the core challenge?

* Phillip Armour. “Zeppelins and Jet Planes: A Metaphor for Modern Software Projects” Communications of the ACM, October 2001.

Team = Product

Process = Product

— McCarthy

What is the nature of system/software development?• Well-understood, static problems, demanding

definable, predictable process, like– Manufacturing a widget– Constructing a building– Shooting zeppelins with cannons*

OR

• Exploration of many evolving unknowns, demanding a fluid, social learning process, like– Mountain climbing– Jazz jam session– Tracking jet fighters with self-guiding missiles*

Page 7: Agile Software Development

June 19, 2002 7

Agile Manifesto

• Developed by 17 of the leaders in agile methodologies in Feb 2001.“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 on the items on the right, we value the items on the left more.”

Page 8: Agile Software Development

June 19, 2002 8

Supporting Agile “Sentences”

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

2. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter time scale.

3. Working software/product is the primary measure of progress.

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

5. Business people and developers work together daily throughout the project.

6. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

Page 9: Agile Software Development

June 19, 2002 9

Questions for Reflection

• The first step in looking at any Agile method is to ask the following questions: – How close are your customer’s views and values to the

views and values expressed in the Agile Manifesto?

– How close are your program’s views and values to the views and values expressed in the Agile Manifesto?

– How close are your organization’s views and values to the views and values expressed in the Agile Manifesto?

– How close are your personal views and values to the views and values of the Agile Manifesto?

Adopting Agile Methods where they do not fit with the value system will not be successful.

Page 10: Agile Software Development

June 19, 2002 10

When to Apply Agile Methodologies

• Problems characterized by change, speed, and turbulence are best solved by agility.– Accelerated time schedule combined with significant

risk and uncertainty that generate constant change during the project.

• Is your project more like drilling for oil or like managing a production line?– Oil exploration projects need Agile processes.

– Production-line projects are often well-served by rigorous methodologies.

“On projects with more than 250 people, methodology will have almost no impact on success or failure – politics will dominate.” Jim Highsmith

Page 11: Agile Software Development

June 19, 2002 11

Some Agile Methodologies

• Extreme Programming (XP)

• Scrum

• Feature-Driven Development (FDD)

• Adaptive Software Process

• Crystal Light Methodologies

• Dynamic Systems Development Method (DSDM)

• Lean Development

Page 12: Agile Software Development

June 19, 2002 12

Summary of Agile Characteristics

• Adaptability rather than predictability

• People rather than development process– Being agile means accepting that outcomes are not

predictable and that processes are not repeatable

• Collaborative values and principles

• A barely sufficient methodology– “the conventions we agree to”

– Processes are described in manuals; practices are what happen in reality

Page 13: Agile Software Development

June 19, 2002 13

Agile PM issues to facilitate SW development

• Need a cohesive culture able to support and facilitate a variety of management and development methods

• Management needs a defined Info. Tech. framework– Management processes – Management tools/tool suite

• Management needs to be supportive of the development team– Interfaces to other functions offloaded– Training occurs up front and in-depth– Experienced core of the team– Variety of communication and collaboration tools

(available for use)

Page 14: Agile Software Development

June 19, 2002 14

Agile Program Management Issues

• Promote teambuilding and trust, keep politics out of the effort

• Set an open tone with the customer(s) organizations

• Interpret and translate risks for overall program integration and a common view.

• Have a robust, flexible, and adaptable configuration and data management system

• Integrated Product Teams to some extent – (need immediateimmediate value)

Page 15: Agile Software Development

June 19, 2002 15

• Extraordinarily robust test program through out the development process

• Anticipate the development and test needs developing test data and cases in advance

Agile Program Management Issues Cont’d

Involves Testing For:

Pre-ConditionsPre-Conditions

Post-ConditionsPost-Conditions

Class InvariantsClass Invariants

Page 16: Agile Software Development

June 19, 2002 16

Agile Program Management Issues

• Storyboard the development and assign story actors to live the role

• Use automated tools for organizational and summary tasks

Page 17: Agile Software Development

June 19, 2002 17

Develop a Componentized Architecture

• Principles– We do the simplest thing that could possibly work

making future changes or additions easier– The right design at the right time, no more

• up-front high-level system architecture• up-front high-level component architecture• up-front high-level data model• details are determined when the time comes for functionality

to be built

• Benefits– Less is faster, cheaper, and leads to “better”– Flexibility minimizes the cost of change

Page 18: Agile Software Development

June 19, 2002 18

Product Build Philosophy

• Principles– Build the complete product, all the time– One button builds everything, including

– Product executables– Installation materials– Test harness and test components– Generated documentation

– Build can be accomplished from the command line– The same build process is used by everyone

• Benefits– Easy to manage; easy to add new team members– Integrates well with testing environment

Page 19: Agile Software Development

June 19, 2002 19

Testing

• Principles– All code must have tests, with the test created first

– Unit tests are executed daily during the automated build

– When a bug is found, new tests are created

– All unit tests must pass before code can be released

• Benefits– Provides constant visibility into areas of the system at

risk

– The result is rapid progress and a system that always works better than it did the day before

Page 20: Agile Software Development

June 19, 2002 20

Testing Meeting Configuration Management

• Test code maintained alongside project code

• Tests can be run from the command line

• Coverage statistics tell you how thorough the testing is

Page 21: Agile Software Development

June 19, 2002 21

References• Agile Software Development Ecosystems, Jim Highsmith• Agile Software Development, Alistair Cockburn• Agile Modeling: Effective Practices for Extreme Programming and the

Unified Process, Scott Ambler• Agile Development, Rich McCabe, May 2003• Agile Software Development with Scrum, Ken Schwaber and Mike Beedle• Extreme Programming Explained: Embrace Change, Kent Beck• Refactoring: Improving the Design of Existing Code, Martin Fowler• Adaptive Software Development, A Collaborative Approach to Managing

Complex Systems, Jim Highsmith• A Practical Guide to Feature-Driven Development, Stephen Palmer and

John Felsing• Foundations of Lean Development: The Lean Development Manager’s

Guide, Vol 2, Robert Charette• Agile Software Development, Dottie Acton, Lockheed Martin Mission

Systems Oct, 2002 (Unpublished