Tuesday, 15 May 2012

Extreme programming


Extreme programming (XP) is a software development alignment which is advised to advance software superior and admiration to alteration chump requirements. As a blazon of active software development,123 it advocates common "releases" in abbreviate development cycles (timeboxing), which is advised to advance abundance and acquaint checkpoints area new chump requirements can be adopted.

Other elements of acute programming include: programming in pairs or accomplishing all-encompassing cipher review, assemblage testing of all code, alienated programming of appearance until they are in fact needed, a collapsed administration structure, artlessness and accuracy in code, assured changes in the customer's requirements as time passes and the botheration is bigger understood, and common advice with the chump and a part of programmers.234 The alignment takes its name from the abstraction that the benign elements of acceptable software engineering practices are taken to "extreme" levels, on the approach that if a little is good, added is better.clarification needed

Critics accept acclaimed several abeyant drawbacks,5 including problems with ambiguous requirements, no accurate compromises of user conflicts, and a abridgement of an all-embracing architecture blueprint or document.

History


Extreme programming was created by Kent Beck during his plan on the Chrysler Comprehensive Compensation Arrangement (C3) amount project.5 Beck became the C3 activity baton in March 1996 and began to clarify the development adjustment acclimated in the activity and wrote a book on the adjustment (in October 1999, Acute Programming Explained was published).5 Chrysler annulled the C3 activity in February 2000, afterwards the aggregation was acquired by Daimler-Benz.6

Although acute programming itself is almost new, abounding of its practices accept been about for some time; the methodology, afterwards all, takes "best practices" to acute levels. For example, the "practice of test-first development, planning and autograph tests afore anniversary micro-increment" was acclimated as aboriginal as NASA's Activity Mercury, in the aboriginal 1960s (Larman 2003). To abbreviate the absolute development time, some academic analysis abstracts (such as for accepting testing) accept been developed in alongside (or anon before) the software is accessible for testing. A NASA absolute analysis accumulation can address the analysis procedures, based on academic requirements and analytic limits, afore the software has been accounting and chip with the hardware. In XP, this abstraction is taken to the acute akin by autograph automatic tests (perhaps central of software modules) which validate the operation of even baby sections of software coding, rather than alone testing the beyond features. Some added XP practices, such as refactoring, modularity, bottom-up design, and incremental architecture were declared by Leo Brodie in his book appear in 1984.7

editOrigins

Software development in the 1990s was shaped by two above influences: internally, acquisitive programming replaced procedural programming as the programming archetype advantaged by some in the industry; externally, the acceleration of the Internet and the dot-com bang emphasized speed-to-market and company-growth as aggressive business factors. Rapidly-changing requirements accepted beneath artefact life-cycles, and were generally adverse with acceptable methods of software development.

The Chrysler Comprehensive Compensation Arrangement was started in adjustment to actuate the best way to use commodity technologies, application the amount systems at Chrysler as the commodity of research, with Smalltalk as the accent and GemStone as the abstracts admission layer. They brought in Kent Beck,5 a arresting Smalltalk practitioner, to do achievement affability on the system, but his role broadcast as he acclaimed several problems they were accepting with their development process. He took this befalling to adduce and apparatus some changes in their practices based on his plan with his common collaborator, Ward Cunningham. Beck describes the aboriginal apperception of the methods:8

The aboriginal time I was asked to advance a team, I asked them to do a little bit of the things I anticipation were sensible, like testing and reviews. The additional time there was a lot added on the line. I thought, "Damn the torpedoes, at atomic this will accomplish a acceptable article," and asked the aggregation to crank up all the knobs to 10 on the things I anticipation were capital and leave out aggregate else.

Beck arrive Ron Jeffries to the activity to advice advance and clarify these methods. Jeffries thereafter acted as a drillmaster to brainwash the practices as habits in the C3 team.

Information about the attempt and practices abaft XP was broadcast to the added apple through discussions on the aboriginal Wiki, Cunningham's WikiWikiWeb. Assorted contributors discussed and broadcast aloft the ideas, and some aftereffect methodologies resulted (see active software development). Also, XP concepts accept been explained, for several years, application a hypertext arrangement map on the XP website at "http://www.extremeprogramming.org" about 1999.

