Software Engineering: A Practitioner’s Approach, Software Engineering: A Practitioner’s Approach,
6/e 6/e
Chapter 4 Chapter 4
Agile Development Agile Development
copyright © 1996, 2001, 2005
R.S. Pressman & Associates, Inc.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 1
For University Use Only
May be reproduced ONLY for student use at the university level when used in conjunction with Software Engineering: A Practitioner's Approach.
Any other reproduction or use is expressly prohibited.
The Manifesto for The Manifesto for
Agile Software Development Agile Software Development
“We are uncovering better ways of developing
“We are uncovering better ways of developing software by doing it and helping others do it.
software by doing it and helping others do it. y y g g p g p g Through this work we have come to value:
Through this work we have come to value:
••Individuals and interactions Individuals and interactions over processes over processes and tools
and tools
••Working software Working software over comprehensive over comprehensive documentation
documentation
••Customer collaboration Customer collaboration over contract over contract negotiation
negotiation g g
••Responding to change Responding to change over following a plan over following a plan
What is “Agility”?
What is “Agility”?
Effective (rapid and adaptive) response to change Effective (rapid and adaptive) response to change
Effective communication among all stakeholders Effective communication among all stakeholders
Effective communication among all stakeholders Effective communication among all stakeholders
Drawing the customer onto the team Drawing the customer onto the team
Organizing a team so that it is in control of the work Organizing a team so that it is in control of the work performed
performed Yielding … Yielding …
R id i t l d li f ft
R id i t l d li f ft
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 3
Rapid, incremental delivery of software Rapid, incremental delivery of software
An Agile Process An Agile Process
Is driven by customer descriptions of what is Is driven by customer descriptions of what is required (scenarios)
required (scenarios) required (scenarios) required (scenarios)
Recognizes that plans are short Recognizes that plans are short--lived lived
Develops software iteratively with a heavy Develops software iteratively with a heavy emphasis on construction activities
emphasis on construction activities
Delivers multiple ‘software increments’ Delivers multiple ‘software increments’
Adapts as changes occur Adapts as changes occur
Adapts as changes occur Adapts as changes occur
Extreme Programming (XP) Extreme Programming (XP)
The most widely used agile process, originally proposed The most widely used agile process, originally proposed by Kent Beck
by Kent Beck by Kent Beck by Kent Beck
XP Planning XP Planning
Begins with the creation of “ Begins with the creation of “user stories user stories””
Agile team assesses each story and assigns a Agile team assesses each story and assigns a cost cost
Stories are grouped to for a Stories are grouped to for a deliverable increment deliverable increment
A A commitment commitment is made on delivery date is made on delivery date
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 5
y y
After the first increment “ After the first increment “project velocity project velocity” is used to help define ” is used to help define subsequent delivery dates for other increments
subsequent delivery dates for other increments
Extreme Programming (XP) Extreme Programming (XP)
XP Design XP Design
Follows the Follows the KIS principle KIS principle
Encourage the use of Encourage the use of CRC cards CRC cards (see Chapter 8) (see Chapter 8)
For difficult design problems, suggests the creation of “ For difficult design problems, suggests the creation of “spike solutions spike solutions””— —a design a design prototype
prototype
Encourages “ Encourages “refactoring refactoring””— —an iterative refinement of the internal program design an iterative refinement of the internal program design
XP Coding XP Coding
Recommends the Recommends the construction of a unit test construction of a unit test for a store for a store before before coding commences coding commences
Encourages “ Encourages “pair programming pair programming””
XP Testing XP Testing
XP Testing XP Testing
All All unit tests are executed daily unit tests are executed daily
Extreme Programming (XP) Extreme Programming (XP)
user st ories values
accept ance t est crit eria
it erat ion plan
simple design CRC cards
spike solut ions prot ot ypes
pair it erat ion plan
ref act oring
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 7
unit t est
cont inuous int egrat ion accept ance t est ing
p
programming
Release
sof t ware incrementproject v elocit y comput ed
Adaptive Software Development Adaptive Software Development
Originally proposed by Jim Highsmith Originally proposed by Jim Highsmith
ASD ASD — — distinguishing features distinguishing features
ASD ASD distinguishing features distinguishing features
Mission Mission--driven driven planning planning
Component Component--based focus based focus
Uses “ Uses “time time--boxing boxing” (See Chapter 24) ” (See Chapter 24)
Explicit consideration of Explicit consideration of risks risks
Emphasizes Emphasizes collaboration collaboration for requirements gathering for requirements gathering
Emphasizes “ Emphasizes “learning learning” throughout the process ” throughout the process
Adaptive Software Development Adaptive Software Development
adapt ive cycle planning
uses mission st at ement project const raint s basic requirement st ime-boxed release plan
Requirement s gat hering JAD
mini-specs
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 9
component s implement ed/ t est ed f ocus groups f or f eedback
f ormal t echnical reviewspost mort ems
sof t ware increment
adjust ment s f or subsequent cy cles
Release
Dynamic Systems Development Method Dynamic Systems Development Method
Promoted by the DSDM Consortium ( Promoted by the DSDM Consortium (www.dsdm.org www.dsdm.org))
DSDM DSDM distinguishing features distinguishing features
DSDM DSDM— —distinguishing features distinguishing features
Similar in most respects to XP and/or ASD Similar in most respects to XP and/or ASD
Nine guiding principles Nine guiding principles
Active user involvement is imperative. Active user involvement is imperative.
DSDM teams must be empowered to make decisions. DSDM teams must be empowered to make decisions.
The focus is on frequent delivery of products. The focus is on frequent delivery of products.
Fitness for business purpose is the essential criterion for acceptance of deliverables. Fitness for business purpose is the essential criterion for acceptance of deliverables.
It ti d i t l d l t i t t
It ti d i t l d l t i t t
Iterative and incremental development is necessary to converge on an accurate Iterative and incremental development is necessary to converge on an accurate business solution.
business solution.
Dynamic Systems Development Method Dynamic Systems Development Method
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 11
DSDM Life Cycle (with permission of the DSDM consortium)
Scrum Scrum
Originally proposed by Schwaber and Beedle Originally proposed by Schwaber and Beedle
Scrum Scrum distinguishing features distinguishing features
Scrum Scrum— —distinguishing features distinguishing features
Development work is partitioned into “ Development work is partitioned into “packets packets””
Testing and documentation are on Testing and documentation are on--going going as the product is as the product is constructed
constructed
Work occurs in “ Work occurs in “sprints sprints” and is derived from a “ ” and is derived from a “backlog backlog” of ” of existing requirements
existing requirements
Meetings are very short Meetings are very short g g y y and sometimes conducted without chairs and sometimes conducted without chairs
““demos demos” are delivered to the customer with the time ” are delivered to the customer with the time--box allocated box allocated
Scrum Scrum
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 13
Scrum Process Flow (used wit h permission)
Crystal Crystal
Proposed by Cockburn and Highsmith Proposed by Cockburn and Highsmith
Crystal Crystal distinguishing features distinguishing features
Crystal Crystal— —distinguishing features distinguishing features
Actually a Actually a family of process models family of process models that allow that allow
““maneuverability maneuverability” based on problem characteristics ” based on problem characteristics
Face Face--to to--face communication face communication is emphasized is emphasized
Suggests the use of “ Suggests the use of “reflection workshops reflection workshops” to review the ” to review the work habits of the team
work habits of the team
Feature Driven Development Feature Driven Development
Originally proposed by Peter Coad et al Originally proposed by Peter Coad et al
FDD FDD distinguishing features distinguishing features
FDD FDD— —distinguishing features distinguishing features
Emphasis is on defining Emphasis is on defining “features” “features”
a a feature feature “is a client “is a client--valued function that can be implemented in two valued function that can be implemented in two weeks or less.”
weeks or less.”
Uses a Uses a feature template feature template
<action> the <result> <by | for | of | to> a(n) <object> <action> the <result> <by | for | of | to> a(n) <object>
A A features list features list is created and “ is created and “plan by feature plan by feature” is conducted ” is conducted
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 15
A A features list features list is created and is created and plan by feature plan by feature is conducted is conducted
Design and construction merge in FDD Design and construction merge in FDD
Feature Driven Development Feature Driven Development
Reprinted with permission of Peter Coad
Reprinted with permission of Peter Coad
Agile Modeling Agile Modeling
Originally proposed by Scott Ambler Originally proposed by Scott Ambler
Suggests a set of agile modeling principles Suggests a set of agile modeling principles
Suggests a set of agile modeling principles Suggests a set of agile modeling principles
Model with a purpose Model with a purpose
Use multiple models Use multiple models
Travel light Travel light
Content is more important than representation Content is more important than representation
Know the models and the tools you use to create them Know the models and the tools you use to create them
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided
with permission by R.S. Pressman & Associates, Inc., copyright © 1996, 2001, 2005 17