Abstract may be a factor in both success and

Abstract

Agile software
development method is becoming popular and many organizations are adopting it
due to its effectiveness. Short development life cycles through iterative and
incremental process and active participation from custmer are key characteristics
of agile method. This Paper highlights key characteristics of agile approach and
different issues and challenges faced during implementation of agile methods. Comparison
between traditional and agile methods is elaborated. This study attempts to
elaborate important agile software development methods.

We Will Write a Custom Essay Specifically
For You For Only $13.90/page!


order now

Keywords:

       I.           
INTRODUCTION

Software
development is a laborious activity. One has to deal with predictability,
creeping requirements, ambiguity, informality, incompleteness, and inconsistency
during this process. Limited resources and time constraints put lot of pressure
on developers. New business needs and demands by users have shifted the
paradigm of software development from traditional heavy weight processes to the
lightweight iterative process. 3: “Agile Software Development is a
concept, a philosophy and a methodology which evolved in the 90’s as an answer
to the long growing Frustrations of the waterfall SDLC concepts. The term
promotes an iterative approach to software development using shorter and
lightweight development cycles and some different deliverables”. Agile methodology of developing the software is
becoming popular and an effective tool to cater emerging trends and business
needs. Agile method was designed to accept and manage the change and
accommodating change may be a factor in both success and failure of the
project. Agile takes several cycles to complete, product is not delivered at
once, team determine best model to work with, and processes and principles are
not pre-determined at the start of the project. Development time of each iteration
is small. Distributed development includes participation of different
stakeholders living in geographically dispersed areas, and having different
cultural backgrounds and time zone differences. Lot of software companies are
using distributed development with combination of agile development to get
maximum benefit of both approaches. Agile development helps in quick
development of product according to customer requirements as it promotes
communication between different stakeholders, timely feedback and iterative
development. Volatile changes are also taken into account. 1 Customers are engaged in
requirements process and get priority in requirements process. Face to face
communication and feedback from customers is encouraged. Less
documentation as compared to traditional development method reduces cost.

 

Traditional
models of software development include waterfall and spiral model. These models
are known as heavyweight because they put emphases on extensive planning and
rigorous documentation. Traditional methods are being widely used now a days
but none of them is free from errors and flaws.
Traditional software development models have been used for large projects.
These models include planning, analysis, and design, implementation and maintenance
phases. Each phase begin after the completion of first phase. However these
methods are prone to errors e.g. slow adoption to changing requirements and
over budgeting. Due to changing
technology and business requirements a number of agile software development methods
have been developed for example scrum, extreme programming, crystal and
adaptive software development to cater these changes. During agile, iterative
and incremental development, customer’s cooperation and interaction is focused.
Benefits of agile development include shorter development life cycle, higher
customer satisfaction, low cost, and easier adaptation to change. Agile method
focuses more on iteration and stakeholders instead of processes and tools. It
focuses on working system rather than documentation and customer’s response
than following a strict plan. It adopts a methodology which can accommodate
change not in early development phase but also in late development phase.
Development time is short in agile approaches and deliverables are distributed
early in time to get feedback. Direct communication is encouraged and trust is
built among developers and business clients. Developers modify their work
according to circumstances. However agile software development methods should
be used for small to medium sized teams and project instead of large projects
and teams where traditional methods of development are used. However some
studies showed that size of the team is not an issue and it is scaleable. 2According to Scott W.  Ambler (2010) the success rate of agile
projects are 60% successful and 12% are failures while 28% are challenged.
While Success rate for agile projects is 83% for small teams and 55% for large
teams. 3

 

Usually satisfaction of
customers is considered important for defining the quality of a system. Time
required to rectify the problem is minimum in agile methods. It gives customer
the top priority. But it focuses more on development rather than design and
also not suitable much for large projects. 4

Many prominent
organizations have adopted agile development approach for example Google,
yahoo, Microsoft, and Microsoft etc.

    II.           
LITERATURE
BACKGROUND

 

 

