You are on page 1of 14

Agile Software Development

• Agile software development is a group of
software development methods in which
requirements and solutions evolve through
collaboration between self-organizing, cross-
functional teams. It promotes adaptive
planning, evolutionary development, early
delivery, continuous improvement and
encourages rapid and flexible response to
Agile methods
• Dissatisfaction with the overheads involved in software design
methods of the 1980s and 1990s led to the creation of agile
methods. These methods:
– Focus on the code rather than the design
– Are based on an iterative approach to software development
– Are intended to deliver working software quickly and evolve this
quickly to meet changing requirements.
• The aim of agile methods is to reduce overheads in the
software process (e.g. by limiting documentation) and to be
able to respond quickly to changing requirements without
excessive rework.

The principles of agile methods
Principle Description
Customer involvement Customers should be closely involved throughout the
development process. Their role is to provide and prioritize new
system requirements and to evaluate the iterations of the
Incremental delivery The software is developed in increments with the customer
specifying the requirements to be included in each increment.

People not process The skills of the development team should be recognized and
exploited. Team members should be left to develop their own
ways of working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the
system to accommodate these changes.

Maintain simplicity Focus on simplicity in both the software being developed and
in the development process. Wherever possible, actively work
to eliminate complexity from the system.

Agile method applicability
• Product development where a software company is
developing a small or medium-sized product for sale.
• Custom system development within an organization,
where there is a clear commitment from the customer
to become involved in the development process and
where there are not a lot of external rules and
regulations that affect the software.
• Because of their focus on small, tightly-integrated
teams, there are problems in scaling agile methods to
large systems.

Agile Methodology is becoming popular and catching up with the
IT industry because of the following reasons:
• It helps teams embrace rapid changes & increase adaptability
with customers easily.
• It helps teams to mitigate risks at early stages of product life-
• Customers see the visible progress as they are able feel of
working software.
• Customers give feedback at every stage of the product life
cycle, since they are part of the product development.
• Early adaptation of feedback leads to a system that meets the
needs of various stakeholders.
• Complexity of the features are properly prioritized and easily
managed by the team.
• Team has chance to learn from mistakes during each iteration
of development.
Using the Agile methodologies helps team to
avoid pitfalls of traditional approach such as
• Stabilization of Product and Releases are too
• Unable to carry out Frequent Code changes
• Unable to do rework development.
• Requirements are not clear as client is not
involved in every iteration of development.
• The time difference between requirements
taken and product released time was very
long, this elapsed time made product
irrelevant as market has changed rapidly.
Problems with agile methods
• It can be difficult to keep the interest of customers who are
involved in the process.
• Team members may be unsuited to the intense involvement
that characterises agile methods.
• Prioritising changes can be difficult where there are multiple
• Maintaining simplicity requires extra work.
• Contracts may be a problem as with other approaches to
iterative development.

Chapter 3 Agile software development 8

Agile methods and software
• Most organizations spend more on maintaining existing
software than they do on new software development.
So, if agile methods are to be successful, they have to
support maintenance as well as original development.
• Two key issues:
– Are systems that are developed using an agile approach
maintainable, given the emphasis in the development
process of minimizing formal documentation?
– Can agile methods be used effectively for evolving a
system in response to customer change requests?
• Problems may arise if original development team
cannot be maintained.

• The Different methodologies of Agile Framework are as
Dynamic System Development Methodology is an agile
framework for software projects, it was used to fine
tune the traditional approaches. The most recent
version of DSDM is called DSDM Atern. The name
Atern is a shortening of Arctic Tern - a collaborative
bird[citation needed] that can travel vast distances
and epitomizes many facets of the method which are
natural ways of working e.g. prioritization and
collaboration. DSDM addresses the most common
failures of information systems projects, including
exceeding budgets, missing deadlines, and lack of
user involvement and top-management commitment
• Scrum
Scrum is most popular agile framework in the
world, Scrum uses iterative and incremental
development model. Scrum concentrates
particularly on how to manage tasks within a
team-based development environment. Scrum
provides the simple framework of basic tenets
to solve problems and deliver good results -
more valuable software faster.
• XP
Extreme Programming is a type of agile software development, it
advocates frequent "releases" in short development cycles,
which is intended to improve productivity and introduce
checkpoints where new customer requirements can be
adopted. The methodology takes its name from the idea that
the beneficial elements of traditional software engineering
practices are taken to "extreme" levels. Extreme Programming
is a software-development discipline that organizes people to
produce higher-quality software more productively. XP
addresses the analysis, development and test phases with
novel approaches that make a substantial difference to the
quality of the end product.
• Test-driven development (TDD) is a software
development process that relies on the
repetition of a very short development cycle:
first the developer writes an (initially failing)
automated test case that defines a desired
improvement or new function, then produces
the least amount of code to pass that test, and
finally refractors the new code to acceptable
• Lean
Lean is a production practice that considers the expenditure of
resources for any goal other than the creation of value for the
end customer to be wasteful, and thus a target for
elimination. Working from the perspective of the customer
who consumes a product or service, "value" is defined as any
action or process that a customer would be willing to pay for.
Lean is centered on preserving value with less work.
• Kanban
Kanban is a system to control the logistical chain from a
production point of view, and is not an inventory control
system. Kanban was developed by Taiichi Ohno, at Toyota, to
find a system to improve and keep up a high level of
production. Kanban is one method through which JIT is
achieved. Kanban became an effective tool in support of
running a production system as a whole, and it proved to be
an excellent way for promoting improvement.