90 Informatica Economică Vol. 24, No. 2/2020 - ASE

Transcription

Informatica Economică vol. 24, no. 2/202090Agile Software DevelopmentAlina-Mădălina GHEORGHE, Ileana Daniela GHEORGHE, Ioana Laura IATANBucharest University of Economic Studiesgheorghealina15@stud.ase.ro, gheorgheileana15@stud.ase.ro, iatanioana15@stud.ase.roAgile software development represents a major departure from traditional, plan-basedapproaches to software engineering. The selections of appropriate software developmentmethodologies for a given project and tailoring the methodologies to a specific requirementhave been a challenge since the establishment of software development as a discipline. Theresearch speaks about what is currently known about the benefits and limitations of agilemethods and methodologies. Agile software development is a particularly important topic insoftware engineering and information systems. We approach the idea of the four core of agilesoftware development that are essential to ease the process of software development.Keywords: software development, agile, manifesto, principles, methodologies, project lifecycle, conceptDOI: 10.24818/issn14531305/24.2.2020.081. IntroductionAgile is more of a philosophy, a way ofapproaching software development. If wewere to give a definition, we would say thatAgile is a set of values and principles andinvolves the delivery of a good softwareproduct to the customer, using an adaptive,incremental and iterative way of working bycross-functional and self-organized teams.Agile Software development is a type ofdevelopment methodology that was createddue to the need of flexibility. Agile focuses ondelivering individual parts of the software, incontrast with other methodologies whichdeliver only the entire application at the endof the development process.Agile methodologies are an alternative totraditional project management practices.They were born in the context of softwaredevelopment, but today they can be used toany type of project in different fields ofactivity. Agile methodologies have beenhelping many teams deal with unpredictabilitywithin a project through incrementaldeliveries and iterative cycles.The main benefit of Agile SoftwareDevelopment is the ability to help teamsevolve in a dynamic way while still focusingon delivering high product value. Also, thecollaboration is very important, as teams needto work together and understand their specificroles in the process. Another important fact isthat the high-quality is maintained, sincetesting is performed all throughout thedevelopment process, providing enough timeto encounter and establish the bugs that appearin the code, and submit these issues in time forthe development team to fix them.Previous to Agile, there was the Waterfalldevelopment methodology, which workedfollowing the principle of very strict timelinesfor processes, without the ability to go back toone of them (example: the testing was doneonly after all the development has finished),and therefore, the client would only receive aglimpse of the product at the very end of theproject. However, soon enough, the Agilemethodology might be replaced by another,the DevOps one, that is growing in popularity.Nowadays, software development it isstrongly influenced by agile softwaredevelopment on how it is organized andconducted. This term become very familiaramong developers, because they used itsprinciples and its manifestos to coordinatesand plan their everyday work and the way theycommunicate with their customers andexternal stakeholders. Also, it affects the wayhow software development is organized insmall, medium-sized or large companies[10].In his book, Dyba Tore say that agile softwaredevelopment is seen as a “reaction to planbased or traditional methods, whichemphasize a rationalized, engineering-based

Informatica Economică vol. 24, no. 2/2020approach”[11] and it incorporates extensiveplanning, codified processes and rigorousreuse. On the other hand, agile methodsapproach the idea of an unpredictable worldby recognizing the value relationship betweenpeople can bring to software development.This article consists of six sections. Section Iis the introduction and provides a shortdescription of agile software development.Section II describes the project life cycle andthe three most important key concepts of aproject. Section III introduces the AgileManifesto and presents some methods of thismethodology. Section IV describes the 12principles of agile methodology and provides91information on research methods. Section Vfocuses on results of the research and SectionVI concludes the paper.2. Project and development life cycleA project lifecycle is the series of phasespasses through from its start to its completion.It provides basic framework for managing theproject. This basic framework appliesregardless of the specific project workinvolved. The phrases may be sequential,iterative or overlapping. All project can bemapped to the generic life cycle shown in thefigure 1.Fig. 1. Project Life Cycles [8]Within a project lifecycle, there are generalone or more phases there are associated withthe development project, service result. Theseare called a development life cycle.Development life cycles are[8]:1.Predictive life cycle where the projectscope, time and scope are determined in theearly phases of the life cycle. Any changes tothe scope are carefully managed. Predictedlife cycles may also be referred to as Waterfalllifecycle;2.Interactive life cycle where the projectscope is generally determined early in theproject lifecycle, but time and cost estimatesare routinely modified as the project team’sunderstanding of the product increases;

