Warum (und wie) Sie funktionsorientierte Entwicklung verwenden sollten
Lesedauer: etwa 7 Min.
Wenn Sie an agile Methodiken denken, kommt Ihnen wahrscheinlich Scrum in den Sinn. Das ist naheliegend, da Scrum von Projektmanagement- und Entwicklungsteams in den letzten 13 Jahren als beliebteste Methodik genannt wurde.
Scrum mag zwar die beliebteste Methodik sein, aber ein Blick auf den jährlichen „State of Agile Report“ zeigt, dass auch andere Methoden wie Kanban oder eine Mischform aus Scrum und anderen Ansätzen an Popularität gewonnen haben. Eine dieser anderen Methodiken ist die funktionsorientierte Entwicklung (Feature-Driven Development, kurz: FDD).
Die funktionsorientierte Entwicklung wird möglicherweise nicht so viel diskutiert oder angewandt wie andere agile Methodiken, aber ein Blick darauf lohnt sich allemal – insbesondere, wenn Sie Ihre agile Entwicklung auf ein langfristiges Projekt mit einem großen Team skalieren müssen.
Was ist funktionsorientierte Entwicklung?
Im Jahr 1997 arbeitete Jeff De Luca als Mitglied eines fünfzigköpfigen Teams an einem fünfzehnmonatigen Softwareentwicklungsprojekt in Singapur. Da er dem Entwicklungsteam ermöglichen wollte, sich besser an Kundenbedürfnisse anzupassen und auf diese eingehen zu können, arbeitete er ein Entwicklungsmodell mit fünf Schritten aus, bei dem die Realisierung von Funktionen in kurzen Abständen erfolgt.
Scrum, XP und andere agile Methodiken basieren alle auf einem iterativen Ansatz zur Bereitstellung von Software. Im Gegensatz dazu muss das Team im Rahmen der fünf Schritte der FDD während der Entwicklung kleiner Funktionsgruppen in ein- bis zweiwöchigen Abständen eine Reihe von technischen Best Practices befolgen. Diese fünf Schritte stellen sicher, dass ein konsistenter Entwicklungsfortschritt gegeben ist, um das Projektwachstum zu gewährleisten und eine schnellere Einarbeitung neuer Teammitglieder zu ermöglichen.
Best Practices für funktionsorientierte Entwicklung
Auf die fünf Schritte des FDD Projektlebenszyklus gehen wir später in diesem Artikel ein. Zunächst ist es wichtig, die Kernprinzipien zu verstehen, die im Rahmen der funktionsorientierten Entwicklung festgelegt wurden.
- Modellierung von Domainobjekten: Teams erstellen Klassendiagramme, um Objekte in einer Domain und die Beziehungen zwischen ihnen zu beschreiben. Dieser Prozess spart Zeit, da Sie dabei herausfinden, welche Funktion Sie für welches Feature hinzufügen müssen.
- Entwicklung nach Funktionen: Wenn ein Feature nicht innerhalb von zwei Wochen implementiert werden kann, sollte es in kleinere, überschaubare Funktionen aufgeteilt werden.
- Individuelle Verantwortung von Klassen (Codes): Jede Klasse oder Gruppe von Codes wird einer einzigen verantwortlichen Person zugewiesen.
- Funktionsteams: Obwohl eine Person für die Leistung und Qualität jeder Klasse verantwortlich ist, kann eine Funktion mehr als eine Klasse umfassen. Das bedeutet, dass alle Mitglieder des Funktionsteams zu den Design- und Implementierungsentscheidungen beitragen.
- Inspektionen: FDD Teams führen Inspektionen durch, um Mängel zu erkennen und die beste Qualität zu gewährleisten.
- Konfigurationsmanagement: Bei dieser Vorgehensweise werden Quellcodes für alle Funktionen identifiziert und Änderungen dokumentiert.
- Regelmäßige Builds: Diese Best Practice stellt sicher, dass dem Team immer ein aktuelles System zur Verfügung steht, das dem Kunden vorgeführt werden kann.
- Fortschrittsberichte: Die Projektleitung sollte regelmäßige Fortschrittsberichte über abgeschlossene Arbeit vorlegen.
Erfahren Sie mehr über die Modellierung von Domainobjekten und nutzen Sie unsere kostenlose Vorlage.
Jetzt testenMitglieder des FDD Teams
Das FDD Modellierungsteam vereint die folgenden Schlüsselpositionen:
- Der Projektleiter überwacht das gesamte Projekt.
- Der Chefarchitekt ist für den generellen Entwurf und die Modellierung des Systems zuständig. Der Chefarchitekt arbeitet mit anderen qualifizierten Entwicklern in der Planungsphase des Entwicklungszyklus zusammen.
- Der Entwicklungsleiter führt und betreut das Entwicklungsteam und überwacht die alltäglichen Programmieraktivitäten.
- Der Chefprogrammierer hilft bei der Analyse und dem Entwurf und kann auch kleinen Entwicklungsteams als Manager zugewiesen werden.
- Die für die Klassen verantwortliche Person ist ein Mitglied der kleineren Entwicklungsteams, die vom Chefprogrammierer geleitet werden. Zu den Zuständigkeiten gehören das Entwerfen, Codieren, Testen und Dokumentieren von Funktionen.
- Der Domainexperte ist Mitglied eines Teams, der das Problem kennt, das für den Kunden gelöst werden soll. Die Entwickler verlassen sich bei ihrer Arbeit auf das Wissen des Domainexperten, um den Kundenerwartungen stets gerecht zu werden.
Gründe für funktionsorientierte Entwicklung
Sie sollten die FDD Methodik in Erwägung ziehen, sobald Ihr Projekt zu groß und komplex für kleinere Scrum Teams wird, der Arbeitsaufwand also nicht mehr effektiv bewältigbar ist. Diese agile, funktionsorientierte Methodik eignet sich gut für langfristige Projekte, bei denen in regelmäßigen, vorhersehbaren Abständen Funktionen kontinuierlich geändert und erweitert werden.
Die FDD Methodik ist von Kleingruppen bis hin zu großen funktionsübergreifenden Teams sehr gut skalierbar, da hier der Fokus konzeptionsgemäß auf den Bedürfnissen und Wünschen des Kunden liegt.
Vorteile funktionsorientierter Entwicklung
- Vermittelt dem Team ein sehr gutes Verständnis des Projektumfangs und -kontextes.
- Erfordert weniger Meetings. Eine der Klagen, die in der agilen Methodik häufig geäußert wird, ist die zu hohe Anzahl von Meetings. Bei Scrum werden täglich Meetings abgehalten, um Kommunikation zwischen Teams zu ermöglichen. Bei FDD erfolgt die Kommunikation anhand der Dokumentation.
- Basiert auf einem nutzerorientierten Ansatz. Bei Scrum gilt der Produktmanager in der Regel als Endbenutzer. Bei FDD ist der Kunde der Endnutzer.
- Funktioniert gut bei großen, langfristigen oder fortlaufenden Projekten. Diese Methodik ist besonders skalierbar und kann mit dem Wachstum Ihres Unternehmens und des Projekts Schritt halten. Die fünf klar definierten Schritte erleichtern es neuen Teammitgliedern oder Mitarbeitenden, sich sehr schnell in das Projekt einzuarbeiten.
- Unterteilt Funktionsgruppen in kleinere Einheiten und regelmäßige iterative Releases. Codierungsfehler können so einfacher ermittelt und behoben werden. Das Risikopotenzial sinkt und Kundenanforderungen können erfüllt werden, da eine schnelle Umsetzung gewährleistet ist.
Nachteile funktionsorientierter Entwicklung
- Für kleinere Projekte ist die FDD Methodik nicht ideal; zudem eignet sie sich nicht für Projekte mit nur einem Entwickler. Für eine einzelne oder nur wenige Personen ist es schwierig, die verschiedenen Rollen ohne Unterstützung zu übernehmen.
- Hierbei besteht eine große Abhängigkeit von einem Chefprogrammierer, der in der Lage sein muss, als Koordinator, führender Designer und Mentor für neue Teammitglieder zu fungieren.
- Es gibt keine schriftliche Dokumentation für den Kunden, obwohl die Kommunikation zwischen den Teammitgliedern während der Projektentwicklungszyklen in hohem Maße dokumentiert wird. Daher erhält der Kunde keinen Nachweis für seine eigene Software.
- Der Schwerpunkt liegt auf individueller Codeverantwortung anstelle von gemeinsamer Verantwortlichkeit des Teams.
- Funktioniert möglicherweise nicht so gut bei älteren Systemen, da bereits ein System vorhanden ist und es kein Gesamtmodell zur Definition gibt. Möglicherweise müssen Sie von vorne anfangen und von Grund auf neu arbeiten.
5 Schritte des FDD Projektlebenszyklus
Nachdem Sie nun die Vorteile der funktionsorientierten Entwicklung kennengelernt haben, lassen Sie uns die einzelnen Schritte des Entwicklungsprozesses unter die Lupe nehmen, damit Sie diese in Ihrem Team umsetzen können.
Schritt 1: Entwicklung eines Gesamtmodells
In diesem Schritt verfassen Sie eine Übersicht, um Ihr Domainmodell zu definieren – das Unternehmensproblem, das im Rahmen Ihres Softwareentwicklungsprojekts gelöst werden soll. Das Team arbeitet eng mit dem Chefarchitekten zusammen, um den Umfang und den Kontext des Systems zu definieren. Mehrere Domainmodelle sollten zu einem Gesamtmodell zusammengeführt werden, das einen Überblick über Ihr System gibt.
Schritt 2: Erstellung einer Funktionsliste
Die Funktionsliste ähnelt dem Scrum Product Backlog. Arbeiten Sie die Funktionen heraus, die für den Kunden wichtig sind. Funktionen werden als Handlung, Ergebnis und Objekt ausgedrückt (z. B. „die Kontonummer des Nutzers überprüfen“).
Die Entwicklung einer bestimmten Funktion sollte nicht länger als zwei Wochen dauern. Dauert die Erstellung einer Funktion länger als zwei Wochen, sollte sie in kleinere Funktionen aufgeteilt werden.
Schritt 3: Planung nach Funktionen
Legen Sie die Reihenfolge fest, in der die Funktionen aus der Funktionsliste entwickelt und implementiert werden. Ziehen Sie potenzielle Risiken, Abhängigkeiten, den Arbeitsaufwand des Teams und einzelner Personen sowie alle anderen Hindernisse, die die Entwicklung von Funktionen behindern könnten, in Betracht.
Weisen Sie dann die Funktionsgruppen den kompetentesten Programmierern zu, die über die nötige Bandbreite verfügen, um sie innerhalb des vorgegebenen Zeitrahmens zu entwickeln.
Schritt 4: Design nach Funktionen
Der Chefprogrammierer legt fest, welche Funktionen in zweiwöchigen Abständen entworfen und entwickelt werden sollen. Diese Person legt auch die Prioritäten der Funktionen fest und bestimmt, wer Teil des Funktionsteam wird. Vor dem nächsten Schritt muss eine Entwurfsprüfung vom gesamten Team durchgeführt werden.
Schritt 5: Entwicklung nach Funktionen
In diesem Schritt werden alle Elemente implementiert, die zur Unterstützung des Funktionsdesigns erforderlich sind. Die Benutzeroberfläche wird entworfen und ein Funktionsprototyp wird erstellt und getestet. Wenn die Funktion den Test besteht und genehmigt wird, kann die fertige Version dem primären Build hinzugefügt und den Kunden zur Verfügung gestellt werden.
Im Rahmen der Best Practices für FDD sollten Sie nach Abschluss der Arbeiten Fortschrittsberichte vorlegen. Fangen Sie mit unserer kostenlosen Vorlage an.
Jetzt öffnenWenn Sie in einem großen Unternehmen arbeiten und große, komplexe Prozesse bewältigen, ist ein funktionsorientierter, agiler Ansatz möglicherweise die richtige Lösung für Sie. Die FDD Methodik ist darauf ausgelegt, mit Ihrem Unternehmen und Ihrem Projekt zu wachsen, und funktioniert gut, wenn für Ihr Produkt eine langfristige, kontinuierliche Entwicklung gefragt ist. Durch den Fokus auf Funktionen können Sie schneller auf die Bedürfnisse Ihrer Kunden eingehen und eventuell auftretende Probleme erkennen und beheben.
Über Lucidchart
Lucidchart, eine Cloud-basierte Anwendung für intelligente Diagrammerstellung, ist eine Kernkomponente der visuellen Kollaborationssuite von Lucid Software. Mit dieser intuitiven, Cloud-basierten Lösung können Teams in Echtzeit zusammenarbeiten, um Flussdiagramme, Mockups, UML-Diagramme, Customer Journey Maps und mehr zu erstellen. Lucidchart unterstützt Teams dabei, die Zukunft schneller zu gestalten. Lucid ist stolz darauf, dass Spitzenunternehmen auf der ganzen Welt seine Produkte nutzen, darunter Kunden wie Google, GE und NBC Universal sowie 99 % der Fortune 500. Lucid arbeitet mit branchenführenden Partnern wie Google, Atlassian und Microsoft zusammen. Seit seiner Gründung wurde Lucid mit zahlreichen Preisen für seine Produkte, Geschäftspraktiken und Unternehmenskultur gewürdigt. Weitere Informationen finden Sie unter lucidchart.com.