chapter 03

Post on 14-Nov-2014

119 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

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.

top related