chapter 03
DESCRIPTION
TRANSCRIPT
AGILE PROCESS MODELS
History
Since Barry Boehm’s Spiral Model (1985) all later
software development was mainly focused towards
Iterative and Incremental Development (IID).
Different Organizations were using this model with
their own set of practices.
Why Agile?
In 1998 Standish Group published the “CHAOS”
report in which they discussed the reasons of project
failures during the recent years.
They analyzed over 23,000 projects and presented
their results regarding the project failures and
success factors.
Why Agile? (contd.)
Results:
Lack of customer involvement
Poor Requirements
Unrealistic Schedules
Lack of Change Management
Lack of Testing
Towards Agile
So many organizations tried to adapt their IID
practices for removing such causes of project
failures.
However there was no standard model to support
them.
Towards Agile ….
In February 2001, a Kent Beck and other 17
process experts interested in promoting modern,
simple IID methods and principles met in Utah to
discuss common ground.
The conference of Utah resulted in the formation of
Agile Alliance with a set of principles for agile
software development named as Agile Manifesto.
Concept of Agile
Agility is “accommodating any change”.
The Manifesto for Agile Software
Development
Kent Beck et al
“We are uncovering better ways of developing
software by doing it and helping others do it.”
Those principles are as follows:
Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.
4.1. What is Agility?
An agile team is able to appropriately respond to
changes.
Changes in software being built
Changes to team members
Changes because of new technology, changes of all
kinds that have impact on product/project.
Agility also encourages team structure and
communication
Project is developed by individuals working in team
What is Agility? (contd.)
Rapid delivery of operational software.
Customer as part of the team.
12 principles from agile alliance who want to
achieve agility
Agile can be applied to any process after fulfilling
certain conditions:
Project team can adapt tasks and develop product
rapidly
4.2.What is An Agile Process?
An agile process addresses these three assumptions:
it's difficult to predict which requirements will stay and which will change.
design and construction are interleaved.
analysis, design, construction, and testing are not as predictable as we might like.
Therefore, the agile process must be adaptable to change.
Must adapt incrementally, and develop incrementally.
What is an Agile Process?
The key to agile process is adaptability to the changing
project and technical conditions.
Agile process must adapt incrementally to progress
forward.
Software increments must be delivered in short time
period.
Get customer feedback and make adaptations
accordingly.
Key Traits of People Working on
Agile Team
Competence
Common focus
Collaboration
Decision making ability
Fuzzy problem solving agility
Mutual Trust and respect
Self Organization
4.3. Agile Process Models
Extreme Programming (XP)
Agile Software Development
Dynamic System Development Method (DSDM)
Scrum
Crystal
Feature Driven Development (FDD)
Agile Modeling
4.3.1. Extreme Programming (XP)
XP is targeted toward OO approach
XP phases
planning
Design
coding
testing.
Planning
planning (set of user-written stories, each with a
priority)
stories= use cases
Customer assign priorities and XP team assign cost
as each release is planned, more stories are
accommodated
Project velocity = # of stories accommodated divided
by number of week of this release
Implement stories in three ways
Immediately
Riskiest first
Higher priority first
Design
Based on KIS principle (keep it simple)
uses CRC (class-responsibility-collaborator)
CRC cards are the ONLY work product of design
Coding
key concept: test cases are created, and then code is
created. Nothing added to code beyond what is
necessary to meet the test (keep it lean)
Pair programming used (don't let the other one drift off
meeting ONLY test case: no extra features that may or
may not be needed in future)
Recommends the construction of a unit test before
coding commences
Testing
All unit tests are executed daily
“Acceptance tests” are defined by the customer and
executed to assess customer visible functionality
4.3.4. Scrum
Developed by Sutherland and his team in early 90’s
Further development performed by Schwaber anad
Beedle
Artifacts in Scrum
Backlog
Sprints
Scrum Meetings
Challenges
The customer is expected to be collaborative,
representative, authorized, committed and
knowledgeable.
Some companies don’t allow the customers to be directly
involve in the development process.
Customer may be too busy to be available all the time.
Organization is not willing to have a full time customer involvement in their work.