Empirical Study Of Agile Software Development .

2y ago
137 Views
2 Downloads
879.14 KB
6 Pages
Last View : 27d ago
Last Download : 3m ago
Upload by : Camryn Boren
Transcription

ACM SIGSOFT Software Engineering Notes Page 1January 2015 Volume 40 Number 1Empirical Study of Agile Software DevelopmentMethodologies: A Comparative AnalysisGurpreet Singh MatharuAnju MishraAmity University Uttar PradeshNoida, IndiaAmity University Uttar PradeshNoida, meet SinghPriyanka UpadhyaySoftware EngineerDelhi, IndiaAmity University Uttar PradeshNoida, il.comABSTRACTIn today’s software industry, technological prowess and everevolving customer requirements have led to more complex softwaredemands. Agile based software development is increasingly beingadopted by the software practitioners as it assures early softwaredevelopment and high quality software products. Also, it offersresponsiveness to changes in user requirements, providing for theirquick absorption during software development. In this paper, weelaborate the significance, benefits and increasing adoption of Agilemethodologies in context of today’s complex and evolving softwaredemands. The main objective of this paper is to conduct an empiricalstudy into the choice among the most popular Agile methodologies,Scrum, Extreme Programming and Kanban. Further, this paperprovides for a comparative analysis among various agile softwaredevelopment methodologies. Our survey results reveal higheradoption of Scrum based development in present-day softwareindustry as compared to Extreme Programming and Kanbanmethodologies.General TermsManagement, Documentation, Performance, Human Factors, Theory.KeywordsSoftware Development Life Cycle (SDLC), Agile Methodologies,Scrum, Extreme Programming (XP), Kanban, Lean.1. INTRODUCTIONIn modern software industry, delivery of high-quality software is theprime objective for software developers. Non-planned and nonsystematic approach to software development, if applied for complexsoftware requirements, will certainly result in development of lowquality and high-cost software products. Thus, the approach tosoftware development plays a significant role in deciding the qualityof software being delivered. This realization among the softwarepractitioners led to the formation and deployment of several softwaredevelopment life cycle models. According to Kevin Roebuck [1], aSoftware Development Life Cycle provides the framework forplanning and controlling the development or modification of softwareproducts, along with the methodologies and models used for softwaredevelopment.The software industry has shifted from traditional softwaredevelopment models to agile based development in response to everincreasing software complexity and dynamic user requirements.Unlike the traditional models, agile methods are characterized byshorter development cycles, higher customer interaction, incrementaldelivery, frequent redesign with accommodation of changesnecessitated by dynamic user requirements. Although diversesoftware development methodologies practice the same set of Agileprinciples formulated by Agile Manifesto [17], but they differamongst each other on several parameters.DOI:10.1145/2693208.2693233This study provides a comparison among the most popular Agilemethodologies, Scrum, Extreme Programming and Kanban. Thesurvey results would certainly assist the software practitioners inchoosing among these Agile methodologies. The rest of this paper isstructured as follows. Section 2 undertakes a literature review,followed by section 3, which elaborates on the transition towardsagile based software development and its associated benefits. Section4 discusses the most popular Agile methodologies, followed bySection 5 which provides a comparative analysis among Scrum,Extreme Programming and Kanban methodologies of Agile-basedsoftware development, ending up with Section 6 which provides theconclusions.2. LITERATURE REVIEWAlthough several studies have been conducted by individual teams,but little empirical data is available in support of success and higheradoption of agile software development methodologies. The StandishGroup’s 2011 CHAOS report [2] concludes that Agile methodologiesare three times as successful as the traditional software developmentapproaches.The findings of the 8th Annual State of Agile Development Survey[3] conducted by Versionone.com in 2013 conclude that 92% ofrespondents believe that agile approach assists them in managingchanging customer requirements; 87% of them agree that agileapproach helps improve their team's productivity whereas 70%believe that agile software approach accelerates the softwaredevelopment process. Further, the survey indicates a clear trendtowards the higher adoption of Scrum-based methodologies with 73%of respondents practicing Scrum and Scrum variants for softwaredevelopment.The Xebia’s Agile Survey 2012 report [4] reveals that 80% of therespondents agreed using Agile methodologies for softwaredevelopment. Further, the survey concludes that 92% of therespondents follow Scrum & Extreme Programming (XP) whereas30% follow Kanban. The empirical study conducted by O. Salo andP. Abrahamsson [5] point towards higher adoption of ExtremeProgramming than Scrum methodology by embedded softwaredevelopment organizations across Europe.Another significant empirical study conducted by Andrew Begel andNachiappan Nagappan [6] at Microsoft reveals that about 33% of therespondents agreed using Agile software development methodologies,with Scrum being the most popular agile methodology at Microsoft.The survey conducted by G. Azizyan and M.K. Magarian [7]concludes that two-thirds of the respondents used Agile tools, withScrum being the most widely used agile methodology among therespondent companies.http://doi.acm.org/2693208.2693233