Beck edited a alternation of books on XP, alpha with his own Acute Programming Explained (1999, ISBN 0-201-61641-6), overextension his account to a abundant larger, yet actual receptive, audience. Authors in the alternation went through assorted aspects accessory XP and its practices. The alternation included a book that was analytical of the practices.

editCurrent state

XP created absolutely a fizz in the backward 1990s and aboriginal 2000s, seeing acceptance in a amount of environments radically altered from its origins.

The top conduct appropriate by the aboriginal practices generally went by the wayside, causing some of these practices, such as those anticipation too rigid, to be deprecated or reduced, or even larboard unfinished, on alone sites. For example, the convenance of end-of-day affiliation tests, for a accurate project, could be afflicted to an end-of-week schedule, or artlessly bargain to mutually agreed dates. Such a added airy agenda could abstain humans activity rushed to accomplish bogus stubs just to canyon the end-of-day testing. A beneath adamant agenda allows, instead, for some circuitous appearance to be added absolutely developed over a several-day period. However, some akin of alternate affiliation testing can ascertain groups of humans alive in non-compatible, departure efforts afore too abundant plan is invested in divergent, amiss directions.

Meanwhile, added active development practices accept not stood still, and XP is still evolving, assimilating added acquaint from adventures in the field, to use added practices. In the additional copy of Acute Programming Explained, Beck added added ethics and practices and differentiated amid primary and aftereffect practices.

Concept


Goals

Extreme Programming Explained describes Acute Programming as a software development conduct that organizes humans to aftermath college superior software added productively.

XP attempts to abate the amount of changes in requirements by accepting assorted abbreviate development cycles, rather than a continued one. In this article changes are a natural, assured and adorable aspect of software development projects, and should be planned for instead of attempting to ascertain a abiding set of requirements.

Extreme programming aswell introduces a amount of basal values, attempt and practices on top of the active programming framework.

editActivities

XP describes four basal activities that are performed aural the software development process: coding, testing, listening, and designing. Each of those activities is declared below.

editCoding

The advocates of XP altercate that the alone absolutely important artefact of the arrangement development activity is cipher – software instructions a computer can interpret. Afterwards code, there is no alive product.

Coding can aswell be acclimated to amount out the a lot of acceptable solution. Coding can aswell advice to acquaint thoughts about programming problems. A programmer ambidextrous with a circuitous programming botheration and award it harder to explain the band-aid to adolescent programmers ability cipher it and use the cipher to authenticate what he or she means. Code, say the proponents of this position, is consistently bright and abridged and cannot be interpreted in added than one way. Added programmers can accord acknowledgment on this cipher by aswell coding their thoughts.

editTesting

Extreme programming's access is that if a little testing can annihilate a few flaws, a lot of testing can annihilate abounding added flaws.

Unit tests actuate whether a accustomed affection works as intended. A programmer writes as abounding automatic tests as they can anticipate of that ability "break" the code; if all tests run successfully, again the coding is complete. Every section of cipher that is accounting is activated afore affective on to the next feature.

Acceptance tests verify that the requirements as accepted by the programmers amuse the customer's absolute requirements. These activity in the analysis appearance of absolution planning.

A "testathon" is an accident if programmers accommodated to do collaborative analysis writing, a affectionate of brainstorming about to software testing.

editListening

Programmers accept to accept to what the barter charge the arrangement to do, what "business logic" is needed. They accept to accept these needs able-bodied abundant to accord the chump acknowledgment about the abstruse aspects of how the botheration ability be solved, or cannot be solved. Advice amid the chump and programmer is added addressed in the Planning Game.

editDesigning

From the point of appearance of simplicity, of advance one could say that arrangement development doesn't charge added than coding, testing and listening. If those activities are performed well, the aftereffect should consistently be a arrangement that works. In practice, this will not work. One can arise a continued way afterwards designing but at a accustomed time one will get stuck. The arrangement becomes too circuitous and the dependencies aural the arrangement cease to be clear. One can abstain this by creating a architecture anatomy that organizes the argumentation in the system. Good architecture will abstain lots of dependencies aural a system; this agency that alteration one allotment of the arrangement will not affect added locations of the system.citation needed

editValues

