Extreme Programmierung vs SCRUM | XP vs SCRUM
In der Softwareindustrie wurden im Laufe der Jahre eine Reihe verschiedener Softwareentwicklungsmethoden eingesetzt, z. B. Waterfall-Entwicklungsmethode, V-Model, RUP und einige andere lineare, iterative und kombinierte linear-iterative Methoden. Das Agile-Modell (oder, genauer gesagt, eine Gruppe von Methoden) ist ein neueres Softwareentwicklungsmodell, das vom Agile-Manifest eingeführt wurde, um die Mängel dieser traditionellen Softwareentwicklungsmethoden zu beheben.
Agile Methoden basieren auf iterativer Entwicklung und verwenden das Feedback der Benutzer als Hauptsteuerungsmechanismus. Agile kann als ein auf den Menschen ausgerichteter Ansatz als traditionelle Methoden bezeichnet werden. Das Agile-Modell liefert bereits sehr früh eine funktionsfähige Version des Produkts, indem es das System in sehr kleine und handhabbare Unterteile zerlegt, so dass der Kunde einige Vorteile frühzeitig erkennen kann. Die Testzykluszeit von Agile ist im Vergleich zu herkömmlichen Methoden relativ kurz, da die Tests parallel zur Entwicklung durchgeführt werden. Aufgrund all dieser Vorteile werden derzeit agile Methoden den traditionellen Methoden vorgezogen. Scrum und Extreme-Programmierung sind zwei der beliebtesten Varianten der Agile-Methode.
Was ist SCRUM??
Wie bereits erwähnt, handelt es sich bei SCRUM um einen inkrementellen und iterativen Projektverwaltungsprozess, der zur Familie der agilen Methoden gehört. SCRUM zielt darauf ab, der Kundenbeteiligung früh im Entwicklungszyklus hohe Priorität einzuräumen. Es wird empfohlen, den Kunden frühzeitig und möglichst oft zu testen. Der Test wird an jedem Punkt durchgeführt, an dem eine stabile Version verfügbar ist. Die Gründung von SCRUM basiert darauf, dass die Tests vom Projektbeginn an beginnen und bis zum Ende des Projekts andauern.
Der Schlüsselwert von SCRUM ist „Qualität ist die Verantwortung des Teams“, die betont, dass die Qualität der Software in der Verantwortung des gesamten Teams liegt (nicht nur des Testteams). Ein weiterer wichtiger Aspekt von SCRUM ist die Aufgliederung der Software in kleinere, handhabbare Teile und die schnelle Lieferung an den Kunden. Die Lieferung eines funktionierenden Produkts ist von größter Bedeutung. Dann verbessert das Team die Software kontinuierlich und liefert kontinuierlich bei jedem wichtigen Schritt. Dies wird durch sehr kurze Release-Zyklen (so genannte Sprints) und Feedback am Ende jedes Zyklus erreicht.
SCRUM definiert mehrere Schlüsselrollen für den reibungslosen Betrieb eines Entwicklungsteams. Sie sind der Product Owner (der den Kunden vertritt und den Product Backlog verwaltet), Scrum Master (der Organisator und Koordinator des Teams ist, indem er Scrum-Meetings durchführt, Sprint Backlog verwaltet und Diagramme brennt) und andere Teammitglieder. Ein Team kann aus traditionellen Rollen bestehen, aber meistens handelt es sich um Teams, die sich selbst verwalten. Haupt-Scrum-Artefakte sind Product Backlog / Release-Backlog (Wunschliste), Sprint-Backlogs / Defect-Backlogs (Aufgaben in jeder Iteration), Brennen von Diagrammen (verbleibende Arbeit vs. Datum). Die wichtigsten Zeremonien von SCRUM sind das Treffen des Product Backlog, das Sprint-Meeting und das Retrospect-Meeting.
Was ist extreme Programmierung??
Extreme Programming (abgekürzt XP) ist eine Softwareentwicklungsmethodik, die zum Agile-Modell gehört. Extreme Programmierung führt Phasen in sehr kleinen kontinuierlichen Schritten aus (im Vergleich zu herkömmlichen Methoden). Der erste Durchlauf, der nur einen Tag oder eine Woche dauert, ist absichtlich unvollständig. Um konkrete Ziele für die Entwicklung der Software zu schaffen, werden zu Beginn automatisierte Tests geschrieben. Dann machen die Entwickler die Codierung. Der Schwerpunkt liegt auf der Programmierung als Paar. Wenn alle Tests bestanden sind, gilt die Codierung als abgeschlossen. Die nächste Phase sind Design und Architektur, die sich mit dem Refactoring des Codes durch dieselbe Gruppe von Programmierern befassen. Am Ende dieser Phase wird den Stakeholdern ein unvollständiges (aber funktionales) Produkt präsentiert. Gleich danach beginnt die nächste Phase (die sich auf die nächsten wichtigen Funktionen konzentriert).
Was ist der Unterschied zwischen extremer Programmierung und SCRUM??
Extreme Programming und SCRUM sind verständlicherweise sehr ähnliche und aufeinander abgestimmte Methoden. Es gibt jedoch geringfügige, aber wichtige Unterschiede zwischen diesen beiden Methoden. SCRUM-Sprints dauern 2-4 Wochen, während typische XP-Iterationen kürzer sind (letzte 1-2 Wochen). Normalerweise lassen SCRUM-Teams keine Änderungen an Sprints zu, aber XP-Teams sind gegenüber Änderungen innerhalb von Iterationen wenig flexibler. Nach der Sprintplanung bleibt beispielsweise die Menge der Elemente dieses Sprints unverändert, aber eine Funktion, an der noch nicht gearbeitet wurde, kann jederzeit mit einer anderen Funktion in XP ausgetauscht werden. Ein weiterer Unterschied zwischen XP und SCRUM besteht darin, dass die Reihenfolge der in XP entwickelten Funktionen vom Kunden streng priorisiert wird, während das SCRUM-Team die Reihenfolge der Artikel festlegt (nachdem der Product Backlog vom Product Owner von SCRUM priorisiert wurde)..
Im Gegensatz zu XP legt SCRUM keine Konstruktionspraktiken fest. Zum Beispiel wird XP von Praktiken wie testgetriebener Entwicklung (TDD), Paarprogrammierung, Refactoring usw. angetrieben. Einige glauben jedoch, dass die Festlegung einer Reihe von Praktiken für sich selbst organisierende Teams negative Auswirkungen haben könnte, und dies kann in Betracht gezogen werden ein Manko von XP. Ein weiterer Nachteil der Extreme-Programmierung besteht darin, dass unerfahrene Teams dazu neigen, ohne automatisierte Tests oder TDD (oder einfach nur mit Hacking) zu refactorieren. Einige vermuten daher, dass SCRUM besser zum Starten geeignet ist (da es einfach durch gezielte, zeitgesteuerte Iterationen zu großen Verbesserungen führt) und XP für leicht reife Teams geeignet ist, die den Wert der oben genannten Praktiken entdeckt haben (anstatt sie zu verwenden, weil sie gefragt wurden zu tun).