Extreme Programming: Strengths And Weaknesses

3y ago
27 Views
2 Downloads
540.83 KB
6 Pages
Last View : 24d ago
Last Download : 3m ago
Upload by : Jamie Paz
Transcription

The International Arab Conference on Information Technology (ACIT’2013)Extreme Programming: Strengths andWeaknessesAhmad dalalahPrep. Year DeanshipUniversity of Hail, SAa.dalalah@uoh.edu.saAbstract: Extreme Programming (XP) is an agile software development methodology. It is a lightweightmethodology combining a set of existing software development practices [5]. This paper aims to discuss thestrengths and weaknesses of the Extreme Programming methodology through examining the characteristics of thetwelve software development practices of the XP methodology.Keywords: Extreme programming, Release,Exploration Phase, System Metaphor.1. Introduction – What is ExtremeProgramming?Extreme Programming (XP) is an agilesoftware development methodology. It is alightweight methodology combining a set ofexisting software development practices [5].XP tends to rapidly develop high-qualitysoftware that provides the highest value forthe customers in the fastest way possible.Extreme Programming is based on valuesof simplicity, communication, feedback,courage, and respect, which was newlyadded. It works by bringing the whole teamtogether in the presence of simple practices,with enough feedback to enable the team tosee where they are and to tune the practices totheir unique situation.Dr. Dalalah is originally with JordanUniversity of science and Technology, Jordan.He is in leave of absence and now withUniversity of Hail, Saudi Arabia.Extreme Programming consists of fourmain phases: Planning, Designing, Codingand Testing. Each of these phases includes anumber of rules and practices. There are 12practices: On-site Customers, planning game,small releases, simple design, systemmetaphor, re-factoring, coding standards, pairprogramming,40-hoursworkweek,continuous integration, collective codeownership, and testing. Testing include bothunite testing and acceptance testing. These arewell-known common software developmentpractices but XP takes these practices to theirextremes.In addition to these 12 practices XP has anumber of supporting practices. Thesesupporting practices include: do the simplestthing that could possibly work, develop whatis immediately required to meet customersneed, coaching to help the team keep in track.This paper is organized as follows:section two discusses the practices in theplanning phase; section 3 discusses thepractices in the designing phase; section 4discusses the practices in the coding phasewhich is the main phase of the XPmethodology; section 5 discusses the testingphase, this phase includes the unit testing andthe acceptance tests; and section 6 concludesthe report and provide some suggestions forfuture work.

2. PlanningThe planning phase begins by writingusers stories. User stories serve the samepurpose as the use-cases, but are not the same[9]. User stories are written by the customerand are used to create time estimates forrelease plan. The release plan is then used tocreate iteration plans for each of the iterationsin the product life cycle.The development team needs to releasesmall releases, iterative versions, to thecustomers often. After the first release, theproject velocity is calculated. The projectvelocity is a measure of how much work isgetting done on your project [9]. The velocityis used to decide the number of iterations andthe time estimates for each of the iterations.Iterative Development adds agility to thedevelopment process. Iterative Developmentadds agility to the development process.One of the XP principles is to movepeople around. This is done to avoid anyknowledge loss that might cause a codingbottleneck.The next subsections introduces threepractices of the XP methodology used in theplanning phase, these are the on-sitecustomers, the planning game, and smallreleases. For each of these practices, each subsection explains the main idea of the practiceand discusses the strengths and weaknessesof the practice.2.1. On-site CustomersOn-site customer means to include real lifecustomers in the development process. Thecustomers will be always available to answerquestions, provide the requirements, set thepriorities, and steer the project.As a result, this will ensure thecustomers’ satisfaction by including them inand will avoid frustration caused by negativefeedback caused by misunderstanding therequirements.On the other hand, it is not realistic toassume that the customers will be available allthe time. The on-site customer is an idealsituation. Having on-site customers cansometimes be difficult since customers do notfully understandable the benefits of regulardeveloper-customer interactions [5], and theydo not want to be bothered by givingfeedback to all team members all the time.2.2. The Planning GameThere are two key planning steps in XP:release planning and iteration planning. Theplanning game tends to create a time estimatefor the release plan. The release plan is thenused to create iteration plans for each of theiterations. Release Planning is a practicewhere the developers and the customersdecide on which features will be included inwhich release and when it will be delivered.The programmer gives a cost for each of thestories given by the customer -- ExplorationPhase. The cost is an estimate of the storydifficulty and the time required to developthe story. Using the cost estimates, and withknowledge of the features importance, a planfor the project is laid out and a commitment isdone to deliver the features in the date agreedupon –Commitment Phase. The plan is notprecise as the cost and priorities are not solid.However, the release plan is revisedfrequently when required –Steering Phase.Iteration Planning during IterationPlanning, the programmers’ break down thefeatures provided by the customers into tasks,and estimates their cost. Based on the amountof work accomplished in the previousiteration, the team signs up for what will beundertaken in the current iteration [1]. Thisgives directions to the team every couple ofweeks.The planning game is very simple, yet itprovides very good information about whathas been done and what could beaccomplished in a two weeks period. It alsoprovides an excellent steering control for thecustomers. The customers are aware of theprogress of the project, and whether theprogress is sufficient or not.

