Definition

Feature-Driven Development (funktionsorientierte Entwicklung)

Was ist Feature-Driven Development (FDD) beziehungsweise funktionsorientierte Entwicklung?

Feature-Driven Development (FDD), auf Deutsch funktionsorientierte Entwicklung, ist ein agiles Softwareentwicklungs-Framework, das die Arbeit rund um Produktfunktionen organisiert. Funktionsorientierte Entwicklung ist bekannt für seine kurzen Iterationen und häufigen Releases. Wie Scrum – ein weiteres agiles Softwareentwicklungs-Framework – erfordert funktionsorientierte Entwicklung, dass der Kunde, auch bekannt als Project Business Owner (Projektverantwortlicher), an der ersten Designbesprechung und den Iterationsrückblicken teilnimmt.

Durch die schrittweise Veröffentlichung neuer Funktionen können Entwickler Kundenanfragen priorisieren, zeitnah auf Anfragen reagieren und die Zufriedenheit der Kunden gewährleisten. Um dies zu erreichen, planen die Entwickler, welche Funktionen sie erstellen können, zerlegen komplexe Anfragen in eine Reihe kleinerer Funktionssätze und erstellen dann einen Plan, wie jedes Ziel im Laufe der Zeit erreicht werden kann.

Jeff De Luca und Peter Coad wird die Entwicklung des Konzepts zugeschrieben, als sie 1997 an einem Bankprojekt in Singapur arbeiteten. Die funktionsorientierte Entwicklung eignet sich ideal für Projekte mit großen Entwicklungsteams, die vordefinierte Standards befolgen und schnelle Releases erfordern. Diese Methodik eignet sich nicht gut für kleine Projekte, die in hohem Maße von den Fähigkeiten bestimmter leitender Entwickler abhängig sind.

Schritte der funktionsorientierten Entwicklung

Feature-Driven Development beziehungsweise funktionsorientierte Entwicklung besteht aus fünf grundlegenden Prozessschritten oder Phasen:

  1. Modell entwickeln. Das Gesamtmodell wird vom Chefarchitekten oder einem anderen Fachmann, der das Projekt leitet, erstellt, indem der Umfang und der Kontext des Systems identifiziert werden.
  2. Liste mit Funktionen erstellen. Die Entwickler erstellen in einem Brainstorming eine Liste mit potenziellen Elementen, die für die Benutzer nützlich sind und innerhalb eines festgelegten Zeitrahmens für die Veröffentlichung fertiggestellt werden können. Jede Funktion sollte innerhalb eines Zeitraums von etwa zwei Wochen realisierbar sein.
  3. Funktionen planen. Die Funktionen werden nach der für ihre Erstellung benötigten Zeit und ihrer Bedeutung für den Kunden geordnet. Außerdem wird für jede Funktion ein Verantwortlicher zugewiesen.
  4. Funktionen designen. Die Details jeder Funktion werden erstellt, geprüft und finalisiert.
  5. Funktionen erstellen. Nachdem das Design verbessert wurde, wird die fertige Funktion zur Auslieferung an den Kunden in die offizielle Version aufgenommen.
der agile Entwicklungszyklus Infografik
Abbildung 1: Der agile Entwicklungszyklus ähnelt eher einem Kreislauf als einem linearen Verlauf, da die Schritte wiederholt werden, bis alle Punkte erfüllt sind.

Bewährte Verfahren für die funktionsorientierte Entwicklung

Um den größtmöglichen Erfolg zu erzielen, basiert funktionsorientierte Entwicklung auf bewährten Verfahren der Softwareentwicklung, darunter die folgenden:

  1. Identifizieren Sie das Domänenobjektmodell (Domain Object Model) oder den Umfang des zu lösenden Problems, um den Rahmen für die Funktionsentwicklung zu schaffen.
  2. Teilen Sie komplexe Funktionen in kleinere Funktionen und Untergruppen auf.
  3. Weisen Sie Funktionen einem einzigen Eigentümer (Owner) zu, um Konsistenz und Codeintegrität sicherzustellen.
  4. Bilden Sie dynamische und vielfältige Feature-Teams, um mehrere Designoptionen zu sammeln.
  5. Führen Sie routinemäßige Codeprüfungen für jedes Feature durch, bevor es in den Haupt-Build implementiert wird.
  6. Sorgen Sie für Projekttransparenz durch häufige, genaue Fortschrittsberichte während aller Schritte.

Erfahren Sie mehr über Softwareentwicklung