Articles Software Development Methodologies For Reducing . - Unwe.bg

Transcription

ArticlesSoftware Development Methodologiesfor Reducing Project RisksSoftware Development Methodologiesfor Reducing Project RisksVeselin Georgiev*Kamelia Stefanova**Summary:The rapid expansion of informationand communication technologies in allbusiness and social areas today hasincreased the pressure on and the need forthe optimization of software developmentprocess. More than ever, the relationbetween quality, cost and time for deliverybecome a critical requirement for success.Developing cost competitive softwareproducts that meet high quality standardsaccording to the time constrained markettoday is becoming a demanding task. Mostof the software development processesare overburdened with strict and heavydocumentation procedures that requirestrong control mechanisms and createadditional sophistication in the softwareprojects management. New families ofmethodologies for software development,referred to as Agile Processes, areintroduced to meet the challenges of thefuture developments in the software industry.These methodologies focus on the flexibilityand adaptability and are described as agile,unlike the traditional processes which arerestrictive in the introduction of changes.The application of these methodologiesand practices answer the need to reducerisks and increase quality and usability ofthe final software product.Key words:Agile Software development, Projectrisks, SCRUM, Extreme programming,Feature Driven Development, AdaptiveSoftware DevelopmentJEL Classification: C61, C63, C8, D81IntroductionThe vigorous growth of the informationtechnology in recent years hascreated prerequisites for the introduction ofnew models in the management of softwareprojects. A characteristic feature of theprocess of software development is thatit is usually dependent on other softwaresolutions and products in a production plan.This dependence in an environment ofdynamic development requires continuousrenewal and compliance compared toother technologies. For large projects itis even more important. Also distinctiveentrepreneurial culture in this area is gainingmore popularity globally, which is reflectedin the increasing number of companiesproviding software solutions. The investmentenvironment is very dynamic, and thedevelopment of new software solutions isa target for most investors and investmentfunds. This directly affects the possibility ofdeveloping competitive software solutionsand products.*PhD Student, Department Information Technologies and Communications, University of National and WorldEconomy, email: vgeorgiev@petrovkata.com, twitter: @petrovkata**Professor, PhD, Department Information Technologies and Communications, University of National and WorldEconomy104Economic Alternatives, Issue 2, 2014

ArticlesAgile Development Methodologies arebecoming an increasingly popular meansof minimizing the risks associated withthe planning process and development ofsoftware solutions. Their iterative nature ofperformance, openness to constant change,the close cooperation between the customerand the developers are the key features thatmeet the modern business needs.1. Software development risksThe process of software developmentis characterized by specific risks thataccompany various stages of the life cycle.Depending on the chosen methodologyand workflow of the software developmentsolution, these risks can have varying rateof occurrence or have different character.The term software risk refers to unexpectedevents that may cause a negative impact onthe software product, the duration neededfor its development and the resources used.Risks can be addressed in two main areas:risks external to the organization over theoccurrence of which cannot be influenced;internal risks, which are dependent on theorganizational workflows.yy External Risks - External events aremainly outside of the project managercontrol and, in most cases, the corporation.Examples include: Marketplace developments — rapiddevelopments can cause an abruptchange of direction Government regulatory changes Industry-specificprocedures—newstandards, issues Mergers/acquisitions Legal issues—disputes, lawsuits, andcourt orders Change-drivenfactors—newproducts, services, changes in market Corporate strategy and prioritychanges Disasters such as fire, flood, earthquake,or other natural disaster Disruptions caused by interferencefrom external electrical sources Loss of power leading to heating orventilation malfunctions; air conditioningfailures Sabotage, hacking and securitybreaches Communicationssystemsandsecurity sensor failures Viruses and other malicious attackson information systems Emergencydestructionofcommunications Platform versions updates duringdevelopment cycleMost of these risks are very difficult tocontrol at the project manager level but canbe identified and, accordingly managed.This means that senior management shouldbe involved in the risk management processand take considerations.yy Cost Risks - Most of these types of risksare directly or indirectly under the projectmanager’s control or within the area ofinfluence. Examples of cost risks includethose arising from: Cost overruns by project teamsor subcontractors, vendors, andconsultants Scope creep, expansion, and changethat has not been managed Poor estimation or errors that result inunforeseen costs Overrun of budget and schedule. Schedule Risks - Schedule riskscan cause project failure by missing ordelaying a market opportunity for a productor service. Such risks are caused by: Inaccurate estimation, resulting inerrors Increased effort to solve technical,operational, and external problems Resource shortfalls, including staffingdelays, insufficient resources, andunrealistic expectations of assignedresources105