Extreme Programming initially accustomed four ethics in 1999. A new amount was added in the additional copy of Acute Programming Explained. The 5 ethics are:

editCommunication

Building software systems requires communicating arrangement requirements to the developers of the system. In academic software development methodologies, this assignment is able through documentation. Acute programming techniques can be beheld as methods for rapidly architecture and disseminating institutional ability a allotment of associates of a development team. The ambition is to accord all developers a aggregate appearance of the arrangement which matches the appearance captivated by the users of the system. To this end, acute programming favors simple designs, accepted metaphors, accord of users and programmers, common exact communication, and feedback.

editSimplicity

Extreme programming encourages starting with the simplest solution. Extra functionality can again be added later. The aberration amid this access and added accepted arrangement development methods is the focus on designing and coding for the needs of today instead of those of tomorrow, next week, or next month. This is sometimes summed up as the "you ain't gonna charge it" (YAGNI) approach.9 Proponents of XP accede the disadvantage that this can sometimes entail added accomplishment tomorrow to change the system; their affirmation is that this is added than compensated for by the advantage of not advance in accessible approaching requirements that ability change afore they become relevant. Coding and designing for ambiguous approaching requirements implies the accident of spending assets on something that ability not be needed. Accompanying to the "communication" value, artlessness in architecture and coding should advance the superior of communication. A simple architecture with actual simple cipher could be calmly accepted by a lot of programmers in the team.

editFeedback

Within acute programming, acknowledgment relates to altered ambit of the arrangement development:

Feedback from the system: by autograph assemblage tests,5 or active alternate affiliation tests, the programmers accept absolute acknowledgment from the accompaniment of the arrangement afterwards implementing changes.

Feedback from the customer: The anatomic tests (aka accepting tests) are accounting by the chump and the testers. They will get accurate acknowledgment about the accepted accompaniment of their system. This analysis is planned already in every two or three weeks so the chump can calmly beacon the development.

Feedback from the team: If barter arise up with new requirements in the planning bold the aggregation anon gives an admiration of the time that it will yield to implement.

Feedback is carefully accompanying to advice and simplicity. Flaws in the arrangement are calmly announced by autograph a assemblage analysis that proves a assertive section of cipher will break. The absolute acknowledgment from the arrangement tells programmers to recode this part. A chump is able to analysis the arrangement periodically according to the anatomic requirements, accepted as user stories.5 To adduce Kent Beck, "Optimism is an anatomic hazard of programming. Acknowledgment is the treatment." 10

editCourage

Several practices actualize courage. One is the bidding to consistently architecture and cipher for today and not for tomorrow. This is an accomplishment to abstain accepting bogged down in architecture and acute a lot of accomplishment to apparatus annihilation else. Adventuresomeness enables developers to feel adequate with refactoring their cipher if necessary.5 This agency reviewing the absolute arrangement and modifying it so that approaching changes can be implemented added easily. Another archetype of adventuresomeness is alive if to bandy cipher away: adventuresomeness to abolish antecedent cipher that is obsolete, no amount how abundant accomplishment was acclimated to actualize that antecedent code. Also, adventuresomeness agency persistence: A programmer ability be ashore on a circuitous botheration for an absolute day, again breach the botheration bound the next day, if alone they are persistent.

editRespect

The account amount includes account for others as able-bodied as self-respect. Programmers should never accomplish changes that breach compilation, that accomplish absolute unit-tests fail, or that contrarily adjournment the plan of their peers. Associates account their own plan by consistently appetite for top superior and gluttonous for the best architecture for the band-aid at duke through refactoring.

Adopting the four beforehand ethics leads to account acquired from others in the team. Nobody on the aggregation should feel unappreciated or ignored. This ensures a top akin of activity and encourages adherence adjoin the aggregation and adjoin the ambition of the project. This amount is actual abased aloft the added values, and is actual abundant aggressive adjoin humans in a team.

editRules

The aboriginal adaptation of rules for XP was arise in 1999 by Don Wells11 at the XP website. 29 rules are accustomed in the categories of planning, managing, designing, coding, and testing. Planning, managing and designing are alleged out absolutely to adverse claims that XP doesn't abutment those activities.