Principles of
agile manifesto include (http://www. Agilemanifesto.org/principles.html)
customer’s satisfaction through early and continuous working software, flexible
responses to change even at later stage, delivery of working software, daily
conversations with stakeholders, building a team and providing them with good
resources and work environment, promoting sustainable product development, and
maintaining simplicity. As More and more firms are adopting agile approach so
different issues arise by their usage. Challenges include skepticism by
developers about agile methodology, preference of developers about traditional
methods, increased reliance on social skills and lack of these among
developers, lack of business knowledge among developers, lack of agile specific
recruitment policies and suitable human capital .requirements engineering also
play important role in agile. Agile approach is less documented as compared to
traditional approach and requirements are gathered throughout agile
development. Proper documentation and prioritization of requirements should be
carried out to tackle this issue. 6  1
although distributed agile development is beneficial, there are many risks
associated with this process. Empirical studies suggest that risks mostly arise
due to lack of communication and collaboration among project teams. Risks
related to project management, software development life cycle have been 2  there are different issues and challenges
associated with agile methodology implementation. Different issues and
challenges faced during scrum implementation are documentation, communication,
user involvement,  and working
environment. 3 people play key role in agile. It is important to select right
people for right team and project. 4 different factors like maintainability,
reliability, reusability, efficiency, scalability, ease of use, security, cost
effectiveness, flexibility, robustness, and performance parameters contribute
to assure quality during agile development methodology.  5

 

 III.           
DIFFERENT
AGILE METHODOLOGIES

Two of the most widely
used methodologies of agile approach are scrum and extreme programming.

Scrum

The Scrum process was
developed by Schwaber and Sutherland.
Scrum
focuses on certain roles in development team, establishes an iterative working
mode, and develops coordination among individuals. There are three roles in
scrum methodology which include the product owner, the team, and the scrum
master. Product owner invests and bears the overall expenses of the project.
Team is responsible for the execution and development of the project.  Team in agile are self-organizing and
responsible for both success as well as failure of the project. Scrum master is
the leader of the team and ensures the implementation of the rules and
regulation of agile methods.

Extreme
programming

It is a lightweight
method for small to medium sized teams developing software in the face of vague
or rapidly changing requirements. Beneficial features of traditional modeling
are taken into account also in extreme programming.  Key characteristics of extreme programming
include pair programming, code revises, test driven approach, continuous
integration, collective code ownership and automated testing.

IV.           
ANALYSIS

2 agile software
developments focus on individuals and their interaction, working software
model, customer’s collaboration, and flexible response to change. Agile
characteristics include a true cultural change from plan based approach, Value
of requirement from stakeholders involved and more frequent and intense
communication.

 Agile
application is easy to maintain because of the integration within the module.
For attaining maintainability, feature driven development methodology is used. Agile
methodology is easily portable as nothing is constant in agile even hardware platform
and software design. Because customer is engaged actively in requirements phase
and timely feedback enables developers to build right system therefore
correctness of system is achieved. Agile approach is flexible in nature
as change is tackled without changing the overall system.

Development life cycle
of traditional approach is linear while agile approach is iterative and
incremental. Agile approach used for emerging and unknown changes while heavy
weight techniques are used for stable and known requirements. Requirements are
stable and clearly defined in traditional approach while volatile and unknown in
agile approach. Management focuses on processes in traditional approach while
agile approach is people centric. 
Traditional approach normally do not welcomes change while agile
approach welcomes change. Team members are pre-structured in traditional
approach while self-organizing in agile. Heavyweight
approach is little bit expensive than agile one.

For effective
management of teams and people in agile team leader should   ensure that each member of the team reports
to one and only one person, each person has no more than 7 people reporting directly
to him.

 

   V.           
ISSUES AND
CHALLENGES FACED DURING AGILE DEVELOPMENT

Different issues may
arise in agile approach of software development. Changing the mindset of traditional waterfall model is major challenge to
agile adaptation. Agile puts less emphasis on documentation which
creates hurdles for new developers to work on the continued project and they
spend lot of time to ask question from resource person. Agile software
development is difficult to apply in large projects. Problem in large projects
for agile is how to coordinate interaction among different teams. Large scale
projects also cause distance between developers and different stakeholders.
Complexity of agile methods increases with the increase in size of the team or
organization and adopting agile method requires entire set of change in
paradigm which is often difficult in large organization. Management also has to
move from life cycle models to iterative models and focus must be shifted from
long term to short-term goals and it requires educating customers and policy
makers. Following are some common issues and challenges faced during agile
implementation.

A.     Transformation
challenge

People are not always
willing to change because change implies new methods and practices to do a
specific task and some people may lose their productivity in the process of
change.

B.     Lack of training

Lack of training and
coaching is also another challenge in transforming the mindset of team. Lack of
investment in training can cause difficulties in implementing agile methods in
its true spirit. This also cause low motivational level and low motivation
degrades performance in return.

C.     Too high
workload

Workload is another
challenge in implementation of agile methods. Too much workload did not bring
true change in work ethics.

D.    Old commitments
kept

Management keeps strict
schedule and enforce deadlines which is not always beneficial and agile in
nature.

E.     Agile is
difficult to implement

Agile is difficult to
implement in practice. Most of the developers perform well during training but
they face difficulties in implementing it in reality. It may be due to
misunderstanding the real purpose of agile software development practices. For
example less documentation interpreted as freedom from documentation, rules and
regulations. Another challenge is building unfinished work product instead of
working complete product. Some organizations take agile as solution for all
problems which cause problems in future. 

F.    
Excessive enthusiasm

Another challenge is over enthusiasm towards adopting agile methods and
loose of interest with the passage of time and coming back to traditional ways
when the method did not produce early results. There is no way that agile
method will guarantee success so they should not be followed blindly.

VI.           
CONCLUSION

Agile software
development methods are used to cope with volatile business requirements and to
satisfy customers. In agile approach customer is engaged actively in
development phase and his feedback is incorporated. This paper highlights the
key characteristics of agile methodology, how is it different from traditional
approach of software development and different issues and challenges we face
during agile implementation. This paper also highlights two key methodologies
of agile which include scrum and extreme programming.