Articleso Unplanned resource assignment—loss of staff to other, higher-priority projects.yy Technology Risks - Technology riskscan result from a wide variety ofcircumstances. The result is a failureto meet systems’ target functionalityor performance expectations. Typicalexamples are: Problems with immature technology Use of the wrong tools Software that is untested or fails towork properly Requirement changes with no changemanagement Failure to understand or account forproduct complexity Integration problems Software/hardwareperformanceissues - poor response times, bugs,errors.yy Operational Risks - Operational risks arecharacterized by an inability to implementlarge-scale change effectively. Suchrisks can result in failure to realize theintended or expected benefits of theproject. Typical causes are: Inadequate resolution of priorities orconflicts Failure to designate authority to keypeople Insufficient communication or lack ofcommunication plan Size of transaction volumes - toogreat or too small Rollout and implementation risks - toomuch, too soon.One of the key elements in the processof management of the wide range of risksand their mitigation is the choice of theright methodology for managing the entiresoftware development process. There aredozens of methodologies that have beenapplied to the development of modernsoftware products in recent years, but themost productive, suitable and widely usedare the Agile methodologies for software106Software Development Methodologiesfor Reducing Project Risksdevelopment. This topic has been alreadystudied (e.g. John McManus, 2004)2. Agile Software DevelopmentpracticesThe Manifesto for Agile SoftwareDevelopment, published in 2001 (by AgileAlliance), defines the agile methodologiesfor software development.Over the next few years, thesemethodologies emerge as a naturalreaction to traditional software developmentapproaches. The reason for this is therecognized need for an alternative to theheavy documentation processes. Thereare many agile methodologies for softwaredevelopment. Their common features arerelated to the need constantly to adaptthe changing conditions and requirementsthat accompany a software project. Theycomprise a well-known set of practices,but combined in such a way so as to bringthe project to a successful completion. Notall of them cover the entire developmentprocess, some focus only on certainstages. Rarely is the same methodologyapplicable universally in every area in whichwe need a software solution. Sometimeseven the same methodology is not suitabletwice consecutively. The successfulimplementation of a combination of differentmethodologies with their practices wouldlead to the successful establishment of itsown process within a software project.yy Extreme Programming (XP - Fig.1) develops as a consequence ofthe problems that have arisen in thedevelopment cycle of standard modelsand processes. Started simply as "anopportunity to get the job done" practicesthat have been proven effective in thedevelopment of software in previousyears. After a series of successfulprojects in XP practice is "theorized" inits essential principles by Kent Beck in1999. Although individual XP practicesEconomic Alternatives, Issue 2, 2014

ArticlesFig. 1. Methodology process in Extreme Programmingare not new, they are collected andcombined to function together in a newway, forming a new methodology forsoftware development. It is a systemof practices that the community ofdevelopers evolutionarily evolved to copewith problems such as rapid delivery ofquality products, meeting the needs ofbusiness. The term "extreme" comesfrom the fact that these conventionalpractices are applied to the extremelevel. On Fig. 1 can be seen the mainphases and practices through which anXP project passes.Extreme Programming is created forthe use mainly by small, co-located teamsdeveloping software with requirements thatwere not clearly defined or are changing.This methodology emphasizes on the teamwork and customer involvement throughoutthe software development. Communicationand feedback are focal points in ExtremeProgramming. Communication is advocatednot just between the customer and theanalyst, but also between the customer andthe developers, and within the developmentteam itself. The feedback is achievedthrough early and continuous testing.Proponents of Extreme Programming assertthat its benefits include faster time to market,higher quality software development, bettercustomer satisfaction, and highly motivatedworking teams.The basic practices of ExtremeProgramming are pair programming, refactoring, testing, continuous integration,and evolutionary design. It should benoted that there are many other practicesadvocated in Extreme Programming and thatthe core practices of Extreme Programminghave been named and renamed by manyauthors. Pair Programming - is the practiceof two programmers/engineers participating in the development effort ofone programming unit. Typically, thepair is divided into one person entering code or test cases while the otheris reviewing and thinking. The coderesulting from pair programming ismore defect free, does not take significantly more time to develop thanif developed by one member, yieldsfewer lines of code, and is more sat-107

