35
www.lonsdalesystems.com

The Importance of Being Agile

Embed Size (px)

DESCRIPTION

“Agile” development can be as a “grass roots” reaction to the complexity of predictive methodologies methodologies. The agile manifesto provocatively states that it “values individuals over processes, working software over documentation, customer collaboration over contract negotiation and responding to change over following a plan”.To many this sounds like a recipe for chaos. However, supporters of agile development are quick to point to overly bureaucratic processes, mountains of unread documentation, dissatisfied customers and failed projects.This presentation explores agile development and attempts to separate the reality from the hype.

Citation preview

Page 1: The Importance of Being Agile

www.lonsdalesystems.com

Page 2: The Importance of Being Agile

www.lonsdalesystems.com

Technology Adoption

The “chasm”

Laggards LateMajority

EarlyMajority

EarlyAdoptors Innovators

Page 3: The Importance of Being Agile

www.lonsdalesystems.com

Methodology Waves

Structu

red

Method

ologie

s

Object-

Oriente

d

Method

ologie

s

Agile

Method

ologie

s

1980 1990 2000

agile methodologies have crossed“the chasm”

Page 4: The Importance of Being Agile

www.lonsdalesystems.com

Structured Methodologies

• Transformation of work products• Waterfall life-cycle addresses requirements

and architecture risks late in the project• Attempt to “predict” all necessary tasks

TestCase

Test

COBOLC

Construction

StructureDiagrams

Design

Data FlowDiagrams

DataModels

Analysis

Text

Requirements

Page 5: The Importance of Being Agile

www.lonsdalesystems.com

Structured Methodologies

• Transformation of work products• Waterfall life-cycle addresses requirements

and architecture risks late in the project• Attempt to “predict” all necessary tasks

TestCase

Test

COBOLC

Construction

StructureDiagrams

Design

Data FlowDiagrams

DataModels

Analysis

Text

Requirements

Page 6: The Importance of Being Agile

www.lonsdalesystems.com

TestCase

TestConstructionDesignAnalysis

UseCase

Requirements

Objects

Object-Oriented Methodologies

• Evolution of work products• Iterative life-cycle addresses requirements and

architecture risks early in the project• Still attempts to “predict” all necessary tasks

Page 7: The Importance of Being Agile

www.lonsdalesystems.com

TestCase

TestConstructionDesignAnalysis

UseCase

Requirements

Objects

Object-Oriented Methodologies

• Evolution of work products• Iterative life-cycle addresses requirements and

architecture risks early in the project• Still attempts to “predict” all necessary tasks

Page 8: The Importance of Being Agile

www.lonsdalesystems.com

Agile Motivation

Say after me… “software

development is not the same as

building!”

“Neither is it the same as

manufacturing or digging big holes in the ground”

Page 9: The Importance of Being Agile

www.lonsdalesystems.com

Building

10 % 20 % 70 %

Require

ments

Design

Constructi

onSmart peopleMust obey physical laws

Less smart peopleExpensiveTime-consumingMaterials required

Page 10: The Importance of Being Agile

www.lonsdalesystems.com

30 % 70 %

Require

ments

Design

Software Development

Smart peopleEndlessly adaptable

Models Source Code

Construction is–Free–Instant–Error free–No material required

Page 11: The Importance of Being Agile

www.lonsdalesystems.com

30 % 70 %

Require

ments

Design

Software Development

Smart peopleEndlessly adaptable

Models Source Code

Construction is–Free–Instant–Error free–No material requiredAgile methodologies

focus on the uniqueness of software development…

Agile methodologies focus on the uniqueness of software development…

Page 12: The Importance of Being Agile

www.lonsdalesystems.com

Agile Methodologies

• “Agile”– Characterised by

quickness, lightness, and ease of movement; nimble

– Mentally quick or alert: an agile mind

• Agile methodologies attempt to be “adaptive” rather than “predictive”

Page 13: The Importance of Being Agile

www.lonsdalesystems.com

Agile Methodologies

• “Agile”– Characterised by

quickness, lightness, and ease of movement; nimble

– Mentally quick or alert: an agile mind

• Agile methodologies attempt to be “adaptive” rather than “predictive”

Page 14: The Importance of Being Agile

www.lonsdalesystems.com

Agile Methodologies

• eXtreme Programming (XP)• Crystal• Scrum• Feature Driven Development (FDD)• Dynamic System Development Method

(DSDM)

Page 15: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 16: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 17: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Peer reviews are a proven technique for improving quality. Pair programmingis simply a logical extension of peerreviews…

Page 18: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 19: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Testing is fundamental to software quality.Designing test cases before coding and employing automated test tools is simply a logical extension…

Page 20: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 21: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Even simple designssuffer the effectsof entropy over time.Continuous design improvement (refactoring) is a Way of preventingthis from happening…

Page 22: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 23: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

All project teamsHave their own vocabulary to describe systems.A system metaphor is simply a way of formalising this…

Page 24: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 25: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

It is obvious that tiredand exhausted developers do not give their best.Maintaining a sustainable pace is a sensibleresponse…

Page 26: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 27: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Communication is an important aspect of all projects.Locating all team members together with a full-time customer representative improves communication…

Page 28: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Page 29: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Scope + Quality = Time + Cost

Page 30: The Importance of Being Agile

www.lonsdalesystems.com

eXtreme Programming

Scope + Quality = Time + Cost

Developer estimate time and costUsers prioritise scope and qualityTime and cost are fixed for an iterationScope is planned for an iteration

Page 31: The Importance of Being Agile

www.lonsdalesystems.com

Which Approach?

Predictive???Agile???

Page 32: The Importance of Being Agile

www.lonsdalesystems.com

Which Approach?

Predictive???Agile???

The most widelyused approach to software development is still…“Code and Fix”

The most widelyused approach to software development is still…“Code and Fix”

Page 33: The Importance of Being Agile

www.lonsdalesystems.com

Which Approach?

Predictive???Agile???

The most widelyused approach to software development is still…“Code and Fix”

The most widelyused approach to software development is still…“Code and Fix”

“Responding to change over following a plan”“Great! Now I have a reason to avoid planning and just code whatever comes up next…”

Page 34: The Importance of Being Agile

www.lonsdalesystems.com

Which Approach?

PredictiveAgile

High certaintyRapid valueObjectiveLarger teamsSmaller teamsSizeExpensiveInexpensiveRefactoring

Current and future requirements

Current requirements only

Architecture

Known early, stable

Emerging, changing

RequirementsAvailableCommittedCustomersAdequate skillsSuperior skillsDevelopers

Page 35: The Importance of Being Agile

www.lonsdalesystems.com