Another adaptation of XP rules was proposed by Ken Auer12 in XP/Agile Universe 2003. He acquainted XP was authentic by its rules, not its practices (which are accountable to added aberration and ambiguity). He authentic two categories: "Rules of Engagement" which behest the ambiance in which software development can yield abode effectively, and "Rules of Play" which ascertain the minute-by-minute activities and rules aural the framework of the Rules of Engagement.

editPrinciples

The attempt that anatomy the base of XP are based on the ethics just declared and are advised to advance decisions in a arrangement development project. The attempt are advised to be added accurate than the ethics and added calmly translated to advice in a applied situation.

editFeedback

Extreme programming sees acknowledgment as a lot of advantageous if it is done rapidly and expresses that the time amid an activity and its acknowledgment is analytical to acquirements and authoritative changes. Unlike acceptable arrangement development methods, acquaintance with the chump occurs in added common iterations. The chump has bright acumen into the arrangement that is getting developed. He or she can accord acknowledgment and beacon the development as needed.

Unit tests aswell accord to the accelerated acknowledgment principle. If autograph code, the assemblage analysis provides absolute acknowledgment as to how the arrangement reacts to the changes one has made. If, for instance, the changes affect a allocation of the arrangement that is not in the ambit of the programmer who fabricated them, that programmer will not apprehension the flaw. There is a ample adventitious that this bug will arise if the arrangement is in production.

editAssuming simplicity

This is about alleviative every botheration as if its band-aid were "extremely simple". Acceptable arrangement development methods say to plan for the approaching and to cipher for reusability. Acute programming rejects these ideas.

The advocates of acute programming say that authoritative big changes all at already does not work. Acute programming applies incremental changes: for example, a arrangement ability accept baby releases every three weeks. If abounding little accomplish are made, the chump has added ascendancy over the development activity and the arrangement that is getting developed.

editEmbracing change

The assumption of all-embracing change is about not alive adjoin changes but all-embracing them. For instance, if at one of the accepted affairs it appears that the customer's requirements accept afflicted dramatically, programmers are to embrace this and plan the new requirements for the next iteration.

Practices


Extreme programming has been declared as accepting 12 practices, aggregate into four areas:

editFine calibration feedback

Pair programming5

Planning game

Test-driven development

Whole team

editContinuous process

Continuous integration

Refactoring or architecture improvement5

Small releases

editShared understanding

Coding standards

Collective cipher ownership5

Simple design5

System metaphor

editProgrammer welfare

Sustainable pace

editCoding

The chump is consistently available

Code the Unit analysis first

Only one brace integrates cipher at a time

Leave Optimization until last

No Overtime

editTesting

All cipher accept to accept Unit tests

All cipher accept to canyon all Unit tests afore it can be released.

When a Bug is begin tests are created afore the bug is addressed (a bug is not an absurdity in logic, it is a analysis you forgot to write)

Acceptance tests are run generally and the after-effects are published

Controversial aspects


The practices in XP accept been heavily debated.5 Proponents of acute programming affirmation that by accepting the on-site customer5 appeal changes informally, the action becomes flexible, and saves the amount of academic overhead. Critics of XP affirmation this can beforehand to cher rework and action ambit edge above what was ahead agreed or funded.

Change ascendancy boards are a assurance that there are abeyant conflicts in action objectives and constraints amid assorted users. XP's expedited alignment is somewhat abased on programmers getting able to accept a unified applicant angle so the programmer can apply on coding rather than affidavit of accommodation objectives and constraints. This aswell applies if assorted programming organizations are involved, decidedly organizations which attempt for shares of projects.citation needed

Other potentially arguable aspects of acute programming include:

Requirements are bidding as automatic accepting tests rather than blueprint documents.

Requirements are authentic incrementally, rather than aggravating to get them all in advance.

Software developers are usually appropriate to plan in pairs.

There is no Big Architectonics Up Front. Most of the architectonics action takes abode on the fly and incrementally, starting with "the simplest affair that could possibly work" and abacus complication alone if it's appropriate by declining tests. Critics analyze this to "debugging a arrangement into appearance" and abhorrence this will aftereffect in added re-design accomplishment than alone re-designing if requirements change.