Software Development Methodologiesfor Reducing Project RisksArticlesisfying to programmers. Pair programming encourages the design of theprogramming unit to evolve simultaneously with the actual programming. Refactoring – is an activity of continuous re-design of a program unit totake advantage of programming techniques, especially object-oriented design and design patterns, to make theprograms more reusable, simpler, andmore efficient. Refactoring can occurat various times throughout the development process. A goal of refactoringis to yield programming units with astrong internal structure. Additionally,refactoring allows developers to respond quickly to a change in customer requirements or technology. Testing - by Extreme Programming,includes ideas such as unit testingby programmers, functional testing byusers, and automated testing to generate test units that mirror the actualprogramming units. These conceptsfully support the testing of programming units to promote a defect freeunit with each unit release. Testing inExtreme Programming involves twotypes of tests. The first type of testing is unit testing which is the testingof individual programming units suchas a class. Developers write tests forevery class they produce and evenwrite the tests before writing the code.When they add functionality to theoriginal class, they can test the priorfunctionality with the developed testing unit and add more tests for thenew functionality. The second typeof testing in Extreme Programming isfunctional testing. Functional tests arescripts developed to test clusters ofclasses. Functional testing is typicallyuse case driven tests. These tests areresponsibility of the users or customers while the unit tests belong to thedevelopers. Continuous Integration - is a conceptof integrating new code into existingcode and then utilizing the testingtechniques defined by Extreme Programming. This practice yields unitsof code that are continually testedduring the development. Evolutionary Design - involves making iterations of a program withinDaily scrum meetingProduct backlogSprintSprint backlogBacklog itemsSprint planningPotentially ShippableProduct IncrementNext iterationFig. 2. Process in software development with Scrum108Economic Alternatives, Issue 2, 2014

Articlesminutes rather than days. The programming pair defines each iterationof the problem and then implementsthese iterations. Upon completion, theproblem is expanded to yield anotheriteration and then that iteration is implemented.Extreme programming has been alreadystudied by Smith and Stoecklin (2001) andHneif and Hock Ow (2010)yy Scrum is another popular agilemethodology, the term comes from thegame of rugby and means clustering ofplayers around the ball in order to moveit forward. This agile approach (Fig. 2) isestablished to manage the process ofsoftware development. It is the "empiricalapproach employing concepts of the theoryof control of industrial processes during thedevelopment of the software, as a resultof which exhibit the ideas of flexibility,adaptability and productivity." The processenables software companies to realizetheir projects quickly and immediatelybegin to put into operation. Scrum focuseson the way the team members worktogether to build a flexible system in aconstantly changing environment. Scrumhelps to improve existing practices in theorganization, emphasizing on the frequentintervention of management to identifyproblems and obstacles during the process.This topic has been already studied (H. J.Correa, 2008).yy Feature Driven Development - FDDis a flexible and adaptive approach todeveloping software systems. It does notcover the entire software process, butrather focuses on the phases of design andimplementation. FDD combines iterativemethod of development best practicesproven to be effective in the industry.Emphasizes on quality in the processand often provides the functionality of theclient as well as continuous monitoring ofthe progress. The task for each functionis to be described and defined so as toenable the customer to consider its valueand decide whether or not to include it inthe product.FDD consists of five sequential processesand provides methods, techniques andguidelines required by participants in theproject to build the system. Also, FDDincludes roles, goals and schedules neededfor the project. It is claimed that, unlikesome other methodologies, FDD is suitableto the development of business criticalsystems, considered by Coad (2002) andGoyal (2007)yy Adaptive Software Development (ASD)(Fig. 3) is developed by James A.Highsmith (2000). ASD focuses primarilyon the development of large and complexsystems. This methodology encouragesthe development of the project throughconstant development of prototypes.Overall, ASD is trying to "balance on theedge of chaos" - its purpose is to set aframework with sufficient guidance forthe project not to fall into chaos, withoutrestricting the self-expression andcreativity of the developer.There are three main components inAdaptive Software Development: The Adaptive Conceptual Model The Adaptive Development Model The Adaptive Management ModelWithout practical techniques, conceptualideas remain only as concepts. On the otherhand, techniques without a theoretical baseare reduces to a series of steps executed byrote. Concepts and practices reinforce eachother as extreme projects do not succumbto rote practices, they require judgmentbased on firm conceptual foundations.Extreme environments move quickly,demanding fast learning among projectmembers and often forcing people toabandon preconceived assumption. Fastlearning requires iterations – try, review,repeat. Accelerated schedules demand a109