Informatica Economică vol. 24, no. 2/2020923.Incremental life cycle where thedeliverable is produced through a series ofiterations that successively add functionalitywithin a predetermined time frame. Thedeliverable contains the necessary andsufficient capability to be consideredcomplete only after the final iteration;4.Adaptive life cycle which are agile,iterative or incremental. The detailed scope isdefined and approved before the start of aniteration. Adaptive life cycles are also referredto as agile or change-driven cycles;5.Hybrid life cycle which is acombination of a predictive and an adaptivelife cycle. Those elements of the project thatare well known or have fixed requirementsfollow predicted development life cycle andthose elements that are still evolving follow anadaptive development life cycle.The continuum of project life cycle can beobserved in the table below, including four outof five phases of a project life cycle.Fig. 2. Continuum of project life cycle [8]Forward we will detail some key concepts forproject management, detailed in book “Aguide to the Project Management Body ofKnowledge”[8], namely :- Key concepts for project integrationmanagement- Key concepts for project resourcemanagement- Key concepts for project riskmanagementKey concepts for project integrationmanagement include[8]: Project Integration Management is thespecific responsibility of the projectmanager and it cannot be delegated ortransferred. The project manager is theone that combines the results from all theother Knowledge Areas to provide anoverall view of the project. The projectmanager is the ultimately responsible forthe project as a whole. Projects and project management areintegrative by nature, with most tasksinvolving more than one Knowledge Area. The relationships of processes within theProject Management Process Groups andbetween the Project Management ProcessKey concepts for Project ResourceManagement include[8]: Project resources include both physicalresources (equipment, materials, facilities,and infrastructure) and team resources(individuals with assigned project rolesand responsibilities). Different skills and competences areneeded to manage team resources versusphysical resources. The project manager should be both theleader and the manager of the projectteam, and should invest suitable effort inacquiring, managing, motivating, andempowering team members. The project manager should be aware ofthe team influences such as the teamenvironment, geographical location ofteam members, communication amongstakeholders,organizational changemanagement, internal and external

Informatica Economică vol. 24, no. 2/2020politics, cultural issues, and organizationaluniqueness. The project manager is responsible forproactively developing team skills andcompetences while retaining andimprovingteamsatisfactionandmotivation. Physical resource management isconcentrated on allocating and utilizingthe physical resources needed forsuccessful completion of the project in anefficient and effective way. Failure tomanage and control resources efficientlymay reduce the chance of completing theproject successfully.Key concepts for Project Risk Managementinclude[8]: All projects are risky. Organizationschoose to take project risk in order tocreate value, while balancing risk andreward. Project Risk Management aims to identifyand manage risks that are not covered bythe other project management processes. Risk exists at two levels whiting everyproject: individual project risk is anuncertain event or condition that, if itoccurs, has a positive or negative effect onone or more project objectives. Overallproject risk is the effect of uncertainty onthe project as a whole, arising from a allsourcesofuncertaintyincludingindividual risks, representing the exposureof stakeholders to the implications ofvariations in project outcome, bothpositive and negative. Individual projects risks can have apositive or negative effect on projectobjectives if they occur. Overall projectrisk can also be positive or negative. Risks will continue to emerge during thelifetime of the project, so Project RiskManagement processes should beconducted iteratively. In order to manage risk effectively on aparticular project, the project team needsto know what level of risk exposure isacceptable in pursuit of project objectives.This is defined by measurable riskthresholds that reflect the risk appetite of93the organization and project stakeholders.3. The state of knowledgeAgile Software Development has four corevalues that must be followed at all times.These values were found in 2001, by 17professionals that gathered to discussconcepts that would help ease the process ofsoftware development, values which are thecore of the Agile Manifesto.The four core values outlined in the AgileManifesto[1][9] are:“Individual interactions are moreimportant than processes and tools” – thisprinciple explains the fact that the peopledrive the development process and they arethe ones that respond to the business needs.Therefore, the tools and processes shouldoccupy the second place in priority, becausethe people can adapt way faster to the dynamiccharacter of development.“A focus on working software ratherthan thorough documentation” – this valuedescribes that in the past there were very longdelays due to the fact that the programmershad to focus on documenting very thoroughlytheir code, and they could not focus very longon the actual implementation of theirrequirements. With Agile, documentation isstill important, but is more succinct, usually inthe form of user stories. In this way, there areless delays and the developers have a largeamount of time to assign to the actualprogramming.“Collaboration instead of contractnegotiations” – this value states that thereshould always be collaboration between thecustomer and the project manager, in order forboth parties to understand the needs andcapabilities of each other. This way ofworking is very beneficial because it providesa better understanding of the needs of theclient, and therefore, the final product willmeet the customer’s expectations, as desired.If there would only be a negotiation at the startof the project, the client might not be aware ofhow the software might be built, thereforethere might be dissatisfied with the result, dueto the lack of communication.“A focus on responding to change” –

