You are on page 1of 8

Agile Software Processes

An alternative to conventional software engineering for certain classes of software and certain
types of software projects.
Deliver successful systems quickly.
Encourages continuous communication and collaboration among developers and customers.
Agile software engineering embraces a philosophy that encourages customer satisfaction,
incremental software delivery, small project teams (composed of software engineers and
stakeholders), informal methods, and minimal software engineering work products.
Agile software engineering development guidelines stress on-time delivery of an operational
software increment over analysis and design

The agile Development Manifesto


The four core values of Agile:
1.
2.
3.
4.

Individuals and interactions over processes and tools.


Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.

What is agility

Means things are done fast and we are able to respond to changes during project development
Agility is dynamic, content specific, aggressively change embracing and growth oriented [Steven
Goldman et al]
Agile development recognizes that project plans must be flexible
Agility encourages team structures and attitudes that make communication among developers and
customers more facile
Eliminates the separation between customers and developers
Emphasizes on rapid delivery of operational software and de-emphasizes the importance of
having intermediate work products.
Agility 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

Agility Principles

Highest priority is to satisfy customer through early and continuous delivery of valuable software.
Welcome changing requirements even late in development. Accommodating change is viewed as
increasing the customers competitive advantage.
Delivering working software frequently with a preference for shorter delivery schedules (e.g.
every 2 or 3 weeks) .
Business people and developers must work together daily during the project.
Face-to-face communication is the most effective method of conveying information within the
development team
Working software is the primary measure of progress

Agile Software Processes Software Engineering.

Page 1

Build projects around motivated individuals, give them the environment and support they need,
trust them to get the job done
Agile processes support sustainable development; developers and customers should be able to
continue development indefinitely
Continuous attention to technical excellence and good design enhances agility.
Simplicity (defined as maximizing the work not done) is essential.
The best architectures, requirements, and design emerge from self-organizing teams.
At regular intervals teams reflects how to become more effective and adjusts its behaviour
accordingly.

Agile Process
Based on three key assumptions:
1. It is difficult to predict in advance which requirements or customer priorities will change and
which will not.
2. For many types of software projects, design and construction activities are interleaved
(construction is used to prove the design)
3. Analysis, design, construction and testing are not as predictable from a planning perspective as
one might like them to be.
Agile processes must be adapted incrementally to manage unpredictability.
Incremental adaptation requires customer feedback based on evaluation of delivered software increments
(executable prototypes) over short time periods.

Characteristics/Traits of Agile Team Members

Competence They have to be skilled


Common focus work as one team
Collaboration they should work together and solve problems one cannot solve
Decision-making ability.
Fuzzy-problem solving ability they need to be able to solve vague problem
Mutual trust and respect.
Self-organization.

Challenges on Software Process

Required people skills they need to be able to communicate with clients


Face-to-face communication is not possible for some projects because of location
Not all software projects can have small teams because of the nature of the project
Customer collaboration

Advantages

Customer satisfaction
The software project is visible because we are using increments
Easy to manage its predictability

Agile Software Processes Software Engineering.

Page 2

Agile Process Models


1.
2.
3.
4.

Extreme Programming (XP)


Adaptive Software Development (ASD)
Dynamic Systems Development Method (DSDM)
Scrum

5. Feature Driven Development (FDD)


6. Agile Modeling (AM)
1. Extreme Activities
Framework activities in XP environment:

i.

Planning

ii.

User stories created and ordered by customer value

Design

iii.

Simple Object Oriented Design e.g. writing use cases


Difficult design problem is solved using spike solution; used to solve tough technical questions
CRC cards and design prototypes are only work products
Encourages use of refactoring

Coding

iv.

Emphasizes use of pair programming to create story code


Continuous integration and smoke testing is utilized
Uses refactoring; improving code i.e. rewriting code to improve the design of the system/software

Testing

Focuses on unit testing to exercise stories.


How is unit testing done?

Smoke testing to test what has been implemented. It checks whether the critical
functionalities of the user stories are working fine
The test cases will cover the most functionalities of the user stories
Integration and validation testing done on daily basis using regression testing. It is used to
confirm that a recent code change has not affected existing features
Acceptance tests focus on system features and functions viewable by the customer.

