Feature-Driven Development (FDD) ist eine weitere Methode für die Softwareentwicklung, die sich auf iterative und inkrementelle Entwicklung konzentriert und dabei den Bau von Features als zentrales organisatorisches Konzept betont. FDD legt großen Wert auf Zusammenarbeit, Domain-Modellierung und die Bereitstellung greifbarer, funktionierender Features für die Benutzer.
Hier sind die wichtigsten Konzepte von Feature-Driven Development:
Domain-Driven Design: FDD beginnt mit der Domain-Modellierung, bei der die Domäne des Systems in überschaubare und verständliche Teile zerlegt wird. Diese Domain-Modelle helfen dabei, ein gemeinsames Verständnis des Problemfeldes im Entwicklungsteam zu schaffen.
Features als Arbeitspakete: In FDD wird die Entwicklungsarbeit darum organisiert, Features zu erstellen. Features sind kleine, gut definierte Einheiten von Funktionalität, die Wert für die Benutzer bieten. Jedes Feature wird entworfen, implementiert und getestet, bevor mit dem nächsten begonnen wird.
Iterativ und Inkrementell: Wie andere agile Methoden fördert FDD iterative und inkrementelle Entwicklung. Das Projekt wird in zeitlich begrenzte Iterationen unterteilt, in denen eine Reihe von Features entworfen, implementiert und getestet wird. Dieser Ansatz ermöglicht regelmäßiges Feedback und Anpassungen.
Zusammenarbeit und Verantwortlichkeit: FDD fördert die Zusammenarbeit zwischen Entwicklern und Stakeholdern. Querschnittsteams arbeiten zusammen, um Features zu liefern. Entwickler übernehmen die Verantwortung für bestimmte Features, was ein Gefühl von Verantwortung und Rechenschaft schafft.
Regelmäßige Inspektionen: FDD beinhaltet regelmäßige Fortschrittsprüfungen und Inspektionen, um sicherzustellen, dass der Entwicklungsprozess auf Kurs ist. Diese Inspektionen helfen dabei, Abweichungen vom Plan zu identifizieren und Korrekturmaßnahmen zu ergreifen.
Priorisierte Feature-Liste: Die Features des Projekts werden aufgelistet und nach ihrem Geschäftswert priorisiert. Dies hilft dem Entwicklungsteam dabei zu entscheiden, an welchen Features als nächstes gearbeitet werden soll.
Komponenten-/Klassenverantwortung: FDD fördert die Idee der Komponenten- und Klassenverantwortung, bei der bestimmte Teammitglieder für bestimmte Teile des Codebasises verantwortlich sind. Dies kann zu besserer Code-Qualität und Wartbarkeit führen.
Emergente Architektur: FDD unterstützt das Entstehen der Systemarchitektur im Laufe der Entwicklung. Obwohl es anfangs eine grobe Designstruktur gibt, entwickelt sich die Architektur mit der Umsetzung neuer Features weiter.
Feature-Driven Development eignet sich für Projekte mit gut definierten Anforderungen und einem klaren Fokus auf die Bereitstellung bestimmter Features. Es kann besonders effektiv in größeren Projekten sein, bei denen ein systematischer Ansatz zur Verwaltung von Features unerlässlich ist. Wie andere Methoden kann auch FDD an die Bedürfnisse eines bestimmten Projekts und einer Organisation angepasst werden.