94this principle dictates the fact that change isalways welcome in the Agile process, as it isseen as a way to improve the project andprovide additional value. By preforming shortiterations in the Agile cycle, the developerscan figure out what works and what doesn’t,and change accordingly. This flexibility helpsthe team to modify the process to best fit theirneeds.There are a few misconceptions about theAgile approach, such as the ones listed below:“It’s unpredictable” - it isunpredictable, but that isn’t necessary anegative thing anymore, because Agileembraces it and uses it to its own advantageand produces better outputs.“Agile is more focused on short-term”- on the contrary, by starting the testingearlier during development, Agile allows theprogrammers to make better decisions for thelong-term goals indirectly.In their research, Williams and Cockburn[12]sustain the fact that agile softwaredevelopment is all about feedback andcontinuous change and they emphasize that“software development is an empirical ornonlinear process, where short feedbackloops are necessary to achieve a desirable andpredictable outcome”[10][12]. The processes inagile development are very important, theydefine the agility that eliminate most of thetraditional methodologies of softwaredevelopment, promoting the rapid response tochanging environments or in usersrequirements.In his article[13], Conboy sustain the idea thatagile software developmentmethodscontribute to one of more of the following: creation of change; pro-action in advance of change; reaction to change; learning from change.Also, agile software development methodsmust contribute and should not detract from: perceived economy; perceived quality; perceived simplicity.Thus, agile software development has beencharacterized differently than plan-based ortraditional development methods, mainly withInformatica Economică vol. 24, no. 2/2020the focus adapting to change and deliveringproducts of high quality through simple workprocesses.Nowadays, agile software development ismainly focused to adapting of change anddelivery of high-quality products throughsimple work processes, being the maindifference from traditional and plan-basedsoftware development methods. Traditionalagile methods include: its t style, knowledge management,role assignment, role of the customer, projectcycle, development model and desiredorganizational structure.4. Research methodsThe first step of the research is to find sourcesthat might contain the information needed.Using books and trustful sites we can form anidea about what the concept of Agile SoftwareDevelopment is.To start with, we have to follow the 12principles of Agile to establish a properdevelopment process. These principles[1][9][17]are:1. Satisfy customers through early andcontinuous delivery of valuable work –Customer are happier when they receiveworking software at regular interval,rather than waiting long periods of timebetween releases.2. Break big work down into smaller tasksthat can be completed quickly (Simplicity– the art of maximizing the amount of worknot done – is essential.)- Agile is all aboutdoing the right amount of something atany given time, and no more. We shouldauthor user stories small enough to get thejob done and no more. We should buildwhat we know we need now. We shouldnot build some huge framework we thinkwe may need someday.3. Recognize that the best work emergesfrom self-organized teams - The teamknows the best way to get something done.They are the experts. However, this doesnot mean the right outcome will happen onits own. Each individual is at a differentplace in his or her personal growth and