Design

Simple design

Agile Software Processes Software Engineering.

Page 3

Refactoring

User stories
Values
Acceptance test criteria
Planning
Iteration plan

Coding

Pair programming

Release
Software increment

Test

Velocity computed

Unit testing
Continuous integration

2. Adaptive
Software
Development
Features
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
o Mission oriented
o Component based
o Iterative
o Time boxing
o Risk driven and change-tolerant

Adaptive Software development Activities


1) Speculation
o The project is initiated
o Identify risks; plan to reduce/manage the risks
2) Collaboration
o Work with customers to come up with requirements
o Joint Application Development is preferred requirements gathering approach
o The work product created is minispecs
3) Learning
o components implemented and tested
o There are post mortems
o focus groups provide feedback
Agile Software Processes Software Engineering.

Page 4

1)
2)
3)
4)

5)

formal technical reviews

3. Dynamic Systems Development Methods (DSDM)


Used in cases where time is limited
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% of the time required to deliver the
entire project)
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
Activities of DSDM
Feasibility study:
o establishes requirements and constraints
Business study
o establishes functional and information requirements needed to provide business value
Functional model iteration
o produces set of incremental prototypes to demonstrate functionality to customer
Design and build iteration
o revisits prototypes to ensure they provide business value for end users
o may occur concurrently with functional model iteration
Implementation
o latest iteration placed in operational environment
4. Scrum Principles
Small working teams used to maximize communication and minimize overhead
Testing and documentation is performed as the product is built
Software process must be adaptable to both technical and business challenges to ensure best
product produced
Software process must produce frequent increments that can be inspected, adjusted, tested,
documented and built on
It should be possible to declare the product done whenever required
Development work and people performing it are partitioned into clean, low coupling partitions
Backlog
o prioritized list of requirements or features that provide business value to customer
o items can be added at any time
Sprints
o work units required to achieve one of the backlog items
o Sprints must fit into a predefined time-box(30 days)
o Affected backlog item are frozen.
Scrum meetings
o 15 minute daily meetings
o What was done since last meeting?

Agile Software Processes Software Engineering.

Page 5

o
o

What obstacles were encountered?


What will be done by the next meeting?

Demos
o deliver software increment to customer for evaluation (Every 30 days)

i.
ii.

iii.

5. Feature Driven Software Philosophy (FDS)


Emphasizes collaboration among team members
Manages problem and project complexity using feature-based decomposition followed by
integration of software increments
Technical communication using verbal, graphical, and textual means
Software quality encouraged by using incremental development, design and code inspections,
Software Quality Assurance audits, metric collection, and use of patterns (analysis, design,
construction)
Activities
Develop overall model
o Contains set of classes depicting business model of application to be built
Build features list
o features extracted from domain model
o features are categorized and prioritized
o work is broken up into two week chunks
Plan by feature

Agile Software Processes Software Engineering.

Page 6

iv.

v.

o features assessed based on priority, effort, technical issues, schedule dependencies


Design by feature
o classes relevant to feature are chosen
o class and method prologs are written
o preliminary design detail developed
o owner assigned to each class
o Class owner responsible for maintaining design document for his or her own work
package.
Build by feature
o class owner translates design into source code and performs unit testing
o integration performed by chief programmer
FDD Process

Agile Modeling
Practice-based methodology for effective modeling and documentation of software systems in a lightweight manner

Agile Software Processes Software Engineering.

Page 7

Modeling principles
o Model with a purpose and not just to get things done
o Use multiple models
o Travel light (only keep models with long-term value)
o Content is more important than representation
o Know the models and tools you use to create them
o Adapt locally can change things depending on the situation

Requirements gathering and analysis modelling


o
o

Work collaboratively to find out what customer wants to do


Once requirements model is built collaborative analysis modelling continues with the customer

Architectural modeling
o
o

Derives preliminary architecture from analysis model


Architectural model must be realistic for the environment and must be understandable by
developers

Agile Software Processes Software Engineering.

Page 8

You might also like