On the other hand, progress is so visible,and the ability to decide what will be donenext is so complete, that XP projects tend todeliver more of what is needed, with lesspressure and stress [1].In order to keep the design simple andavoid any complexity, Re-factoring isrequired.The next sub sections begin by explainingthe idea of a simple design and then discusstwo other practices that are the Systemmetaphor and the Re-factoring.2.3. Small ReleasesThe development team is required tomake small frequent releases of workingsoftware that customers can evaluate. Thefirst release includes the smallest set of usefulfeatures set. Subsequent releases includenewly added features.Small releases are important for both thecustomers and the development team. Thecustomer can evaluate the software or releaseto end users which is highly recommended.This evaluation provides necessary feedbackto the development team.On the other hand, it may be impossibleto create good releases this often. In addition,it is an overhead for the development team tomake a new release every iteration and ensurethat this release is reliable and meets thecustomer requirements. Another thing thatshould be taken in consideration is that thecustomers might become overwhelmed withevaluating and commenting the new releases.3.1. Simple DesignIn the designing phase, XP concentrateson keeping things as simple as possible aslong as possible. No extra functionality isadded early with the assumption that it mightbe used later on.A simple design always saves time as ittakes less time to finish. Any complex codeshould be replaced as soon as possible. Theearlier the code is replaced the easier it is toreplace it.Simple Design has its disadvantages. Asno design techniques are used and no designdiagrams are produced, the developmentteam will be missing the “big picture” of theproject. This might mislead the team todeveloping the software in the wrong wayleading to excessive re-factoring becauseinadequate time had been allocated to initialsystem design [6].3.2. System Metaphor3. DesigningXP is an iterative methodology; thereforedesign is a continuous essential process.In the designing phase, XP concentrateson keeping things as simple as possible aslong as possible -Simple Design-. Choosing asystem metaphor is very important for thedevelopment team to keep being organized.XP encourages using the Use Class,Responsibilities, and Collaboration (CRC)Cards to design the system as a team. XP alsoencourages the use of Spike solutions to solvetechnical or design problems. A spike solutionis a very simple program to explore potentialsolutions [10].System metaphor is a common vision ofthe project in hand. The metaphor keeps thedevelopment team organized by providing anaming convention.A naming convention is very importantas it helps understanding the overall design ofthe system and reuse code. It saves time as itmakes it easier to find the functionality youare looking for and to know where to putcertain functionality.3.3. Re-factoringRe-factoring is a process of continuousdesign improvement to keep the design assimple as possible and to avoid needlessclutter and complexity.