Informatica Economică vol. 24, no. 2/20204.5.6.7.8.career. The term “servant leader” hasemerged in the Agile community andreplaced the typical command-and-controlproject manager. Self-organizing teams donot happen automatically. They emergeunder the proper guidance and advice of aservant leader. As a result, skilled andmotivated team members who havedecision-making power, take ownership,communicate regularly with other teammembers, and share ideas that deliverquality products.Provide motivated individuals with theenvironment and support they need andtrust them to get the job done - Motivatedteams are more likely to deliver their bestwork than unhappy teams. Project teamleaders must provide them with themotivated environment and support inorder to success. The team members musttrust each other and be comfortable withconflict.Createprocessesthatpromotesustainable effortsMaintain a constant pace for completedwork - Teams establish a repeatable andmaintainable speed at which they candeliver working software, and they repeatit with each release. An important aspectof this is regular releases of a product.Welcome changing requirements, evenlate in a project - Agile processes harnesschange for the customer’s competitiveadvantage. The ability to avoid delayswhen a requirement or feature requestchanges. Agile teams work over the subproject in certain iteration and afterrelease, the customer may change his planbecause that sub-project caused to comenew ideas. Since the teams work with subproject, it is not a big problem to add newfeatures into product.Assemble the project team and businessowners on a daily basis throughout theproject - To develop a good project, dailymeetings must be organized in order togive an info about what was done since thelast meeting and will be done by the nextmeeting. In fact, Better decisions are madewhen the business and technical team are95aligned9. Have the team reflect at regular intervalson how to become more effective, thentune and adjust behavior accordingly Self-improvement, process improvement,advancing skills, and techniques help teammembers work more efficiently. Peoplemay be challenged when it comes toengaging in true self-reflection. This is allpart of the Agile journey. Each of theAgile principles are interrelated. Theretrospective is the perfect place for theteam to reflect and improve.10. Measure progress by the amount ofcompleted work - All members of theproject must remember that progress is todeliver working and satisfying project andother features are for creating Softwaredevelopment driven environment.11. Continually seek excellence - We need topay close attention to technical excellenceand design as our product evolves. Thereis a balance between “Building the rightthing” and “Building the thing right.”.Developers must keep their code clear andtested. So, that they know at all times thattheir software works. The right skills andgood design ensures the team can maintainthe pace, constantly improve the product,and sustain change.12. Harness change for a competitiveadvantageHaving these principles in mind, we can builda development process that will bring highquality results.We should also take into consideration theAgile Software Development cycle, whichcontains six steps: concept, inception,iteration/construction, release, production andretirement. We will detail each of them.The first step, concept, involves theidentification of the opportunities that couldbe pursued and establishing an estimation ofthe time and work that will be required tocomplete the project.The second step, inception, identifies theprogrammers that will be a part of the team,the amount of money that is assigned forfunding and also the initial requirements arediscussed with the client.

96During the third step, iteration/construction,the programmers start working on the code,based on the requirements and the feedbackthat they receive from the customer on aregular basis.The fourth step, release, includes the finalquality assurance tests, fixing of theremaining issues, finalization of the systemand user documentation, and, eventually, theInformatica Economică vol. 24, no. 2/2020release of the final iteration into production.During the fifth step, production, processes ofsupport necessary to maintain the software areperformed.In the final step, retirement, all the end-of-lifeactivities are performed, such as notifying theclients and the final migration. The systemrelease must be removed from production.Fig. 3. The steps of Agile Software Development CycleSource: f-agile-software-development/The growth of agile is mirrored by agileresearch becoming a significant subdisciplineof software development in the twenty yearsand continuing today. In April 2018[14], asearch for the keywords “agile softwaredevelopment” in Google Scholar for a periodup to 2001 produced just over 13,000 results.The same search led to over 260,000 resultsfor today. Also, in this time, we can identifyten principal key agile research area (whichare summarized in the image below):1.agile adoption;2.agile methods;3.agile practice;4.human and social aspects;5.agile and GSE (Global SoftwareEngineer);6.agile and usability;7.agile and CMMI (Capability MaturityModel Integration);8.organizational agility;9.agile and embedded systems;10.software product line engineering.

