190 likes | 320 Views
XP – Extreme Programming. XP in general. XP is an agile discipline of software develop -ment. It emphasis high customer satisfaction and customer involvement . When working with XP everybody works as a hole team, but the customers and the manager as well .
E N D
XP in general XP is an agile discipline of software develop-ment. It emphasishighcustomersatisfaction and customerinvolvement. Whenworking with XP everybodyworks as a hole team, but the customers and the manager as well. XP aims at short iterations, and to provide workingcode, at the end of eachiteration.
XP Values • Communication (communicationamong team members and between the team and the customer must bemaximized). • Simplicity (do the simplest thingthatcouldpossiblywork). Simplicityfavorscommunication, reduces the amount of code and improves the quality. • Feedback • Courage (communication, simplicity and feedback allow to tackle with courage evenbigchanges in requirements……) • Respect(ifmembers of a team don’tcareabouteachother and theirwork, nomethodologycanwork).
Extreme Programming Practices • Fine scale feedback - Pair Programming - Planning game - Test Driven development - Whole team • Continousprocess - Continuous integration - design involvement - small releases
Shared understanding - coding standard - collectivecodeownweship - Simple design - System Metaphor • Programmer welfare - Sustainable Pace
Coding standard • An agreed upon set of rulesthat the entiredevelopment team agree to adhere to throughout the project • A consistentstyle and format for source code
Collectivecodeownership • Everybody is responsible for all the code • Every programmer has the right to change the code
Continous Integration • The development team shouldalwaysbeworking on the latest version of the software • Upload current version to the coderepositoryeveryfewhours
Design improvement • Implement as simple as possible • Refactor the codewhenneeded - refactoring is the process of rewritinga computer program or othermaterial to improveitsstructure or readability, whileexplicitlypreservingitsmeaning or behavior.
Simple designa sharedunderstandingpractice • Programmers shouldtake a ”simple is best” approach to software design
Small Releasesa continousrocesspractice • The delivery of the software is done in predeterminedreleases (sometimescalled ”Builds”) • Ther small releases provides the customer to gainconfidence over the progress of the project.
Sustainable Pacea programmer welfarepractice • Programmers or software developers should not work more than 40 hoursweeks. • People perform best and most creativelyiftheyarerested.
System Methaphor • A namingconcept for classes and methodsthatshouldmake it easy for a team member to guess the functionality of a particularclass/method, from itsnameonly. For example a library system mat createloan_records(class) for borrowers (class), and if the item were to become overdue it may perform a make_overdue operation on a catalogue (class). For eachclass or operation the functionality is transparent to the entire team
Pair Programminga fine scale feedback practice • All code is produced by twopeopleprogramming on onetask on oneworkstation. • One programmer has control over the workstation and is thinkingmostlyabout the code in detail. • The other programmer is more focused on the bigpicture, ans is continuallyreviewing the codethat is beingproduced by the first programmer. • Programmers traderolesregularly
Planning gamea fine scale feedback practice • Release Planning - focused on determiningwharrequirementsareincluded in which release and whenit’sgoing to bedelivered. - the customers and developers areboth part of this. • Iterationplanning - plans the activities and task of the developers. In thisprocess the customer is not involved.
Planning gameRelease planning • 3 phases: - Exploration Phase: in thisphase the custo- merwill give all his requirements for the system. Thesebwillbewrittendown on user story cards- - Commitmentphase: within the commitmentphase business and developmentwillcommit themselves to the functionalitythatwillbeincluded and the date of the nextrelease. - SteeringPhase: in the steeringphase the plan canbeajusted, new requirementscanbeadded and or existingrequirementscanbe changed or removed.
Planning gameIterationplanning • 3 phases: • Exploration phase: withinthisphase the requirementwillbetranslated to differenttasks. The taskarerecorded on taskcards. • Commitmentphase: the taskswillbeassigned to the programmers and the time it takes to completewillbeestimated. • Steeringphase: the tasksareperformed and the end result is matched with the original user story.
Test driven developmenta fine scale feedback practice • Unit test arewrittenbefore the eventualcode is coded. • Intended to stimulate the programmer to thinkaboutconditions in which his or her codecouldfail
Whole teama fine scale feedback practice • The ”customer” is not the onewhopays the bill, but onewhowillreallyuses the system • The customershouldbe at hand at all times and available for questions.