ACM SIGSOFT Software Engineering Notes Page 23. TRANSITION TO AGILE SOFTWAREDEVELOPMENTSince 1970s, advanced technological interventions and dynamic userrequirements have contributed towards more complex softwaredemands which necessitate planned software development approachthrough development and application of formal software developmentmodels, thus eliminating old-fashioned and informal softwaredevelopment approaches. Modern software practitioners employsoftware development models for producing high-quality software,meeting user requirements and ensuring timely delivery in a costeffective manner. The software development models ensuresystematic and organized approach to software development [8].January 2015 Volume 40 Number 1The Agile software development embodies several methodologiesincluding Extreme Programming, Scrum, Kanban, Lean, FDD(Feature-Driven Development), Crystal, DSDM (Dynamic SystemsDevelopment Method).Heavyweight methodologies, also known as traditional softwaredevelopment approaches are characterized by comprehensiveplanning, process-orientation, predictive approach and heavydocumentation. Unlike traditional software methodologies,lightweight methodologies promise frequent delivery of softwareincrements in small iteration cycles and are team-oriented andadaptive approach. The lightweight methodologies, popularly knownas agile methodologies, have made huge inroads into the softwareindustry in the past few years. A comparison between traditionalmethods and agile methods is presented in Table 1.Table 1. Comparison of Traditional Software DevelopmentMethods and Agile Software Development MethodsFigure 1. Benefits of Agile veProcess-OrientedPeople- OrientedLargeSmall/MediumPlanning usLearning whileDevelopmentLearning issecondary toDevelopmentDocumentationHighLowAdaptability roject SizeAgile based software development methodologies offer systematicsoftware production resulting in enhanced quality of softwareproducts. Also, Agile based methods are characterized by improvedproductivity, flexibility, enhanced customer engagement andresponsiveness to changes in user requirements. Several surveys havebeen confirmed rapid adoption of agile approaches in softwareindustry. Such a survey was undertaken by Murphy et al. [9] thatdemonstrated a boost in practice of Agile methodologies withinMicrosoft between 2006 and 2012.4. AGILE SOFTWARE DEVELOPMENTMETHODOLOGIESIn Agile approach to software development, work is carried out insmall phases, based on collaboration, adaptive planning, earlydelivery, continuous improvement, regular customer feedback,frequent redesign resulting into development of software incrementsbeing delivered in successive iterations in response to the everchanging customer requirements. Agile methodologies areincreasingly being adopted by companies worldwide to meetincreased software complexity and evolving user demands.DOI:10.1145/2693208.26932334.1 ScrumIn recent past, the software industry has been facing severalchallenges including dynamic customer demands, complex softwarerequirements, tight project schedules and constraints on resources andbudget. This calls for a pragmatic approach to software developmentthat delivers high-quality software products within the allocatedbudget and time schedule. Scrum is one such methodology thatmanages the software development in various short iterations knownas sprints. Each sprint includes all the phases of a softwaredevelopment lifecycle model such as designing, implementation,testing, customer review, etc.As per the survey conducted by the French Scrum User Group [10] in2009, 86% of the respondent companies advocated the use of Scrumbased development. The findings of the 8th Annual State of AgileDevelopment Survey [3] conducted by Versionone.com in 2013reveal that 73% of respondents agreed to practicing Scrum and Scrumvariants for software development. The survey done by O. Salo andP. Abrahamsson [5] focussed on embedded software developmentcompanies across Europe with 27% of them responding in favour ofScrum methodology. The characteristics unique to the Scrum baseddevelopment are:4.1.1 CollaborationScrum based development promotes collaboration as it is driven bycross-functional teams where every person with his or her skills andexperience, contributes towards the best design solution. A crossfunctional team includes a mix of programmers, software architects,software analysts and QA experts.4.1.2 Daily MeetingsScrum methodology is marked by short-duration daily scrummeetings where the product development team communicates andevaluates the progress status of software development, thus increasingproductivity of team members.4.1.3 Product BacklogThe product backlog captures the requirements for a software productto be delivered successfully. It maintains an ordered listing offeatures, bug fixes, non-functional requirements.4.1.4 Sprint BacklogThe sprint backlog records the list of tasks to be performed by thedevelopment team during the next sprint. This list is drafted bypicking up tasks from the top of the product backlog until sufficientwork is arranged for the next sprint, considering the work capacityand past performances of the development team.http://doi.acm.org/2693208.2693233