A chump adumbrative is absorbed to the project. This role can become a single-point-of-failure for the project, and some humans accept begin it to be a antecedent of stress. Also, there is the crisis of micro-management by a non-technical adumbrative aggravating to behest the use of abstruse software appearance and architecture.

Dependence aloft all added aspects of XP: "XP is like a ring of poisonous snakes, daisy-chained together. All it takes is for one of them to convulse loose, and you've got a actual angry, poisonous snake branch your way."13

editScalability

Historically, XP alone works on teams of twelve or beneath people. One way to avoid this limitation is to breach up the action into abate pieces and the aggregation into abate groups. It has been claimed that XP has been acclimated auspiciously on teams of over a hundred developerscitation needed. ThoughtWorks has claimed reasonable success on broadcast XP projects with up to sixty peoplecitation needed.

In 2004 Industrial Acute Programming (IXP)14 was alien as an change of XP. It is advised to accompany the adeptness to plan in ample and broadcast teams. It now has 23 practices and adjustable values. As it is a new affiliate of the Agile family, there is not abundant abstracts to prove its usability, about it claims to be an acknowledgment to what it sees as XP's imperfections.

editSeverability and responses

In 2003, Matt Stephens and Doug Rosenberg appear Acute Programming Refactored: The Case Against XP which questioned the amount of the XP action and appropriate means in which it could be improved. This triggered a diffuse agitation in articles, internet newsgroups, and web-site babble areas. The amount altercation of the book is that XP's practices are commutual but that few applied organizations are willing/able to accept all the practices; accordingly the absolute action fails. The book aswell makes added criticisms and it draws a affinity of XP's "collective ownership" archetypal to socialism in a abrogating manner.

Certain aspects of XP accept afflicted back the book Acute Programming Refactored (2003) was published; in particular, XP now accommodates modifications to the practices as continued as the appropriate objectives are still met. XP aswell uses more all-encompassing agreement for processes. Some altercate that these changes invalidate antecedent criticisms; others affirmation that this is artlessly watering the action down.

RDP Convenance is a address for dressmaking acute programming. This convenance was initially proposed as a continued analysis cardboard in a branch organized by Philippe Kruchten and Steve Adolph( See APSO branch at ICSE 2008) and yet it is the alone proposed and applicative adjustment for customizing XP. The admired concepts abaft RDP practice, in a abbreviate time provided the account for account of it in industries. RDP Convenance tries to adapt XP by relying on address XP Rules.

Other authors accept approved to accommodate XP with the earlier methods in adjustment to anatomy a unified methodology. Some of these XP approved to replace, such as the avalanche method; example: Action Lifecycles: Waterfall, Rapid Application Development, and All That. JPMorgan Chase & Co. approved accumulation XP with the computer programming methodologies of Capability Maturity Archetypal Integration (CMMI), and Six Sigma. They begin that the three systems able anniversary added well, arch to bigger development, and did not mutually contradict.15

Criticism


Extreme programming's antecedent fizz and arguable tenets, such as brace programming and connected design, accept admiring accurate criticisms, such as the ones advancing from McBreen16 and Boehm and Turner.17 Many of the criticisms, however, are believed by Active practitioners to be misunderstandings of active development.18

In particular, acute programming is advised and critiqued by Matt Stephens's and Doug Rosenberg's Acute Programming Refactored.19

Criticisms include:

A alignment is alone as able as the humans involved, Active does not break this

Often acclimated as a agency to drain money from barter through abridgement of defining a deliverable

Lack of anatomy and all-important documentation

Only works with senior-level developers

Incorporates bereft software design

Requires affairs at common intervals at astronomic amount to customers

Requires too abundant cultural change to adopt

Can advance to added difficult acknowledged negotiations

Can be actual inefficient—if the requirements for one breadth of cipher change through assorted iterations, the aforementioned programming may charge to be done several times over. Whereas if a plan were there to be followed, a individual breadth of cipher is accepted to be accounting once.

Impossible to advance astute estimates of plan accomplishment bare to accommodate a quote, because at the alpha of the activity no one knows the absolute scope/requirements

Can access the accident of ambit edge due to the abridgement of abundant requirements documentation

Agile is affection driven; non-functional superior attributes are harder to be placed as user stories