0% found this document useful (0 votes)
239 views

Agile Software Processes: S.R.Raja SL/MCA

The document discusses several agile software processes. It describes key aspects of agile development including self-organizing teams, communication between teams and customers, accepting changes, and rapid delivery. Specific agile methodologies covered include Extreme Programming, Scrum, Adaptive Software Development, Dynamic Systems Development Method, and Feature Driven Development. The document also discusses principles of agility, characteristics of agile processes, and human factors important for agile software development.

Uploaded by

Kishore
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
239 views

Agile Software Processes: S.R.Raja SL/MCA

The document discusses several agile software processes. It describes key aspects of agile development including self-organizing teams, communication between teams and customers, accepting changes, and rapid delivery. Specific agile methodologies covered include Extreme Programming, Scrum, Adaptive Software Development, Dynamic Systems Development Method, and Feature Driven Development. The document also discusses principles of agility, characteristics of agile processes, and human factors important for agile software development.

Uploaded by

Kishore
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 46

Agile Software Processes

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)

• XP is a used to quickly develop quality


software program to customers.
• The goal of this methodology is to
deliver what the customer is looking for
in the quickest way.

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

You might also like