ACM SIGSOFT Software Engineering Notes Page 34.1.5 RolesThe scrum based development is governed by 3 primary roles:4.1.5 Product Owner: Responsible for defining, prioritizing andcommunicating product requirements and guides the productdevelopment process.4.1.5 Development Team: Responsible for executing the tasksallocated by the product owner within the sprint deadline. Usually, across-functional team of 3 - 9 individuals implements the productdevelopment tasks envisioned by the product owner.4.1.5 Scrum Master: Responsible for enforcing the rules andprinciples of Scrum based development. The Scrum Master removesimpediments to development and helps improve the process,development team and software product being developed.January 2015 Volume 40 Number 1Another unique concept in XP is pair programming whereprogrammers work in dynamic pairs of two, resulting in enhancedcommunication and reduction in working hours and workload.Figure 3. Extreme Programming (XP) ApproachFigure 2. Scrum based Development4.2 Extreme Programming (XP)James Newkirk [11] defines Extreme Programming (XP) as alightweight methodology that facilitates planned and iterativesoftware development by small teams of developers to achieve highersoftware quality and enhanced productivity, in response to rapidlyevolving requirements. Extreme Programming is characterized byintense levels of interaction with customers during the softwaredevelopment process.The French Scrum User Group [10] conducted a survey on the usageand usefulness of Agile methodologies in France in 2009. Therespondents included 230 professionals from over 150 companies,with the survey concluding that 52% of companies advocated the useof Extreme Programming (XP) approach. Another survey undertakenby O. Salo and P. Abrahamsson [5] among the embedded softwaredevelopment organizations across Europe revealed that 54% of therespondent organizations were using Extreme Programmingapproach. The distinguishing features of Extreme Programming (XP)that make it stand apart from other Agile approaches are [12, 13, 14]:4.2.1 Requirements as Story CardsThe requirements are represented as scenarios by users, which arethen formulated as Story Cards. The developers split each story cardinto a series of small tasks, which are further prioritized by thecustomer for being implemented.4.2.2 SimplicityXP favours initiation of software development with the simplestdesign, while additional functionalities can be added as and whenrequired by the customer. Further, a simple design and simple codingcan be easily understood by the team developers.4.3 KanbanAmong the agile group of methodologies, the Kanban methodology issignificantly gaining popularity in the software industry. Aspioneered by David J. Anderson et al. [15], Kanban provides a meansto visualize and limit the work-in progress during softwaredevelopment process. Kanban method lays emphasis on scheduling ofwork so as to facilitate the delivery of software product just-in-timefor implementation. Organizations across the world are adoptingKanban and absorbing it in their present software developmentprocesses to better model business agility. The characteristics thatdistinguish the Kanban methodology from other Agile basedmethodologies are [16]:4.3.1 Kanban BoardKanban board is a workflow visualization tool that enables theoptimization of work and guides the workflow by dividing the workinto categories, including to-do works, in-progress works and worksdone.4.3.2 Maximizes ProductivityKanban software development approach promises workflowoptimization and scheduling, maximizing productivity of the team byreducing idle time.4.3.3 Continuous DeliveryKanban methodology is closely related to continuous delivery ofsoftware increments instead of releasing functionalities in batches.Release of small parts of product in successive iterations is directed atmeeting the dynamic requirements of customers.4.3.4 Waste Minimization4.2.3 Continuous InteractionIn Kanban approach, tasks are executed only when they are actuallyrequired. This results in elimination of over-production and cutsdown on wasted work and wasted time.XP includes extreme levels of customer interaction via establishedfeedback loops. The customer engagement occurs in small frequentiterations, ensuring that the customer remains acquainted with theprogress of software development. Also, this allows for quickaccommodation of changes in software as per customer feedback.The main objective in Kanban methodology is to limit the Work-inprogress so as to optimize the workflow of the system in accordancewith its capacity. A WIP constraint can be applied either to parts ofthe workflow or to the entire process.4.2.4 Test Driven DevelopmentXP employs test driven development where test cases for a task arewritten before its coding takes place. Testing remains an integral partall through the Extreme Programming method.4.2.5 RefactoringXP encourages striving for best design and high quality solution byrefactoring of existing solutions, thus achieving enhanced codereliability and reduced complexity.4.2.6 Pair ProgrammingDOI:10.1145/2693208.26932334.3.5 Limits Work in Progress (WIP)5. COMPARISON AMONG AGILESOFTWARE DEVELOPMENTMETHODOLOGIESAlthough several methodologies follow the same set of principles asformulated by Agile manifesto [17], but they differ on variousparameters of Agile principles. Empirical study of Scrum, XP andKanban methodologies of Agile software development has resulted inthe comparison as presented in Table 2.http://doi.acm.org/2693208.2693233