Software Development Methodologiesfor Reducing Project RisksArticleshigh degree of concurrency with developersworking on many components at thesame time. Taken together, iteration andconcurrency generate high levels of change,especially as project size escalates.The Adaptive Conceptual Modelintroduces the new science of complexadaptive systems as the conceptualfoundation for both development andmanagement. The Adaptive DevelopmentModel focuses on iterative phases ofdevelopmentandwork-group-levelpractices to increase speed and flexibility.The Adaptive Management Model focuseson forging adaptive culture and identifyingadaptive practices, particularly thoseinvolving distributed work groups and dealingwith high level of change, collaboration andtraditional ones mainly in the developmentprocess stages. Authors single out 14which should be differentiated, and focuson the management model, communicationpatterns approaching final goals:Agile methodologies characteristicscompared to the traditional approaches Development lifecycle – traditionalapproach uses linear developmentlife-cycle model rather than agilewhere the process includes iterativeand evolutional delivery model Style of development – for traditionalmodels is typical to be used expectanttype and adaptive approach for agilepractices Requirements – traditional modelsexpect good documented andOr can DivergeCollaborateSpeculateOr can DivergeOr can DivergeLearnFig. 3. Adaptive Software Development process [7]management results.Agile software methodologies has beenstudied too by Paetsch, Eberlein, Maurer(2003), Larman (2004), Todorov (2014).The Agile practices differ from the110knowable development process ratherthan agile methods where processcan include rapid or emergent change,or unknown issues to be discoveredduring the project.Economic Alternatives, Issue 2, 2014

Articles Architecture - Heavyweight architecturefor current and future requirements istypical for traditional approach, whileagile practices in fact do not needit, this is known as acronym (YAGNI),which is typical in agile developmentmethods where whole process indocumentationorarchitecturalmodel is not needed at all. Management – the whole processin traditional models are processcentric and the process is operatedby command and control. For agilepractices the process is peoplecentric operated by leadership andteam collaboration Documentation – heavy and detaileddocumentation for traditional models,which gives explicit knowledge. Inagile approach there is typical lightdocumentation and face-to-facecommunication Goal – predictability and optimizationfor traditional models versus explorationand adaptation for agile practices Change – hard to change processand project for traditional models andeasy and open for change project andprocess for agile models Team members - Pre-structuredteams for traditional approach versusSelf-organizing teams in agile models Client Involvement – low involvementof clients in the development processfor traditional models. Client is involvedin the beginning of the project, duringthe planning. In agile models client isinvolved as part of the team. Organization culture – command andcontrol culture for traditional approachversus leadership and collaborationfor agile practices Softwaredevelopmentprocess- Universal approach and solutionto provide predictability and highassurance is typical for traditionalapproach. Flexible approach adaptedwith collective is typical for agile models.This topic has been already studied byMoniruzzaman and Hossain (2013)Based on the main differencesbetween traditional and agile practicessome observations about risk changes formajor agile practices can be pointed out.Depending on the project application of agilemethodologies, the practices may vary asnot always the same practice is applicableto similar projects, however we can outlinethe main advantages of practices in main riskareas in order to mitigate and manage risk:Agile process application to main riskcategoriesConclusionFlexible software methodologies andpractices for software development providedevelopers with freedom in the process ofwork and interaction with customers andowners of the products. This approachcontributes to the improvement of the qualityof the final product and minimizes the risksassociated with customer expectations.Agile methodologies are not best suited forall projects. When communication betweenthe developer and the customer is difficult, orwhen the development team includes mainlybeginners, agile methodologies will notyield the best possible results. The processof continuous planning and incrementalapproach is a successful tool to minimizeoperating risks and risks associated withplanning, technological risks and thoserelated to changes in the environment andthe actions of competitors and customers.111

