A Survey of Agile Software Methodologies: based upon published research papers
The “€New Economy”€™ of the 90s made businesses more dynamic. The Information
technology needs of these dynamic businesses were no longer static. Developers found
traditional software methodologies less effective as they now faced frequently changing
requirements. This increased their interest in agile methods, which were effective at
managing changing requirements. Furthermore, agile methods could improve quality and
reduce time simultaneously. Developers now not only have to make a choice between
traditional and agile methodologies, they also need to select which agile methodology is
best suited to address their requirements. This paper will help solve this problem by
providing a survey of agile methodologies. This survey will help readers to decide which
agile methodology can best serve their needs. The paper conducted the survey using a
literature review of existing research. The survey found philosophical similarities amongst
agile methods. It concludes that the combination of agile-methodologies and
traditional-methodologies will continue to grow.
INTRODUCTIONTHE purpose of software development methodologies is to effectively
reuse the existing knowledge of software development [1],[2]. Traditional software
development methodologies use process driven models. Developers followed specific
procedures and plans to develop software. Traditional methodologies like the “€water fall
methodology”€™ assumed that requirements could be determined accurately before
development of the software. These milestone-based approaches increased the time
required to develop software. In the “€new economy”€™ of 90s, time-to-market was a
significant competitive advantage [3],[4],[5]. Developers were asked to produce quality
software in less time and had to work without clearly defined requirements. These new
challenges caused developers to look towards agile software methodologies. Agile
methodologies can reduce the time required to develop software and improve the software
quality at the same time. Agile methods focus on people, their communication and working
software. Agile methodologies focus less on processes and documentation.
Agile methodologies have their own set of challenges [6]. The first challenge is to select
the agile methodology best suited for a particular project. The wide range of choices offers
developers flexibility however the developer needs good understanding of these
methodologies to make a well informed decision.
This paper provides a survey of agile software development methodologies to assist
developers in making the correct decision. Some comparisons are already available in the
literature [7], this paper additionally includes background knowledge and history of agile
methodology. Instead of focusing on process details this paper explains the philosophy
behind the processes.
Section II of this paper explains the history of agile methodologies. Section III provides
descriptions of various agile development methodologies. Based on the survey section IV
draws various conclusions. Section V relates employability skills with agile
methodologies.
HistorySignificance of its HistoryThere is no universally acceptable definition of agile
software methodologies. Understanding the evolution of agile software development
methodologies can help understand the nature of agile development methods.
History of software methodologiesThe success rate in software development was low in
1960s. The lessons learned from one project were hard to use in other projects. Developers
felt the need to create a systematic approach to develop software to replicate the successes
in software development. These systematic approaches for software development were
called software development methodologies. System Development life cycle is the oldest
software methodology which was developed in 1960. The waterfall methodology was first
formally described in 1970. These methodologies described formal processes, which can
help in the development of large information systems.
History of Agile methodologiesThe history of agile methods can be traced back to 1974 [8]
but at that time these methodologies were not considered mainstream. In the 90s, the world
economy started to shift from a manufacturing based economy to a service based economy.
Business requirements were hard to define and time-to-market was reduced. Time taken by
software development using traditional approach meant loss of competitive advantage in
areas where time-to-market was short. Agile methodologies reduced the time required to
develop the software while improving the quality [9]. Several modern agile methods were
developed in mid 90s. These methods included Scrum, Extreme Programming, Feature
Driven Development, Adaptive and Dynamic Systems Development Method. It is
expected that more agile methods will be developed in response to future requirement.
Agile ManifestoDevelopers observed the similarities between modern software
development methodologies like extreme programming, scrum and feature driven but there
was no agreement over how to articulate these similarities. In 2001 a group of developers
gather in Utah to discuss these new methodologies. They listed their four preferences
which differentiated their approach from traditional software development approach. These
preferences were [10]:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
These preferences do not imply complete absence of items mentioned in the later part of
the dot points above. For example if documentation is completely absent in a project it can
no longer be considered agile [11]. Based on the above mentioned preferences, participants
of the meeting listed 12 principles of agile methodologies. These principles were [10]:
Our highest priority is to satisfy the customer through early and continuous delivery of
valuable software.
Welcome changing requirements, even late in development. Agile processes harness
change for the customers competitive advantage
Deliver working software frequently, from a couple of weeks to a couple of months, with
a preference for the shorter timescale.
Business people and developers work together daily throughout the project.
Build projects around motivated individuals, give them the environment and support they
need and trust them to get the job done.
The most efficient and effective method of conveying information with and within a