Agile Software Processes: S.R.Raja SL/MCA
Agile Software Processes: S.R.Raja SL/MCA
S.R.Raja SL/MCA
08/14/09 1
An agile view of process
• Agile -> Active, dynamic and quick
process
Four key issues in agile
• 1. Self organizing team that have control
over the work they perform
• 2. Communication and collaboration
between team members and customers
08/14/09 2
An agile view of process…..
• 3. Accepting changes
• 4. rapid delivery of software that
satisfies the customer
08/14/09 3
What is AGILITY?
• Agility is a dynamic , content specify,
change embrace and growth
oriented.
• The following principles are used to achieve
agility
Our highest priority is to satisfy the
customer through early and continuous
delivery of valuable software.
Changing requirements of customer
needs.
08/14/09 4
AGILITY……
• Deliver software frequently (couple of
weeks – shorter time scale )
• Business people and developers must work
together daily throughout the project.
• Motivated individuals
• Most efficient and effective method
conveying information ( development team ,
face to face conversation).
08/14/09 5
AGILITY…….
• Working software is the primary
measure of progress.
• Promote sustainable development.
• Continuous attention to technical
excellence (Studies..)
• Simplicity – to minimize the work is
essential.
08/14/09 6
AGILITY…….
• The best architectures, requirements,
and designs emerge from self
conferencing teams.
• At regular intervals, the team reflects
on how to become more effective.
08/14/09 7
AGILITY…….
• Agile methods are adaptive rather than
predictive;
• Agile methods are people-oriented
rather than process-oriented;
08/14/09 8
Agile Characterstics
• They deliver software frequently;
• – Every release should work and be
deployable to production;
• The line between "design" and
"development" is intentionally fuzzy
(Confused)
• Face to face communication is the
dominant form of communication;
08/14/09 9
Characterstics …
• Business people and developers work
closely together;
• – Simplicity, "the art of maximizing the
amount of work not done", is an important
design goal; and
• – The methodology expects, and supports,
changes to requirements.
• Examples of Agile Methodologies
• – Extreme Programming, SCRUM, FDD etc.
08/14/09 10
Agile Processes
Based on three key assumptions
• It is difficult to predict in advance which
requirements or customer priorities will
change and which will not
• For many types of software design and
construction activities are interleaved
(construction is used to prove the design)
• Analysis, design, and testing are not as
predictable from a planning perspective as one
might like them to be
08/14/09 11
Human factors for Agile software
development
• Competence
• Common focus
• Collaboration
• Decision-making ability
• Fuzzy-problem solving ability
• Mutual trust and respect
• Self-organization
08/14/09 12
Human factors for Agile software
development
1.Competence
– Talent, specific software related skills, and
overall knowledge (taught all team members)
2.Common focus
- different task , different project ---- to achieve
same goal
3.Collaboration
- team members and business managers
communication
08/14/09 13
Human factors for Agile software
development
4. Decision-making ability
- any good software team must be allowed.
– agile team to freedom to control own
density.
5. Fuzzy-problem solving ability
– New problem – get the new solution.
• -
08/14/09 14
Human factors for Agile software
development
6. Mutual trust and respect
- A jelled team exhibits the trust and respect
that the necessary to make them
7. Self organization
- 1) work to be done
2) best accommodate its local environment
3) organize the work schedule to delivery the
software.
08/14/09 15
Agile Process Models
• Extreme Programming (XP)
• Adaptive Software Development (ASD)
• Dynamic Systems Development Method
(DSDM)
• Scrum
• Crystal
• Feature Driven Development (FDD)
• Agile Modeling (AM)
08/14/09 16
Extreme Programming (XP)
• Xp uses an object oriented approach
• It has four framework activities
1. Planning
2. Design
3.Coding
4.Testing
08/14/09 17
Extreme Programming (XP)
08/14/09 18
Extreme Programming
• Planning
– user stories created and
– ordered by customer value
– Xp team assess each story and assign cost
– 1. All stories will be implemented immediately
– 2. The stories with highest value will be moved in
the schedule and implemented first
– 3. The riskiest stories will be moved up in the
schedule and implemented first
08/14/09 19
Extreme Programming….
– Project velocity
• is the number of customer stories
implemented during the first release
• Project velocity can be used in
– 1. Help estimate delivery dates and
schedule for subsequent release and
– 2. determine whether an over commitment
has been made for all stories across the
entire development project.
08/14/09 20
Extreme Programming….
• Design
– Xp design follows the KIS (keep it simple) principle
– Xp use of CRC cards (class responsibility
collaborator) for simple OO context
– CRC cards and design prototypes are only work
products
– Spike Solution
– if a difficult problem is encountered in a design
story, Xp recommends the immediate creation of
operational prototype of that portion of the design
– encourages use of refactoring – process of
changing the softwaqre system.
08/14/09 21
Extreme Programming …..
• Coding
– emphasizes use of pairs programming to
create story code
– Unit testing is performed for every release
of software increment.
– continuous integration and smoke testing is
utilized
08/14/09 22
Extreme Programming …..
• Testing
– focuses on unit tests to exercise stories
– unit tests created before coding are implemented
using an automated testing framework to
encourage use of regression testing
– integration and validation testing done on daily
basis
– acceptance tests focus on system features and
functions viewable by the customer
08/14/09 23
Extreme Programming
• A collection of best
practices – each done to
the “extreme”
• Sounds extreme, but very
disciplined
• Created by Kent Beck,
Ward Cunningham, Ron
Jeffries
08/14/09 24
Adaptive Software Development
Features
• ASD as a technique for building
complex software and systems.
• ASD focus on human collaboration and
Self-organization.
• ASD life cycle
• 1. Speculation
2. Collaboration
3.Learing
08/14/09 25
Adaptive Software Development - 1
• Speculation
The word “speculate” refers to the planning.
– project initiated
– risk driven adaptive cycle planning takes
place
• Collaboration
– requires teamwork from a jelled team.
– joint application development is preferred
requirements gathering approach
08/14/09 26
Adaptive Software Development - 2
• Learning
– components implemented and tested
– focus groups provide feedback
– formal technical reviews
– Postmortems
08/14/09 27
Dynamic Systems
Development Method
• Provides a framework for building and
maintaining systems which meet tight time
constraints using incremental prototyping
• Uses Pareto principle (80% of project can be
delivered in 20% required to deliver the entire
project)
• It suggests an iterative software process.
• Each increment only delivers enough functionality
to move to the next increment.
• Uses time boxes to fix time and resources to
determine how much functionality will be
delivered in each increment
08/14/09 28
Dynamic Systems Development
Method Life Cycle
• Three life cycle for iterative and two additional
life cycle for activities
• Feasibility study
– establishes basic business requirements and
constraints
• Business study
– establishes functional and information
requirements needed to provide business
value
• Functional model iteration
– produces set of incremental prototypes to
demonstrate functionality to customer
08/14/09 29
Dynamic Systems Development
Method Life Cycle ….
• Design and build iteration
– revisits prototypes to ensure they provide
business value for end users
– may occur concurrently with functional
model iteration
• Implementation
– latest iteration placed in operational
environment
08/14/09 30
Scrum Principles
• Small working teams used to maximize
communication and minimize overhead and
maximize sharing
• Process must be adaptable to both technical and
business changes to ensure best possible product is
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
• Ability to declare the product done whenever required
08/14/09 31
Scrum Principles
• Are used to guide development
activities within a process.
• Frame work Activities
– Requirements,
– Analysis,
– Design
– Evolution and
– Delivery
08/14/09 32
Scrum Principles
– Within each framework activity , work tasks
occur within a process pattern called a
sprint
– The work conducted within a sprint ,
is adopted to problem at hand and is
defined and often modified in real
time by the scrum team
– Figure
08/14/09 33
08/14/09 34
Scrum Principles
– Scrum use a set of “ software process
patterns” that have proven effective for
projects with tight timelines, changing
requirements and business critically.
08/14/09 35
Scrum
• Backlog
– prioritized list of requirements or features the
provide business value to customer.
– items can be added at any time (changes are
introduced).
• Sprints
– work units required to achieve one of the backlog
items must fit into a predefined time-box (30 days)
– affected backlog items frozen (changes are not
introduced during the sprint)
08/14/09 36
Scrum
• Scrum meetings
– 15 minute daily meetings
– what was done since last meeting?
– what obstacles were encountered?
– what will be done by the next meeting?
• Demos
– deliver software increment to customer for
evaluation
08/14/09 37
Scrum
• Term in rugby to get an out-
of-play ball back into play
• Term used in Japan in 1987
to describe hyper-
productive development
• Used by Ken Schwaber and
Mike Beedle to describe
their Agile methodology
08/14/09 38
Scrum with Extreme
Programming
SCRUM
Project Management
Best Practices
Scrum works
EXTREME
well as a
PROGRAMMING
Mostly Technical
wrapper around
Best Practices
Extreme
Programming
08/14/09 39
Crystal
– Scrum use a set of “ software process
patterns” that have proven effective for
projects with tight timelines, changing
requirements and business critically.
08/14/09 40
Scrum Principles
– Scrum use a set of “ software process
patterns” that have proven effective for
projects with tight timelines, changing
requirements and business critically.
08/14/09 41
Feature Driven Philosophy
• Emphasizes collaboration among team members
• Manages problem and project complexity using
feature-based decomposition followed integration of
software increments
• Technical communication using verbal, graphical,
and textual means
• Software quality encouraged by using incremental
development, design and code inspections, SQA
audits, metric collection, and use of patterns
(analysis, design, construction)
08/14/09 42
08/14/09 43
Feature Driven Design - 1
• Develop overall model
– contains set of classes depicting business model of
application to be built
• Build features list
– features extracted from domain model
– features are categorized and prioritized
– work is broken up into two week chunks
• Plan by feature
– features assessed based on priority, effort, technical issues,
schedule dependencies
08/14/09 44
Feature Driven Design - 2
• Design by feature
– classes relevant to feature are chosen
– class and method prologs are written
– preliminary design detail developed
– owner assigned to each class
– owner responsible for maintaining design document for his
or her own work packages
• Build by feature
– class owner translates design into source code and
performs unit testing
– integration performed by chief programmer
08/14/09 45
Crystal
08/14/09 46