Symptoms that indicates that re-factoringis required includes; multiple maintenance:functional changes start requiring changes tomultiple copies of the same (or similar) code.Another symptom is that changes in one partof the code affect lots of other parts [10].Re-factoringtendstoremovingredundancy and duplications and increasingthe code cohesion while decreasing itsdependences. Re-factoring throughout theentire project saves time, increase quality, andimproves understandability.Re-factoring should be supported bycomprehensive testing to ensure that nothingis broken.4. CodingIn the coding phase, XP concentrates onhaving coding standards to keep the codeconsistent and easy to read and re-factor.The coding phase begins by creating testfirst units. This helps the developersunderstanding the requirements.Pair programming is one of the practicesthat distinguish the XP methodology. Eachpair of programmers writes their code andthen integrates it together in a serial fashion.The development team has a collectivecode ownership. Each team member canchange or re-factor any part of the code.In the next sub sections five practices arediscussed. The role of code standards in theXP methodology, the importance of pairprogramming in XP, the 40-hour work week,the continuous integration, and the collectivecode ownership.4.1. Coding StandardsCoding standards keeps the codeconsistent and easy to read and re-factor,which is very important in XP as it makes thecode look as if one developer has written it.This practice supports the collective codeownership practice.4.2. Pair ProgrammingPair programming is one of the practicesthat distinguish the XP methodology. Eachpair of programmers works together todevelop certain functionality. This increasessoftware quality.A pair of programmers working togetherwill have the same productivity as workingseparately but the outcome will have a higherquality. The better quality saves time later onin the project; therefore pair programming isconsidered a good investment.Pair programming has many advantages.In addition to a better code quality, it helpswith communicating knowledge and no onedeveloper becomes a bottleneck. It also allowsthe programmers to share their knowledge,learn, and improve their skills.However, pair programming might be apoor practice if done in the wrongenvironment. If the two programmers havedifferent skill levels, the higher-level skillprogrammer might dominate and the otherprogrammer becomes idle. Personalitydifferences might also have impact on pairprogramming.4.3. 40-Hour Work WeekA 40-hour work-week means that thedevelopers should not work more than 40hours per week - no overtime. This will givethe developers a comfortable workingenvironment with no pressure. In pressuretimes, up to one week of overtime isacceptable. Multiple weeks of overtime willexhaust the developers and reduce theirproductivity.4.4. Continuous IntegrationXP team should maintain a fullyintegrated project. The integration processshould be continues and carefully controlled.Developers should integrate tested code atleast daily. This should be done serially asparallel integration might lead to seriousproblems.

Continuous integration often avoidsdiverging or fragmented development efforts,where developers are not communicatingwith each other about what can be re-used, orwhat could be shared [10]. Continuesintegration ensures that everyone has thelatest version of the project. ity problems early.4.5. Collective Code OwnershipThe development team has a collectivecode ownership. Each team member canchange or re-factor any part of the code.Collective code ownership ensures that noone developer becomes a bottleneck forchanges. It allows programmers to reuse anyfunctionality that might be required bymultiple user stories.Collective code ownership might bedifficult to implement, as it is hard to makethe entire team responsible for the entireproject. This practice adds an overhead thatall the developers are required to have all theknowledge used in the project.typically tests only a single class, or a smallcluster of classes [10].Unit tests are very important as it cansave a large amount of effort. But forapproaching deadline, unit tests aresometimes skipped as it requires time todevelop the unit test and run them.Often some small changes to the codewould also require that some unit testsneeded to be changed or rewritten becausethey were to specifically tighter to theimplementation [3].5.2. Acceptance TestingAcceptance tests are test done be thecustomers to ensure that the overall systemcontains all the required features. Acceptancetests are also used as regression tests prior toa production release [10].The acceptance tests should be done ateach of the iterations of the process to ensurethat the new release contains all the featuresagreed upon. The acceptance test score ispublished to the team. It is the team'sresponsibility to schedule a time to fix anyfailed test, in every iteration [10].5. Testing6. Conclusion and Future WorkTest in XP comes in tow types: unit testsand customer tests.As mentioned before the coding phasebegins by creating test first units for eachfeature to be developed. The developedfeature should pass all the test units to beconsidered as completed. This is called unittesting.Acceptance tests are test done be thecustomers to ensure that the overallapplication contains all the required features.In XP, it is preferable that all test carriedare automated. Automated testing results inmuch better overall quality.Extreme Programming (XP) is an agilesoftware development methodology. It is alightweight methodology combining a set ofexisting software development practices [5].Each of these practices has its strengths andweaknesses.The XP methodology has some excellentpractices that have proven useful such as pairprogramming and unit tests.The success of the XP methodology as asoftware development process dependsheavily on the context of the project. XPshould be implemented with projects thathave a very frequent requirement changes.It would be better if XP is supported witha traditional methodology to provide therequireddesigndiagramsanddocumentations.5.1. Unit TestingUnit Tests are automated tests written bythe developers during the coding phase to testfeatures as they are developed. Each unit test