ACM SIGSOFT Software Engineering Notes Page 4January 2015 Volume 40 Number 1Table 2. Comparison among Scrum, XP and Kanban Agile MethodologiesParametersScrum based DevelopmentExtreme Programming (XP)Kanban MethodologyDesign Principle [19]Complex DesignSimplification of Code &accommodation of unexpectedChanges through RefactoringLimits the amount of Work-inProgress & ensures WasteReductionNature of CustomerInteraction [18]Not compulsorily on-siteOn-site Customer InteractionNot compulsorily on-siteDesign ComplexityComplex designSimple designSimple visual designProject Coordinator[18]Scrum MasterXP CoachTeam WorkRoles Assigned3 Pre-defined roles: ProductOwner, Scrum Master &Development TeamNo prescribed rolesNo prescribed rolesProcess OwnershipScrum MasterTeam ownershipTeam ownershipProduct Ownership[18]Product Owner is responsible forproductGroup responsibility of productGroup responsibility of productTeam CollaborationCross functional teamsSelf organizing teamsTeam comprises of specializedresourcesWork flow ApproachIterations (sprints)No iterations. Task flowdevelopmentShort iterationsRequirementsManagementRequirements Managed in formof artifacts through SprintBacklog &Product BacklogManaged in form of Story CardsManaged using Kanban BoardsProduct DeliveryDelivery as per Time boxedsprintsContinuous DeliveryContinuous deliveryCoding StandardsNo coding standardsCoding standards are usedNo coding standardsTesting ApproachNo formal approach used fortestingTest driven development,including acceptance testingTesting done after implementationof each work productAccommodation ofChangesChanges not allowed in sprintsAmenable to change even in laterstages of developmentChanges allowed at any 2693208.2693233

