Agile Process: Overview

Agile Process: Overview
Agile software engineering represents a
reasonable compromise to conventional
software engineering for certain classes of
Agile development processes can deliver
successful systems quickly
Agile development stresses continuous
communication and collaboration among
developers and customers
Manifesto for Agile Software Development
Better to value:
 Individuals and interactions over processes and
 Working software over comprehensive
 Customer collaboration over contract negotiation
 Responding to change over following a plan
While the items on the right are still important
the items on the left are more valuable under
this philosophy
What is “Agility”?
Rapid and adaptive response to change
 Effective communication among all
 Drawing the customer onto the team
 Organizing a team so that it is in control of
the work performed
Yielding …
 Rapid, incremental delivery of software
Agile Teams
are responsive to changes during project
recognize that project plans must be flexible
eliminates the separation between customers
and developers
encourages team structures that make
communication among developers and
customers easier
emphasizes importance of rapid delivery of
operational software and de-emphasizes
importance of intermediate work products
can be applied to any software process as
long as the project team is allowed to
streamline tasks and conduct planning in way
that eliminate non-essential work products
An Agile Process
Is driven by customer descriptions of what is
required (scenarios)
Recognizes that plans are short-lived
Develops software iteratively with a heavy
emphasis on implementation
Delivers multiple ‘software increments’
Adapts as changes occur
Human Factors
Traits that need to exist in members of agile
development teams:
 Competence
 Common focus
 Collaboration
 Decision-making ability
 Fuzzy-problem solving ability
 Mutual trust and respect
 Self-organization
Agile Process Models
Extreme Programming (XP)
Adaptive Software Development (ASD)
Dynamic Systems Development Method
Feature Driven Development (FDD)
Agile Modeling (AM)
Extreme Programming (XP)
One of the first proposed agile processes
XP Planning
 Begins with the creation of “user stories”
 Agile team assesses each story and assigns a
 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
Probably not practical, but introduced many
agile practices
Adaptive Software Development (ASD)
Self-organization arises when independent
agents cooperate to create a solution to a
problem that is beyond the capability of any
individual agent
Adaptive cycle characteristics
 Mission-driven planning
 Component-based focus
 Uses “time-boxing”
 Explicit consideration of risks
 Emphasizes collaboration for requirements
 Emphasizes “learning”
Dynamic Systems Development Method
Provides a framework for building and
maintaining systems which meet tight time
constraints using incremental prototyping in a
controlled environment
Uses Pareto principle (80% of project can be
delivered in 20% time required to deliver the
entire project)
Each increment only delivers enough
functionality to move to the next increment
Dynamic Systems Development Method
Guiding principles
 Active user involvement
 Teams empowered to make decisions
 Fitness for business purpose is criterion for
deliverable acceptance
 Iterative and incremental development needed to
converge on accurate business solution
 All changes made during development are
 Requirements are baselined at a high level
 Testing throughout life-cycle
Agile Modeling
Practice-based methodology for effective
modeling and documentation of software
systems in a light-weight manner
Modeling principles
 Model with a purpose
 Use multiple models
 Travel light (only keep models with long-term value)
 Content is more important than representation
 Know the models and tools you use to create them
 Adapt locally