Informatica Economică vol. 24, no. 2/202097Fig. 4. Systematic literature reviews on agile topics [14][15]In a review written by Cohen et. all , it issaid that agile methods may be consolidatedin the future, “just as object-oriented methodswere consolidated”. More than that, theybelieve that agile methods would “coexist”together with traditional ones, having asymbiotic relationship, where different kindsof factor, such as the number of peopleworking on a project, innovation, willdetermine which process to select.Over the time, several methods of agilesoftware development have been proposedand used by researchers in various field. Thus,as identified in the paper "SoftwareDevelopment: Agile vs. Traditional" [18], someof the well-known agile methodologies,which share the same principles and values,but have different practices are:Development (ASD),Feature Driven Development (FDD)Crystal ClearDynamic Software DevelopmentMethod (DSDM)Rapid Application Development(RAD)SCRUMExtreme Programming (XP)Rational Unify Process (RUP)5. ResultsAfter analyzing the principles of AgileSoftware Development, we came to theconclusion that there are several significantbenefits[6] of this methodology. Among themthere are the improved product quality, thefocus on business value and users, theflexibility and readiness for change, the highlevel of transparency and client involvementin the process. Also, we can mention thedelivery of new features quickly andfrequently, a cost-effective approach to

98product development and scaling and hepredictable schedule.We also found that there are a few keyprinciples[3] that describes a goodimplementation of the Agile SoftwareDevelopment, namely: Active user involvement is imperative A collaborative & cooperative approachbetween all stakeholders is essential Requirements evolve, but the timescale isfixed Capture requirements at a high level,lightweight & visual The team must be empowered to makedecisions Develop small, incremental releases anditerate Testing is integrated throughout theproject lifecycle – test early and often Complete each feature before moving onto the next Focus on frequent delivery of productsWe found that by including everyone (boththe customer and the development team) inthe process, the ability to get better softwareto the market more quickly is heightened.Therefore, collaboration and communicationare the key factors that make Agile soefficient, in comparison with otherdevelopment methodologies.We also found a potential concern aboutAgile, namely the fact that it lacks theemphasis on technology, which could makethe understanding of the concept moredifficult. However, another issue couldappear from the side of the sprints, namely thenecessity of completing sprints on time cancreate a stressful work environment forsoftware developers. This might also happenbecause of the need to work extra hours andstay at work late in order to meet the imposeddeadlines.The evolution of software development agilemethods from traditional to what it meansthese days it has a particularly important roleon what a company works. The mentionedmethods were affected by dramatic changesin the market for software development,which lead to process adaption.One of the important roles in agile softwareInformatica Economică vol. 24, no. 2/2020development projects is owned by thecustomer. His role works effectively andsustainable in a way that involve the wholedevelopment team. Thus, the communicationbetween customer and development team iscrucial.6. ConclusionsAgile Software Development is a processduring which the development team, thestakeholders and the end-users work togetheras a cross-functional team, and they identifyboth requirements and solutions iterativelythroughout the development process.Agile is both a philosophy and a set ofguidelines, that are followed by teams inorder to deliver the maximum amount ofvalue, while minimizing the project’soverhead cost. The Agile methodologies havehelped many organizations to adapt quickly tothe changing market conditions and also toincrease client satisfaction, and improveoverall efficiency.The basic principle that the Agilemethodology follows is the separation oflarge projects into small iterations, in such away that, at the end of each iteration, resultsof high value are produced. These smalliterations are called “sprints”, and aredesigned, developed and tested individually.Agile software development emphasizes theevolving requirements of direct userinvolvement in the development process, fastiterations, small and frequent releases.Improvements in the software developmentprocess include more stable requirements,earlier detection of failures, fewer testingtimes, increased communication andincreased adaptive capacity[16]. Differentmethodologies require different changes inthe culture of management and softwaredevelopment.There are a number of factors that can directlyand indirectly influence development projectsin an agile environment. Adopting agiledevelopment methodologies has a positiveimpact on both productivity and quality.Therefore, the development team and theclient are both satisfied with itsimplementation in software development