Software Development Methodologiesfor Reducing Project RisksArticlesTable 1. Main Software development risks / Agile development practices applicationRiskCategoriesResult in riskchangeNoteExternalRisksShort periods of planning and iterative nature make it possible totake account of changes in the external environment that will enable Risks aretaking the appropriate action and limiting their consequences for reducedthe software productCost RisksThe ability to target a small number of elements of the entireproject in every iteration, facilitates the more accurate assessmentof the resources required to build the product. This increases thecost for stage management and planning of the project, but at amuch lower risk of major discrepancies in the actual and predictedcost of the projectScheduleRisksSmaller portions planning allow more precise definition of theterms and tasks to be performed. Larger count of iterations andthe inclusion of the product owner in the discussions can lead toSchedule risksadding unforeseen additional iterations or design changes, whichare increasedincrease the time needed for full software development. This inturn increases the quality of the final product and satisfies theexpectations of product owner.Risks arereduced,Total cost isincreasedAgile methodologies enable developers to explore, experimentand test different technologies to achieve the highest quality of TechnologyTechnologysoftware products. This in turn reduces the risk in choosing wrong risks areRiskstechnologies. The iterative nature of development and testing reducedreduces the risk to omit testing any part of the project.Operational risks are typical when developing large applicationsor implementing major changes to existing applications, due tothe risk of losing or not well planned part of the project. Typical OperationalOperationalfor agile methodologies is the slicing of the whole process into risks areRiskssmall portions of the development, which provides for the closer reducedexamination of every aspect of the project, and for minimizing therisk of non-good performance or qualityFlexible approaches also allow for regularteam meetings, which is a good tool fortroubleshooting related to teamwork, andpersonal and individual problems of eachparticipant. This type of practice needs to112target a larger budget, due to the longerperiod of development. The increasednumber of iterations, meetings and additionalplanning require more resources plannedfor the product’s implementation, thoughEconomic Alternatives, Issue 2, 2014

Articlesthere is a smaller risk of budget changecompared to the projects implementedwith traditional methodologies. Flexiblepractices for development as a wholecan be characterized as a good practicefor managing the dynamics of businessprocesses, distributed teams changingbusiness requirements or environment byenabling the products to meet demands.ReferencesAgile Alliance, 2009. Manifesto for AgileSoftware Development. Available at:http://www.agilemanifesto.org [AccessedFebruary, 8th, 2014]Coad P., Feature-Driven Development.Availableat:http://www.petercoad.com/ download/bookpdfs/jmcuch06.pdf[Accessed February, 12th, 2014]Correa H. J., 2008. Introduction to ScrumEverette R. Keith, 2002 . Agile SoftwareDevelopment Processes. A DifferentApproach to Software DesignGoyal S., 2007. Feature Driven DevelopmentAgile Techniques for Project Managementand Software Engineering, TechnicalUniversity Munich. Available at: http://csis.pace.edu/ marchese/CS616/Agile/FDD/fdd.pdf [Accessed March, 5th, 2014]Highsmith J. A., 2000. Adaptive SoftwareDevelopment: A Collaborative Approach toManaging Complex Systems. Available at:http://books.google.ca/books?id CVcUAAAAQBAJ&lpg PP1&hl bg&pg PR15#v onepage&q&f false [Accessed December, 12th, 2013]Highsmith J. A., 2011. Don’t plan, speculateHneif M., Siew Hock Ow, October 2010 ,Review of agile methodologies in softwaredevelopment. Available at: http://www.arpapress.com/Volumes/Vol1/IJRRAS 1 01.pdf [Accessed March, 9th, 2014].Larman C., 2004. Agile and IterativeDevelopment: A Manager‘s Guide. Availableat: http://books.google.bg/books?id e4FrAFn0ytIC&printsec frontcover&source gbs ge summary r&cad 0#v onepage&q&f false [Accessed March, 9th, 2014]McManus J., 2004. Risk Management inSoftware Development Projects. Availableat: http://www.google.bg/books?id l VPK9wUJGIC&printsec frontcover&hl bg#v onepage&q&f false [Accessed March, 11th,2014]Moniruzzaman A B M, Dr Syed AkhterHossain, 2013 . Comparative Study on Agilesoftware development methodologiesMurch R., 2000. Project Management:Best Practices for IT Professionals. ISBN-10:0-13-021914-2Paetsch F., Eberlein A., Maurer F., 2003.Requirements engineering and agile cture for Collaborative Enterprises.WET ICE 2003, ISBN 0-7695-1963-6, 2003,p. 308-313Smith S., Sara Stoecklin, 2001. What WeCan Learn From Extreme Programming.Available at: http://faculty.salisbury.edu/ xswang/research/papers/serelated/xp/p144-smith.pdf [AccessedMarch, 20th, 2014]Todorov N., 2013. Agile Methodologiesfor software development and applicationbase on standards in quality management.Bulgarian Academy of Science113

software development process. There are dozens of methodologies that have been applied to the development of modern software products in recent years, but the most productive, suitable and widely used are the Agile methodologies for software development. This topic has been already studied (e.g. John McManus, 2004) 2. Agile Software Development