7. References1. Beck, K. “Extreme ey, Reading, MA,2000.2. G. Vanderburg, “A Simple Model ofAgile Software Processes –orExtreme Programming Annealed”,ACM, 2005, pp. 539-545.3. G.Hedin,L.Bendix,B.Magnusson, “Introducing SoftwareEngineering by means of undInstitutionofTechnology,Sweden, IEEE, 2003.4. J.Noble,S.Marshall,S.Marshall, R. Biddle, “Less ExtremeProgramming”.InformationGroup, Victoria University ofWellington, 2004.5. rsity of Technology, IEEE,2003.6. N. LeJeune, “Teaching SoftwaerEngineering Practice with ExtremeProgramming”, Metropolitan StateCollege of Denver, Departmentof Mathematical and ComputerScience, 2005.7. P. Grishman, D. Perry, “CustomerRelationshipandExtremeProgramming”, ACM, 2005.8. R.Paige,H.Chivers,J.McDermid, Z. Stephenson, "HighIntegrety Extreme Programming",ACM, 2005.9. http://www.extremeprogramming.org

Programming? Extreme Programming (XP) is an agile software development methodology. It is a lightweight methodology combining a set of existing software development practices [5]. XP tends to rapidly develop high-quality software that provides the highest value for the customers in the fastest way possible. Extreme Programming is based on values

Related Documents:

7.2 American Strengths and Weaknesses 1. List three weaknesses of the Americans at the start of the war. 2. Besides patriotism, list two American strengths at the start of the war. 7.3 British Strengths and Weaknesses 1. List three s

Section 2 - American Strengths and Weaknesses The Patriots were in a weak position when the American Revolution began. They had a hastily organized, untrained army and a small navy. Their weaknesses were far more obvious than their strengths. American Weaknesses The Continen

strengths and weaknesses is not easy—in fact, it can be downright scary. Self-examination may reveal characteristics we don't really like about ourselves. Plus, some people have low self-esteem, so they are much more aware of their weaknesses than their strengths. It takes courage to evaluate yourself, acknowledge your strengths,

Extreme Programming John T. Bell Department of Computer Science University of Illinois, Chicago Prepared for CS 442, Spring 2017 2 Sources 1. Wikipedia: Extreme Programming 2. Wikipedia: Extreme Programming Practices 3. Wikipedia: Kent Beck 4. Kent eck and ynthia Andres, “Extreme Programming Explained: Embrace hange”, 2nd Edition 5.

strengths and pick out in others listen to work with will help in. Spend more you provide examples of strengths is a way you know the definition of strengths is the labels for example, that my best and weaknesses. Lie of personal strengths and organization is why i get an. Sometimes the strengths and determined, describing the skills you are .

2.5.1 The importance of a strengths-based approach to leader or leadership development 18 2.5.1.1 Strengths-based coaching 19 2.5.2 Background to 'strengths' 20 2.5.3 Character strengths as defined by positive psychology 21 2.5.4 The VIA Strengths test 22 2.5.5 Critiques of a strengths-based approach 22 2.6 COACHING 23

Extreme Programming Extreme Programming (XP) takes commonsense software engineering principles and practices to extreme levels For instance “Testing is good?” then “We will test every day” and “We will write test cases before we code” As Kent Beck says extreme programming takes

The Icecast Anatomy pressure casting system allows the clinician to produce a reliable, repeatable and well-fitting TSB socket. DESIGN Icecast Anatomy is a single chamber pressure casting system, which provides pressure to shape the soft tissue. The single chamber pressure system is designed to provide optimal pressure distribution. The chamber is reinforced with matrix, for durability and to .