Informatica Economică vol. 24, no. 2/2020processes.Bibliography[1] "Agile Software Development," . [Accessed 10 April 2020].[2] sources.collab.net/agile101/agile-methodologies. [Accessed 10April 2020].[3] "10 Key Principles of Agile twaredevelopment/. [Accessed 10 April 2020].[4] "Agile Software Development," /agilesoftware-development/. [Accessed 10April 2020].[5] "Agile Software Development," -development. [Accessed 10April 2020].[6] "Agile Software Development," s/agilesoftware-development/. [Accessed 10April 2020].[7] "Agile Software Development," gilesoftware-development.html. [Accessed 10April 2020].99[8] P. M. Institute, A guide to the ProjectManagement Body of Knowledge,GlobalStandards, 2017.[9] P. M. Institute, Agile Practice Guide,Agile Alliance, 2017, pp. 8-9.[10] T. Dingsøyr, B. M. Nils and D. Tore, "AgileSoftware Development: An Introductionand Overview," pp. 2-9, 2010.[11] D. Tore, Improvisation in Small SoftwareOrganizations, IEEE Software, 2000, pp.82-87.[12] L. a. C. A. Williams, Agile SoftwareDevelopment: It’s about Feedback, IEEEComputer, 2003, pp. 39-43.[13] K. Conboy, Agility From First Principles:Reconstructing the Concept of Agility inInformationSystemsDevelopment,Information Systems Research, 2009, pp.329-354.[14] R. Hoda, S. Norsaremah and G. John ,"The Rise and Evolution of AgileSoftware Development," 2018.[15] G. Kumar and K. B. Pradeep , "Impact ofAgileMethodologyonSoftwareDevelopment Process," pp. 46-49, 2012.[16] P. Cohen, Advances in Computers,Advances in Software Engineering, vol.62, 2004.[17] Mukhamadjonov A., Khusanov Kasim,"Agile Software Development," TurinPolytechnic University, Tashkent, 2017.[18] M. Stoica, M. Mircea, B. Ghilic-Micu,"Software Development: Agile vs.Traditional", Informatica Economică, vol.17, 2013.

100Informatica Economică vol. 24, no. 2/2020Ileana Daniela GHEORGHE received a Bachelor's degree in EconomicInformatics from the University of Economic Studies in Bucharest in 2018 andis now studying for a master's degree in Economic Informatics at theaforementioned faculty. Her professional activity, began in September 2018with a position of Junior Technical Consultant SQL in the company TotalSoftwhere she still works in a full-time position.Alina-Mădălina GHEORGHE was rewarded with a Bachelor’s Degree inEconomic Informatics, after studying at the Bucharest University ofEconomic Studies, Faculty of Economic Cybernetics, Statistics andInformatics. Alina is currently studying towards her Master’s Degree in thesame field as her Bachelors’. She started her career as a Quality AssuranceTester at Whyttest, and as she kept learning she began applying herknowledge as a Software Developer at Suvoda Software Romania, where she is currentlyworking.Ioana Laura IATAN has graduated in 2018 from the Bucharest University ofEconomic Studies, The Faculty of Economic Cybernetics, Statistics andInformatics with a Bachelors’ in Economic Informatics and is currently doingher Masters’ Degree in Economic Informatics at the same faculty. Laura hasbegun her professional experience as a Junior Automation Tester for HarmanDevelopment Center Romania where she is currently employed on a full-timebasis. Laura has also graduated from the Projec

Agile software development is a particularly important topic in software engineering and information systems. We approach the idea of the four core of agile software development that are essential to ease the process of software development. Keywords: software development, agile, manifesto, principles, methodologies, project life