Abstract Agile softwaredevelopment method is becoming popular and many organizations are adopting itdue to its effectiveness.
Short development life cycles through iterative andincremental process and active participation from custmer are key characteristicsof agile method. This Paper highlights key characteristics of agile approach anddifferent issues and challenges faced during implementation of agile methods. Comparisonbetween traditional and agile methods is elaborated. This study attempts toelaborate important agile software development methods.
Keywords: I. INTRODUCTIONSoftwaredevelopment is a laborious activity. One has to deal with predictability,creeping requirements, ambiguity, informality, incompleteness, and inconsistencyduring this process.
Limited resources and time constraints put lot of pressureon developers. New business needs and demands by users have shifted theparadigm of software development from traditional heavy weight processes to thelightweight iterative process. 3: “Agile Software Development is aconcept, a philosophy and a methodology which evolved in the 90’s as an answerto the long growing Frustrations of the waterfall SDLC concepts. The termpromotes an iterative approach to software development using shorter andlightweight development cycles and some different deliverables”. Agile methodology of developing the software isbecoming popular and an effective tool to cater emerging trends and businessneeds.
Agile method was designed to accept and manage the change andaccommodating change may be a factor in both success and failure of theproject. Agile takes several cycles to complete, product is not delivered atonce, team determine best model to work with, and processes and principles arenot pre-determined at the start of the project. Development time of each iterationis small. Distributed development includes participation of differentstakeholders living in geographically dispersed areas, and having differentcultural backgrounds and time zone differences. Lot of software companies areusing distributed development with combination of agile development to getmaximum benefit of both approaches. Agile development helps in quickdevelopment of product according to customer requirements as it promotescommunication between different stakeholders, timely feedback and iterativedevelopment. Volatile changes are also taken into account. 1 Customers are engaged inrequirements process and get priority in requirements process.
Face to facecommunication and feedback from customers is encouraged. Lessdocumentation as compared to traditional development method reduces cost. Traditionalmodels of software development include waterfall and spiral model. These modelsare known as heavyweight because they put emphases on extensive planning andrigorous documentation. Traditional methods are being widely used now a daysbut 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 maintenancephases. Each phase begin after the completion of first phase.
However thesemethods are prone to errors e.g. slow adoption to changing requirements andover budgeting. Due to changingtechnology and business requirements a number of agile software development methodshave been developed for example scrum, extreme programming, crystal andadaptive software development to cater these changes. During agile, iterativeand incremental development, customer’s cooperation and interaction is focused.Benefits of agile development include shorter development life cycle, highercustomer satisfaction, low cost, and easier adaptation to change. Agile methodfocuses more on iteration and stakeholders instead of processes and tools. Itfocuses on working system rather than documentation and customer’s responsethan following a strict plan.
It adopts a methodology which can accommodatechange not in early development phase but also in late development phase.Development time is short in agile approaches and deliverables are distributedearly in time to get feedback. Direct communication is encouraged and trust isbuilt among developers and business clients. Developers modify their workaccording to circumstances. However agile software development methods shouldbe used for small to medium sized teams and project instead of large projectsand teams where traditional methods of development are used.
However somestudies showed that size of the team is not an issue and it is scaleable. 2According to Scott W. Ambler (2010) the success rate of agileprojects 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 largeteams.
3 Usually satisfaction ofcustomers is considered important for defining the quality of a system. Timerequired to rectify the problem is minimum in agile methods. It gives customerthe top priority. But it focuses more on development rather than design andalso not suitable much for large projects.
4Many prominentorganizations have adopted agile development approach for example Google,yahoo, Microsoft, and Microsoft etc. II. LITERATUREBACKGROUND Principles ofagile manifesto include (http://www. Agilemanifesto.org/principles.
html)customer’s satisfaction through early and continuous working software, flexibleresponses to change even at later stage, delivery of working software, dailyconversations with stakeholders, building a team and providing them with goodresources and work environment, promoting sustainable product development, andmaintaining simplicity. As More and more firms are adopting agile approach sodifferent issues arise by their usage. Challenges include skepticism bydevelopers about agile methodology, preference of developers about traditionalmethods, increased reliance on social skills and lack of these amongdevelopers, lack of business knowledge among developers, lack of agile specificrecruitment policies and suitable human capital .requirements engineering alsoplay important role in agile.
Agile approach is less documented as compared totraditional approach and requirements are gathered throughout agiledevelopment. Proper documentation and prioritization of requirements should becarried out to tackle this issue. 6 1although distributed agile development is beneficial, there are many risksassociated with this process. Empirical studies suggest that risks mostly arisedue to lack of communication and collaboration among project teams.
Risksrelated to project management, software development life cycle have been 2 there are different issues and challengesassociated with agile methodology implementation. Different issues andchallenges faced during scrum implementation are documentation, communication,user involvement, and workingenvironment. 3 people play key role in agile. It is important to select rightpeople for right team and project.
4 different factors like maintainability,reliability, reusability, efficiency, scalability, ease of use, security, costeffectiveness, flexibility, robustness, and performance parameters contributeto assure quality during agile development methodology. 5 III. DIFFERENTAGILE METHODOLOGIESTwo of the most widelyused methodologies of agile approach are scrum and extreme programming.ScrumThe Scrum process wasdeveloped by Schwaber and Sutherland.Scrumfocuses on certain roles in development team, establishes an iterative workingmode, and develops coordination among individuals. There are three roles inscrum methodology which include the product owner, the team, and the scrummaster.
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 andresponsible for both success as well as failure of the project. Scrum master isthe leader of the team and ensures the implementation of the rules andregulation of agile methods.
ExtremeprogrammingIt is a lightweightmethod for small to medium sized teams developing software in the face of vagueor rapidly changing requirements. Beneficial features of traditional modelingare taken into account also in extreme programming. Key characteristics of extreme programminginclude pair programming, code revises, test driven approach, continuousintegration, collective code ownership and automated testing.IV.
ANALYSIS2 agile softwaredevelopments focus on individuals and their interaction, working softwaremodel, customer’s collaboration, and flexible response to change. Agilecharacteristics include a true cultural change from plan based approach, Valueof requirement from stakeholders involved and more frequent and intensecommunication. Agileapplication is easy to maintain because of the integration within the module.
For attaining maintainability, feature driven development methodology is used. Agilemethodology is easily portable as nothing is constant in agile even hardware platformand software design. Because customer is engaged actively in requirements phaseand timely feedback enables developers to build right system thereforecorrectness of system is achieved. Agile approach is flexible in natureas change is tackled without changing the overall system.Development life cycleof traditional approach is linear while agile approach is iterative andincremental. Agile approach used for emerging and unknown changes while heavyweight techniques are used for stable and known requirements. Requirements arestable and clearly defined in traditional approach while volatile and unknown inagile approach. Management focuses on processes in traditional approach whileagile approach is people centric.
Traditional approach normally do not welcomes change while agileapproach welcomes change. Team members are pre-structured in traditionalapproach while self-organizing in agile. Heavyweightapproach is little bit expensive than agile one.For effectivemanagement of teams and people in agile team leader should ensure that each member of the team reportsto one and only one person, each person has no more than 7 people reporting directlyto him. V. ISSUES ANDCHALLENGES FACED DURING AGILE DEVELOPMENTDifferent issues mayarise in agile approach of software development.
Changing the mindset of traditional waterfall model is major challenge toagile adaptation. Agile puts less emphasis on documentation whichcreates hurdles for new developers to work on the continued project and theyspend lot of time to ask question from resource person. Agile softwaredevelopment is difficult to apply in large projects. Problem in large projectsfor agile is how to coordinate interaction among different teams. Large scaleprojects also cause distance between developers and different stakeholders.
Complexity of agile methods increases with the increase in size of the team ororganization and adopting agile method requires entire set of change inparadigm which is often difficult in large organization. Management also has tomove from life cycle models to iterative models and focus must be shifted fromlong term to short-term goals and it requires educating customers and policymakers. Following are some common issues and challenges faced during agileimplementation.A. TransformationchallengePeople are not alwayswilling to change because change implies new methods and practices to do aspecific task and some people may lose their productivity in the process ofchange. B.
Lack of trainingLack of training andcoaching is also another challenge in transforming the mindset of team. Lack ofinvestment in training can cause difficulties in implementing agile methods inits true spirit. This also cause low motivational level and low motivationdegrades performance in return.C. Too highworkloadWorkload is anotherchallenge in implementation of agile methods. Too much workload did not bringtrue change in work ethics.
D. Old commitmentskeptManagement keeps strictschedule and enforce deadlines which is not always beneficial and agile innature.E. Agile isdifficult to implementAgile is difficult toimplement in practice.
Most of the developers perform well during training butthey face difficulties in implementing it in reality. It may be due tomisunderstanding the real purpose of agile software development practices. Forexample less documentation interpreted as freedom from documentation, rules andregulations. Another challenge is building unfinished work product instead ofworking complete product. Some organizations take agile as solution for allproblems which cause problems in future. F.
Excessive enthusiasm Another challenge is over enthusiasm towards adopting agile methods andloose of interest with the passage of time and coming back to traditional wayswhen the method did not produce early results. There is no way that agilemethod will guarantee success so they should not be followed blindly. VI. CONCLUSION Agile softwaredevelopment methods are used to cope with volatile business requirements and tosatisfy customers.
In agile approach customer is engaged actively indevelopment phase and his feedback is incorporated. This paper highlights thekey characteristics of agile methodology, how is it different from traditionalapproach of software development and different issues and challenges we faceduring agile implementation. This paper also highlights two key methodologiesof agile which include scrum and extreme programming.