ACM SIGSOFT Software Engineering Notes Page 5January 2015 Volume 40 Number 1Figure 4. Kanban Board used in Kanban MethodologyA mix of telephonic and email conversations were conducted with therepresentatives of 15 software development companies. As per thesurvey results, 10 companies were found to be following Scrum baseddevelopment, while 3 of them expressed their faith in ExtremeProgramming approach and the remaining 2 companies have adoptedKanban approach to software development.Table 3. Companies practicing Scrum / XP / KanbanAgile MethodologiesAgileMethodologyScrumCompanyNames ExtremeProgramming (XP) Kanban Bebo Technologies Ltd.(www.bebotechnologies.com)Xebia IT Architects India PrivateLimited(www.xebia.com)NTT Data(www.nttdata.com)Bright labs. Ltd.(www.brightlabs.com.au)Capgemini India Pvt. efanini(www.stefanini.com)Deloitte Touche Tohmatsu Limited(www.deloitte.com)SAP Software & Solutions(www.sap.com)Toshiba Software Pvt. Ltd.(www.toshiba-tsip.com)Vismaad Pte 10.1145/2693208.2693233Figure 5. Bar Graph depicting that Scrum is being morepracticed in comparison to XP and Kanban6. CONCLUSIONAgile based software development provides an effective solution tothe challenges being present

agile based software development and its associated benefits. Section 4 discusses the most popular Agile methodologies, followed by Section 5 which provides a comparative analysis among Scrum, Extreme Programming and Kanban methodologies of Agile-based software

Related Documents:

1. The need for an agile way of working 6 2. The need for an agile way of working 9 3. Agile Core Values - Agile Project Management Vs. 10 Agile Event Management 4. Agile principles 12 _Agile Principles of Agile Project Management 13 _Agile Principles of VOK DAMS Agile Event Management 14 5. Agile Methods 16 _Scrum in Short 16 _Kanban in Short 18

1.1 Purpose of the Agile Extension to the BABOK Guide1 1.2 What is Agile Business Analysis?2 1.3 Structure6 Chapter 2:The Agile Mindset 2.1 What is an Agile Mindset?7 2.2 The Agile Mindset, Methodologies, and Frameworks8 2.3 Applying the Agile Mindset9 2.4 Agile Extension and the Agile Ma

Agile Estimating and Planning by Mike Cohn Agile Game Development with Scrum by Clinton Keith Agile Product Ownership by Roman Pichler Agile Project Management with Scrum by Ken Schwaber Agile Retrospectives by Esther Derby and Diana Larsen Agile Testing: A Practical Guide for Testers and Agile Teams by Lisa Crispin and .

Agile World View "Agility" has manydimensions other than IT It ranges from leadership to technological agility Today's focus is on organizational & enterprise agility Agile Leaders Agile Organization Change Agile Acquisition & Contracting Agile Strategic Planning Agile Capability Analysis Agile Program Management Agile Tech.

The most popular agile methodologies include: extreme programming (XP), Scrum, Crystal, Dynamic Sys-tems Development (DSDM), Lean Development, and Feature Driven Development (FDD). All Agile methods share a common vision and core values of the Agile Manifesto. Agile Methods: Some well-known agile software development methods include: Agile .

AGILE TESTING For agile testers, test engineers, test managers, developers, technical leads. Ensure the production of effective and valuable software. Agile Fundamentals Agile Programming Agile Software Design Agile Fundamentals Agile Testing Agile Test Automation ICP CERTIFIED PROFESSIONAL ICP CERTIFIED PROFESSIONAL ICP-PRG CERTIFIED .

Agile Manifesto (Agile Principles) The Agile Manifesto is the foundation of most Agile Software Development methods. It has 4 core values supplemented by 12 Principles. The document was developed in 2001 by a group of 17 pioneer software engineers (www.agilemanifesto.org). Agile Software Development Methods Agile Software .

1. Agile methods are undisciplined and not measurable. 2. Agile methods have no project management. 3. Agile methods apply only to software development. 4. Agile methods have no documentation. 5. Agile methods have no requirements. 6. Agile methods only work with small colocated teams.-7. Agile methods do not include planning. 8.