Guten Tag. Bei den letzten beiden Interviews wurde ich nach Methoden gefragt. Dies ist nicht die wichtigste oder schwierigste Frage, aber es wäre schön, einen Spickzettel für die Antwort zu haben. In diesem Artikel werde ich versuchen, eine Vorstellung davon zu vermitteln, was eine Entwicklungsmethodik ist, und diejenigen vergleichen, die ich persönlich kennengelernt habe oder nach denen ich gefragt wurde. Die Softwareentwicklungsmethodik ist ein Prozess zur Beschreibung, wie ein bestimmtes Produkt entwickelt wird, d. h. eine der Möglichkeiten, die Teamentwicklung zu organisieren. Es gibt viele verschiedene Modelle eines solchen Prozesses, von denen jedes seinen eigenen Ansatz beschreibt, und man kann nicht sagen, dass es eines davon gibt, das in jedem Projekt verwendet werden sollte, alles ist rein situativ. Ich schlage vor, drei davon genauer zu betrachten.
Wasserfall
Wasserfall (Kaskade, Wasserfall) ist eine der ältesten Methoden und impliziert die strikte sequentielle Umsetzung aller Phasen, von denen jede abgeschlossen sein muss, bevor die nächste beginnt. Das heißt, der Übergang zur nächsten Stufe bedeutet den vollständigen Abschluss der Arbeiten an der vorherigen Stufe. Das Bild zeigt, dass wir zuerst die Aufgabe analysieren (Aufgaben dokumentieren, Schwierigkeiten besprechen), dann das Design durchführen (in dieser Phase wird die Projektstruktur gebildet), dann codieren und testen. Für nachfolgende Etappen gibt es keine Rückerstattung. Es empfiehlt sich, ein solches System bei kleinen Projekten einzusetzen, bei denen die Anforderungen im Voraus bekannt sind und eine geringe Wahrscheinlichkeit besteht, dass sie sich ändern. Vorteile:- Vollständige und konsistente Dokumentation in jeder Phase;
- Benutzerfreundlichkeit;
- Stabile Anforderungen.
- Budget und Termine sind vorgegeben
- Eine große Menge an Dokumentation;
- Kein sehr flexibles System;
- Der Kunde kann die Demoversion des Produkts nicht sehen;
- Es gibt keine Möglichkeit, einen Schritt zurück zu gehen.
Gedränge
Scrum ist ein Softwareentwicklungssystem, das auf der Aufteilung des gesamten Prozesses in Iterationen basiert, wobei am Ende jeder Iteration das Team bereit ist, eine Demoversion des Produkts bereitzustellen. Das Bild zeigt, dass das Team alle Phasen der Entwicklung parallel durchläuft, sodass wir am Ende jeder Iteration einen fertigen Teil des Projekts haben können. Ich werde versuchen, das Wesentliche der Methodik kurz und in einfachen Worten zu erklären, aber es gibt hier viele Begriffe. Ich denke, das Wichtigste ist, das Wesentliche zu verstehen, und die Begriffe werden mit der Erfahrung im Gedächtnis bleiben. Die gesamte Entwicklung ist in Sprints unterteilt (oft 2-3 Wochen). Es gibt ein Backlog (Aufgabenliste) für den gesamten Entwicklungszeitraum und für jeden Sprint separat. Jede Aufgabe hat ihren eigenen Story Point (Schwierigkeitsgrad). Jeder Prozessbeteiligte hat eine Rolle:- Ein Scrum-Team ist ein Team, das an einem Projekt arbeitet (Entwickler, Tester, Designer).
- Ein Scrum Master ist eine Person, die dafür sorgt, dass die Prinzipien von Scrum befolgt werden.
- Product Owner – Kunde.
- Stand-up ist ein kurzes Meeting, das jeden Tag stattfindet, an dem alle Teammitglieder teilnehmen und jeder Teilnehmer drei Fragen beantwortet: Was haben Sie gemacht? Was wird es tun? Und was sind die Blocker?
- Planung – findet zu Beginn des Sprints statt und bei diesem Treffen wird festgelegt, welche Aufgaben im nächsten Sprint erledigt werden sollen.
- Am Ende des Sprints findet eine Retrospektive statt, deren Kern darin besteht, herauszufinden, was gut gemacht wurde und was verbessert werden könnte.
- Der Kunde kann das Ergebnis während des Entwicklungsprozesses beobachten.
- Tägliche Kontrolle über den Entwicklungsprozess.
- Möglichkeit, während der Entwicklung Anpassungen vorzunehmen.
- Gut etablierte Kommunikation mit allen Teammitgliedern.
- Wenig Dokumentation.
- Der Arbeits- und Kostenaufwand für die Entwicklung lässt sich nur schwer abschätzen
- Es ist schwierig, die größten Engpässe vor Beginn der Entwicklung zu ermitteln.
- Die Notwendigkeit, jeden in die Entwicklung anderer Teammitglieder einzubeziehen.
Kanban
Kanban ist ein System, das auf der Visualisierung des Prozesses der Erledigung von Teamaufgaben basiert. Die Hauptidee dieses Systems besteht darin, die Anzahl der aktuell ausgeführten Aufgaben (in der Spalte „in Bearbeitung“) zu reduzieren. Bei Scrum konzentriert sich das Team auf den erfolgreichen Abschluss von Sprints, bei Kanban stehen Aufgaben an erster Stelle. Gut für Projekte, die sich in der Supportphase befinden, bei denen die Hauptfunktionalität bereits entwickelt wurde und nur minimale Verbesserungen und Fehlerbehebungen verbleiben. Bei Kanban werden Aufgaben einzeln eingereicht. Die Aufgabe durchläuft unabhängig von anderen Aufgaben alle Phasen auf der Tafel und kann, sobald sie erledigt ist, dem Kunden gezeigt werden. Ein Kanban-Board besteht aus Spalten, die jeweils einen separaten Entwicklungsprozess darstellen. In einigen Spalten (z. B. in Bearbeitung) gibt es Beschränkungen hinsichtlich der Anzahl der Aufgaben, die dort vorhanden sein können. Dies hilft, Problembereiche in der Aufgabenverteilung einfach und schnell zu finden. Das Bild zeigt ein Beispiel für eine solche einfache Platine. Die Anzahl der Spalten und Namen kann variieren, ich nenne jedoch die gebräuchlichsten:- Zu erledigen – eine Liste der Aufgaben, die erledigt werden müssen
- In Bearbeitung – Aufgaben, an denen gerade gearbeitet wird
- Codeüberprüfung – Aufgaben, die abgeschlossen und zur Überprüfung gesendet wurden
- Im Test – Aufgaben bereit zum Testen
- Fertig – erledigte Aufgaben.
- Benutzerfreundlichkeit.
- Visualisierung (hilft beim Auffinden von Engpässen, vereinfacht das Verständnis)
- Hohe Einbindung des Teams in den Prozess selbst.
- Hohe Flexibilität in der Entwicklung.
- Instabile Aufgabenliste.
- Bei langfristigen Projekten schwierig anzuwenden.
- Keine harten Fristen.
GO TO FULL VERSION