Extreme Programming

Extreme Programming eller XP som det även kallas är en utvecklingsmetod som bryter mot många av de mer traditionella systemutvecklingsmetoderna som finns. Idén till XP föddes i början av nittiotalet då Kent Beck tillsammans med en kollega upplevde att de hade ett nytt koncept för systemutveckling på gång, ett koncept som var både enklare och effektivare än de befintliga utvecklingsmetoderna.

Vad är XP?
XP är en nischmetod om man kan uttrycka det så, en metod som ställer höga krav på projektledningen men framförallt på kunden eftersom XP kräver att kunden är delaktig under hela utvecklingsprocessen. XP har både för- och nackdelar, det gäller således att använda XP där det passar bäst. Generellt lämpar sig XP bäst till utveckling av små system i projekt med få deltagare.

I XP har man skalat bort eller förenklat många av de faser som vanligtvis ingår i ett systemutvecklingsprojekt, som till exempel behovsanalys, kravanalys, arkitektur och design. Istället har man komprimerat utvecklingscykeln så att delmålen kan uppnås betydligt snabbare än i ett vanligt utvecklingsprojekt, till och med snabbare än i ett RAD-projekt. Genom att komprimera en utvecklingscykel till mellan en och fyra veckor kan man uppnå extremt snabba resultat vilket även reducerar behovet av en mer detaljerad systemdesign, eftersom fel i systemet kan upptäckas tidigare än i ett vanligt utvecklingsprojekt, där det färdiga systemet kanske acceptanstestas först efter flera månader. Det designarbete som väl utförs integreras som en del av utvecklingscykeln. Inom varje utvecklingscykel har man sedan iterationer med design, programmering och test av programkoden. Iterationerna är extremt korta, ibland minuter eller timmar.

De stora skillnaderna
En annan viktig skillnad mellan ett vanligt utvecklingsprojekt och ett XP-projekt är att man, i ett XP-projekt, lägger ned betydligt mindre resurser på en grundlig projektplanering i början av projektet. Inom XP betonar man istället flexibilitet och förmågan att snabbt kunna planera om inom projektet, ibland varje dag om så behövs. Motståndarna till XP hävdar att planeringen i ett XP-projekt blir väldigt adhoc-mässig och lite oseriös medans XPs anhängare menar att för stora och detaljerade projektplaner i början av utvecklingsprojekt tenderar att låsa projektets resurser i en orealistisk plan som projektledaren, av rädsla för att bryta tidplanen, riskerar att hålla fast vid trots att planen skulle behöva revideras och planeras om.

En förutsättning för att XP skall fungera är att kunden eller beställaren av systemet arbetar tillsammans med utvecklarna i utvecklingsprojektetet, helst heltid och fullt dedikerad till projektet. Kunden skall representera sin organisation och kunna ta både affärsbeslut och tekniska beslut för att driva projektet framåt samt besvara frågor som kan uppstå under utvecklingens gång. Kundens konstanta närvaro gör även att tolkningsfel av kraven och så kallad Gold Plating (se avsnitt om RAD) kan undvikas.

Ett annat av kundens ansvarsområden är att avgränsa systemet vid behov.
I XP är det planerade releasedatumet alltid konstant dvs man skjuter aldrig på en tidplan för att hinna få med all funktionalitet i releasen. En vanlig mening i utvecklingsprojekt är ’Jag har inte tillräckligt med tid’. Att inte ha tillräckligt med tid är enligt XP en faktor som ej går att påverka, så bara tanken representerar en negativ inställning. Man har ju endast ett fast antal timmar per dygn att arbeta på. Om man istället säger ’Jag har för mycket att göra’ så har man istället vänt på problematiken, för man kan ju alltid avgränsa sig i sina aktiviteter.

Detta är en av XPs grundtankar, att avgränsa projektet hårt, att stryka funktionalitet för att hinna med att leverera i tid. Fördelarna är att man faktiskt håller tidplanen vilket är psykologiskt viktigt både för kunden och utvecklarna samtidigt som vissa avgränsningar faktiskt blir lättare att göra under tidspress vilket optimerar systemet. Väldigt ofta visar det sig att den avgränsade funktionaliteten ej kommer att saknas i den releasade versionen.

Nackdelen är förstås att för många avgränsningar resulterar i ett ofärdigt system eller i värsta fall ett system som inte fungerar. Det finns förstås gränsvärden för hur mycket funktionalitet som kan strykas innan projektets kvalité påverkas. Om restlistan blir allt för stor måste en mer drastisk omplanering av projektet göras.

Kravhantering
Även begreppen inom kravhanteringen är något annorlunda i XP. Man väljer till exempel att kalla en grupp av sammansatta krav för Story. En Story skall helst bara bestå av en eller ett par meningar som beskriver ett önskat händelseförlopp i klartext.

Exempel på Story:
Systemet skall göra en stavningskontroll i adressfältet då användaren klickar på Submit. Resultatet av stavningskontrollen skall visas i programmets statusrad.

En mer detaljerad specifikation är ej nödvändig då kunden arbetar så tätt med utvecklarna. Eventuella frågor kan alltså tas direkt innan fortsatt utveckling och testarbete. Kravet på en Story är att den är oberoende, testbar och att den tillför ett tydligt värde. Stories skall göras så pass små och lättbegripliga att ett flertal kan utvecklas och testas inom varje iteration. Ett tecken på att en Story är för stor eller svårbegriplig är att utvecklaren har svårt att räkna ut tidsåtgången för utvecklingen, han måste då bryta ned den för att lättare kunna räkna ut tidsåtgången.

Parprogrammering
Den metoden som man starkast förknippar med XP är dock par-programmeringen. Genom att alltid låta två programmerare sitta tillsammans kan man höja kvalitén genom att både kodning och granskning sker samtidigt av fyra ögon istället för två. Tekniska frågor kan alltid tas upp med kollegan som sitter bredvid istället för att behöva vänta till nästa utvecklingsmöte. En annan fördel med att sitta parvis är att koden blir mindre personlig. Ett vanligt fenomen bland programmerare är att de anser att koden är deras personliga egendom och att de på ett nästan artistiskt sätt har utvecklat koden. Följderna blir ofta att all kritik mot koden blir en personlig kritik mot programmeraren, vilket i sin tur kan bidra till att försämra stämningen i ett utvecklingsprojekt. Detta fenomen blir tydligt då programmeraren får sitta och arbeta själv med sin kod under längre perioder.
Genom att sitta parvis i väldigt korta utvecklingsiterationer undviker man alltså att programmeraren får ett känslomässigt band till koden.

Sammanfattning
Sammanfattningsvis är XP en utvecklingsmetod som långt ifrån passar alla. XP kräver mycket av beställaren och man måste vara beredd att arbeta väldigt annorlunda från ett vanligt utvecklingsprojekt. Fördelarna är dock tydliga med extremt korta utvecklingscykler och en mycket snabb omsättning från idé till verklighet, exempelvis vid produktutveckling.
Mandrillo Consulting erbjuder projektledning med XP som utvecklingsmetod för kunder som känner att de vill ta steget mot ett nytt sätt att utveckla programvara, med en mer person- och relationsorienterad metod.