Extrem programmering vs SCRUM | XP vs SCRUM
Det har funnits ett antal olika metoder för mjukvaruutveckling som har använts i mjukvaruindustrin genom åren, såsom utvecklingsmetod för vattenfall, V-modell, RUP och få andra linjära, iterativa och kombinerade linjär-iterativa metoder. Agile-modellen (eller mer korrekt, en grupp metoder) är en nyare programvaruutvecklingsmodell som introducerades av Agile-manifestet för att åtgärda bristerna i dessa traditionella programvaruutvecklingsmetoder.
Agila metoder baseras på iterativ utveckling och använder feedbacken från användarna som huvudkontrollmekanism. Agile kan kallas ett folkcentrerat tillvägagångssätt än traditionella metoder. Agile-modellen levererar en fungerande version av produkten mycket tidigt genom att bryta ner systemet i mycket små och hanterbara underdelar, så att kunden kan inse några av fördelarna tidigt. Testcykeltiden för Agile är relativt kort jämfört med traditionella metoder, eftersom testning görs parallellt med utveckling. På grund av alla dessa fördelar föredras Agile-metoder framför traditionella metoder just nu. Scrum och Extreme-programmering är två av de mest populära variationerna av Agile-metoder.
Vad är SCRUM?
Som nämnts ovan är SCRUM en inkrementell och iterativ projektledningsprocess som tillhör familjen Agile-metoder. SCRUM bygger på att prioritera kunddeltagande tidigt i utvecklingscykeln. Det rekommenderar att testet införs av kunden tidigt och ofta som möjligt. Testning görs vid varje punkt när en stabil version blir tillgänglig. Grunden för SCRUM är baserad på att starta testning från början av projektet och fortsätta till slutet av projektet.
Nyckelvärdet för SCRUM är "kvalitet är teamets ansvar", vilket betonar att kvaliteten på programvaran är hela teamets ansvar (inte bara testteamet). En annan viktig aspekt av SCRUM är att bryta ner programvaran till mindre hanterbara delar och leverera dem till kunden mycket snabbt. Att leverera en fungerande produkt är av yttersta vikt. Sedan fortsätter teamet att förbättra programvaran och leverera kontinuerligt vid varje större steg. Detta uppnås genom att ha mycket korta släppcykler (kallas sprints) och få feedback för förbättringar i slutet av varje cykel.
SCRUM definierar flera nyckelroller för att ett utvecklingsteam ska fungera smidigt. De är produktägaren (som representerar kunden och upprätthåller produktens eftersläpning), Scrum master (som fungerar som organisatör och samordnare av teamet genom att genomföra scrummöten, upprätthåller sprintbackloggen och bränner ner diagram) och andra teammedlemmar. Ett lag kan bestå av traditionella roller, men mestadels är de självstyrande team. Huvudsakliga Scrum-artefakter är eftersläp i produkt / eftersläpp (önskelista), sprint-eftersläp / defekt eftersläp (uppgifter i varje iteration), nedbrända diagram (arbete kvar mot datum). De viktigaste SCRUM-ceremonierna är eftersläpsmöten, Sprint-möte och Retrospect-möte.
Vad är extrem programmering?
Extreme Programming (förkortad XP) är en metod för mjukvaruutveckling som tillhör Agile-modellen. Extrem programmering utför faser i mycket små kontinuerliga steg (jämfört med traditionella metoder). Det första passet, som bara tar en dag eller en vecka, är medvetet ofullständigt. För att ge konkreta mål för att utveckla programvaran skrivs automatiserade tester i början. Sedan gör utvecklarna kodningen. Fokus ligger på att göra programmering som par. När alla tester är klara anses kodningen vara fullständig. Nästa fas är design och arkitektur, som handlar om refactoring av koden av samma uppsättning programmerare. I slutet av denna fas presenteras ofullständig (men funktionell) produkt för intressenterna. Strax efter detta börjar nästa fas (som fokuserar på nästa uppsättning viktigaste funktioner).
Vad är skillnaden mellan Extreme Programming och SCRUM?
Extreme Programming och SCRUM är förståeligt mycket likartade och anpassade metoder. Det finns dock subtila men viktiga skillnader mellan dessa två metoder. SCRUM sprints varar i 2-4 veckor, medan typiska XP-iterationer är kortare (senaste 1-2 veckor). Vanligtvis tillåter inte SCRUM-team ändringar i sprints, men XP-team är lite mer flexibla för förändringar inom iterationer. Till exempel, efter sprintplaneringen, förblir uppsättningen objekt i den sprinten oförändrad, men en funktion som inte har börjat fungera kan när som helst bytas mot någon annan funktion i XP. En annan skillnad mellan XP och SCRUM är att ordningen på funktioner som utvecklats i XP är en strikt prioriterad en av kunden, medan SCRUM-teamet bestämmer ordningen på artiklarna (efter att produktbackloggen prioriteras av SCRUMs produktägare).
Till skillnad från XP fastställer SCRUM inga tekniska metoder. Till exempel drivs XP av metoder som testdriven utveckling (TDD), parprogrammering, refactoring, etc. Men vissa tror att det att kräva en uppsättning metoder för självorganiserande team kan ha en negativ inverkan, och detta kan övervägas en brist på XP. En annan brist i Extreme-programmering är att oerfarna team tenderar att refaktorera utan några automatiska tester eller TDD (eller helt enkelt hacka). Därför föreslår vissa att SCRUM är bättre att stirra på (eftersom det ger stora förbättringar helt enkelt genom fokuserade tidsboxade iterationer) och XP är lämplig för lite mogna lag som har upptäckt värdet av ovan nämnda metoder (snarare än att använda dem eftersom de har blivit ombedd att göra så).