Agile Process: Overview

advertisement
Agile Process: Overview



Agile software engineering represents a
reasonable compromise to conventional
software engineering for certain classes of
software
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
tools
 Working software over comprehensive
documentation
 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
stakeholders
 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
development

recognize that project plans must be flexible

eliminates the separation between customers
and developers
Agility



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
(DSDM)
Scrum
Crystal
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
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

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
gathering
 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
reversible
 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
Download