SE CHAP 3 Agility
SE CHAP 3 Agility
SE CHAP 3 Agility
refactoring
pair
programming
Release
unit test
software
software increment
increment continuous integration
project
project velocity
velocity computed
computed
acceptance testing
XP - Planning
Begins with the creation of a set of stories (also
called user stories)
Each story is written by the customer and is placed
on an index card
The customer assigns a value (i.e. a priority) to the
story
Agile team assesses each story and assigns a cost
Stories are grouped to for a deliverable increment
A commitment is made on delivery date
After the first increment “project velocity” is used to
help define subsequent delivery dates for other
increments
XP - Design
Follows the KIS (keep it simple) principle
Encourage the use of CRC (class-
responsibility-collaborator) cards
For difficult design problems, suggests the
creation of “spike solutions”—a design
prototype
Encourages “refactoring”—an iterative
refinement of the internal program design
Design occurs both before and after coding
commences
XP - Coding
Recommends the construction of a series
of unit tests for each of the stories before
coding commences
Encourages “pair programming”
Mechanism for real-time problem solving and
real-time quality assurance
Keeps the developers focused on the problem
at hand
Needs continuous integration with other
portions (stories) of the s/w, which
provides a “smoke testing” environment
XP - Testing
Unit tests should be implemented using a
framework to make testing automated.
This encourages a regression testing
strategy.
Integration and validation testing can occur
on a daily basis
Acceptance tests, also called customer
tests, are specified by the customer and
executed to assess customer visible
functionality
Acceptance tests are derived from user
stories
Adaptive Software Development
Originally proposed by Jim Highsmith
Self-organization arises when independent
agents cooperate to create a solution to a
problem that is beyond the capability of any
individual agent
Emphasizes self-organizing teams, interpersonal
collaboration, and both individual and team
learning
Phases
Speculation (project initiated and adaptive
cycle planning takes place)
Collaboration (requires teamwork from a jelled
team, joint application development is preferred
requirements gathering approach)
Learning (components implemented and
tested, focus groups provide feedback, formal
technical reviews, postmortems)
Adaptive Software Development
Scrum
Originally proposed by Schwaber and Beedle
Scrum—distinguishing features
Development work is partitioned into “packets”
Testing and documentation are on-going as the
product is constructed
Work occurs in “sprints” and is derived from a
“backlog” of existing requirements
Meetings are very short and sometimes conducted
without chairs
“Demos” are delivered to the customer with the time-
box allocated
Roles
• Product Owner
• Scrum Master
• Scrum team
Scrum principles
Small working team used to maximize communication,
minimize overhead, and maximize sharing of informal
knowledge
Process must be adaptable to both technical and business
challenges to ensure best product produced
Process yields frequent increments that can be inspected,
adjusted, tested, documented and built on
Development work and people performing it are
partitioned into clean, low coupling partitions
Testing and documentation is performed as the product is
built
Provides the ability to declare the product done whenever
required
Scrum
Dynamic Systems Development
Method
Promoted by the DSDM Consortium (www.dsdm.org)
DSDM—distinguishing features
Similar in most respects to XP and/or ASD
Guiding principles
• Active user involvement is imperative.
• DSDM teams must be empowered to make
decisions.
• The focus is on frequent delivery of products.
• Fitness for business purpose is the essential
criterion for acceptance of deliverables.
• Iterative and incremental development is necessary
to converge on an accurate business solution.
• All changes during development are reversible.
• Requirements are baselined at a high level
• Testing is integrated throughout the life-cycle.
Dynamic Systems Development
Method
Agile Idea
Frequent idea: Fix time, not features
Agile
Prescriptive