Scrum - Übersicht
Agile ist zu einem der wichtigsten Schlagworte in der Softwareentwicklungsbranche geworden. Aber was genau ist agile Entwicklung? Einfach ausgedrückt ist agile Entwicklung eine andere Art, Softwareentwicklungsteams und -projekte auszuführen.
Um zu verstehen, was neu ist, lassen Sie uns die traditionellen Methoden zusammenfassen. Bei der herkömmlichen Softwareentwicklung werden die Produktanforderungen festgelegt, bevor mit der Entwicklung fortgefahren wird.
Wasserfall-Modell
Das am häufigsten verwendete Softwareentwicklungsmodell mit dieser Eigenschaft ist das Wasserfallmodell, wie in der folgenden Abbildung dargestellt. In den meisten Fällen werden jedoch neue Funktionen hinzugefügt, und auch frühere Anforderungen können sich ändern. Das Wasserfallmodell ist nicht so strukturiert, dass es solchen kontinuierlichen Änderungen der Anforderungen Rechnung trägt. Darüber hinaus hat der Benutzer keine Klarheit über die Funktionalität des Produkts, bis das Produkt vollständig verfügbar ist.
Iteratives inkrementelles Modell
Im iterativen inkrementellen Modell beginnt die Entwicklung mit einer begrenzten Anzahl finalisierter und priorisierter Anforderungen. Das Ergebnis ist ein Arbeitsschritt des Produkts. Eine Reihe von Aktivitäten, die von Anforderungen bis zur Codeentwicklung reichen, werden als Iteration bezeichnet. Basierend auf der Funktionalität des Inkrements und einigen oder allen neuen, geänderten, ausstehenden Anforderungen wird die nächste Menge von Anforderungen an die nachfolgende Iteration übergeben. Das Ergebnis der nachfolgenden Iteration ist ein verbessertes Arbeitsinkrement des Produkts. Dies wird wiederholt, bis das Produkt die erforderlichen Funktionen erfüllt.
Der Benutzer ist normalerweise nicht an der Entwicklungsarbeit beteiligt und kann Kommunikationslücken verursachen, die zu falschen Funktionen führen. Das Engagement ist positiv für das Entwicklungsteam, stellt jedoch hohe Anforderungen an die Zeit des Teams und kann zu Verzögerungen führen. Darüber hinaus können informelle Anforderungsänderungen während einer Iteration zu Verwirrung führen und auch zu Scope Creeps führen. Mit dieser Prämisse entstand die agile Entwicklung.
Agile Entwicklung
Die agile Entwicklung basiert auf einer iterativen inkrementellen Entwicklung, bei der sich Anforderungen und Lösungen durch Teamzusammenarbeit entwickeln. Es empfiehlt einen iterativen Ansatz mit Zeitrahmen und fördert eine schnelle und flexible Reaktion auf Änderungen. Es ist ein theoretischer Rahmen und legt keine bestimmte Praxis fest, der ein Entwicklungsteam folgen sollte. Scrum ist ein spezifisches agiles Prozess-Framework, das die zu befolgenden Praktiken definiert.
Zu den frühen Implementierungen agiler Methoden gehören Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997) und Dynamic Systems Development Method (DSDM) (1995). Diese werden nun gemeinsam als bezeichnetagile methodologies, nachdem das Agile Manifest im Jahr 2001 veröffentlicht wurde.
Agiles Manifest
Das Agile Manifest wurde 2001 von einem Team von Softwareentwicklern veröffentlicht. Es unterstreicht die Bedeutung, die dem Entwicklungsteam beigemessen werden muss, um den sich ändernden Anforderungen und der Kundenbeteiligung gerecht zu werden.
Das Agile Manifest lautet wie folgt:
„Wir entdecken bessere Möglichkeiten für die Entwicklung von Software, indem wir dies tun und anderen dabei helfen. Durch diese Arbeit haben wir Wert geschaffen:
- Individuen und Interaktionen über Prozesse und Werkzeuge
- Arbeitssoftware über umfassende Dokumentation
- Kundenzusammenarbeit über Vertragsverhandlungen
- Antworten auf Umstellung nach einem Plan
Das heißt, während die Elemente auf der rechten Seite einen Wert haben, schätzen wir die Elemente auf der linken Seite mehr. "
… Manifest für agile Softwareentwicklung, Autoren: Beck, Kent, et al. (2001)
Definition von agilen Manifestelementen
Die Manifestelemente auf der linken Seite können wie folgt beschrieben werden:
Manifest Item | Beschreibung |
---|---|
Individuen und Interaktionen | Wichtigkeit muss gegeben werden für:
|
Arbeitssoftware | Die Lieferung von Arbeitssoftware in kurzen Intervallen trägt dazu bei, das Vertrauen und die Sicherheit der Kunden im Team zu gewinnen. |
Kundenzusammenarbeit | Die ständige Einbeziehung des Kunden in das Entwicklungsteam stellt die Kommunikation der erforderlichen Änderungen sicher. |
Auf Veränderungen reagieren | Konzentrieren Sie sich auf eine schnelle Reaktion auf die vorgeschlagenen Änderungen, die durch Iterationen von kurzer Dauer ermöglicht wird. |
Das Schlüsselelement des Agilen Manifests ist, dass wir den Menschen und ihrer Fähigkeit zur Zusammenarbeit vertrauen müssen. Aus diesem Grund nutzen die entwickelten spezifischen agilen Methoden die Fähigkeiten der Teammitglieder, indem sie Teamarbeit und Zusammenarbeit während des gesamten Lebenszyklus des Projekts hervorheben.
Schlüsselprinzipien von Agile
Das Agile Manifest basiert auf folgenden Prinzipien:
Prinzip | Beschreibung |
---|---|
Zufriedenheit und Lieferung | Kundenzufriedenheit durch frühzeitige und kontinuierlich arbeitende Software. |
Veränderung begrüßen | Begrüßen Sie sich ändernde Anforderungen auch in späteren Entwicklungsstadien. |
Häufig liefern | Stellen Sie häufig funktionierende Software bereit (wöchentlich statt monatlich). |
Kommunikation ist der Schlüssel | Stellen Sie sicher, dass Entwickler täglich eng mit Geschäftsleuten verbunden sind. |
Umwelt und Vertrauen | Bauen Sie Projekte um motivierte Personen auf. Geben Sie ihnen die notwendige Unterstützung und vertrauen Sie ihnen. |
Kommunikation von Angesicht zu Angesicht | Ermutigen Sie zu persönlichen Gesprächen, um eine effiziente und effektive Kommunikation sicherzustellen. |
Software als Maß für den Fortschritt | Arbeitssoftware ist das Hauptmaß für den Fortschritt. |
Nachhaltige Entwicklung | Förderung einer nachhaltigen Entwicklung mit der Fähigkeit, während der gesamten Entwicklung ein konstantes Tempo beizubehalten. |
Liebe zum Detail | Kontinuierliche Aufmerksamkeit für technische Exzellenz und gutes Design. |
Die Kraft von weniger | Einfachheit ist wichtig. |
Selbstorganisierende Teams | Regelmäßige Aufmerksamkeit des Teams, um unter sich ändernden Umständen effektiv zu werden. |
Agile Methoden
Dynamische Systementwicklungsmethode (DSDM)
Es ist ein agiles Framework für Softwareprojekte. Es wurde verwendet, um die traditionellen Ansätze zu verfeinern. Die neueste Version von DSDM heißt DSDM Atern. Der Name Atern ist eine Abkürzung für Arctic Tern - ein Seevogel, der große Entfernungen zurücklegen kann und viele Merkmale der Methode darstellt, die natürliche Arbeitsweisen wie Priorisierung und Zusammenarbeit sind.
Gedränge
Es ist das beliebteste agile Framework, das sich insbesondere auf die Verwaltung von Aufgaben in einer teambasierten Entwicklungsumgebung konzentriert. Scrum verwendet ein iteratives und inkrementelles Entwicklungsmodell mit einer kürzeren Iterationsdauer. Scrum ist relativ einfach zu implementieren und konzentriert sich auf schnelle und häufige Lieferungen.
Extreme Programmierung (XP)
Es ist eine Art agile Softwareentwicklung. Es befürwortet häufige Releases in kurzen Entwicklungszyklen, um die Produktivität zu verbessern und Checkpoints einzuführen, an denen neue Kundenanforderungen übernommen werden können. Die Methodik hat ihren Namen von der Idee, dass die nützlichen Elemente traditioneller Softwareentwicklungspraktiken auf ein extremes Niveau gebracht werden. (Extreme Programming ist eine Softwareentwicklungsdisziplin, die Menschen dazu organisiert, qualitativ hochwertigere Software produktiver zu produzieren.) XP adressiert die Analyse-, Entwicklungs- und Testphasen mit neuartigen Ansätzen, die einen wesentlichen Unterschied zur Qualität des Endprodukts bewirken.
Testgetriebene Entwicklung (TDD)
Es ist ein Softwareentwicklungsprozess, der auf der Wiederholung eines sehr kurzen Entwicklungszyklus beruht: Zuerst schreibt der Entwickler einen automatisierten Testfall, der eine gewünschte Verbesserung oder eine neue Funktion definiert, dann erzeugt er die geringste Menge an Code, um diesen Test zu bestehen, und Endlich bringt der neue Code akzeptable Standards.
Lehnen
Es ist eine Produktionspraxis, die den Ressourcenverbrauch für ein anderes Ziel als die Wertschöpfung für den Endkunden als verschwenderisch und damit als Ziel für die Beseitigung betrachtet. Aus der Sicht des Kunden, der ein Produkt oder eine Dienstleistung konsumiert, wird der Begriff Wert als jede Handlung oder jeder Prozess definiert, für die ein Kunde bereit wäre zu zahlen. Lean konzentriert sich darauf, mit weniger Arbeit Wert zu erhalten.
Kanban
Es ist ein System zur Verbesserung und Aufrechterhaltung eines hohen Produktionsniveaus. Kanban ist eine Methode, mit der Just-In-Time (JIT), die Strategie der Unternehmen zur Kontrolle der Bestandskosten, erreicht wird. Kanban wurde zu einem wirksamen Instrument zur Unterstützung des Betriebs eines gesamten Produktionssystems und erwies sich als hervorragende Möglichkeit, Verbesserungen zu fördern.
Fazit
In den letzten 10 Jahren gab es immer mehr Erfolgsgeschichten, in denen Unternehmen den Erfolg und die Leistung ihrer IT-Entwicklungsteams und -Projekte mit agilen Praktiken dramatisch verbessert haben. Dies hat dazu geführt, dass Agilität in einer Vielzahl von Branchen, einschließlich Medien und Technologie, großen Unternehmen und sogar der Regierung, weit verbreitet ist.
Mit Agile Framework können Teams von folgenden Vorteilen profitieren:
- Schnellere Lieferzeit / Vermarktung
- Unsicherheit und Risiko reduzieren
- Steigern Sie den Return on Investment (ROI), indem Sie sich auf den Kundennutzen konzentrieren
Unter diesen verschiedenen agilen Methoden hat sich Scrum in den letzten 20 Jahren weltweit als äußerst erfolgreich erwiesen.