Feature Driven Development (FDD) Über Features die Entwicklung von Software steuern

→ Fea­ture Dri­ven Deve­lo­p­ment (FDD) ist ein Ansatz in der → Soft­ware­ent­wick­lung, um das Ent­wick­lungs­vor­ge­hen über Fea­tures zu steu­ern. Ursprüng­lich von Peter Coad und Jeff De Luca /Coad99/ ent­wi­ckelt, erfuhr das FDD in den ers­ten Jah­ren des 21ten Jahr­hun­derts eine gewis­se Bedeu­tung und Verbreitung.

In der Wiki­pe­dia steht zum Fea­ture Dri­ven Deve­lo­p­ment /#Wiki-FDD/:
“Fea­ture Dri­ven Deve­lo­p­ment (Abk. FDD) ist eine Samm­lung von Arbeits­tech­ni­ken, Struk­tu­ren, Rol­len und Metho­den für das → Pro­jekt­ma­nage­ment im Rah­men agi­ler Soft­ware­ent­wick­lung.“
Die­se Beschrei­bung ist lei­der wenig aus­sa­ge­kräf­tig. Zudem wird FDD nicht unbe­dingt zur agi­len Soft­ware­ent­wick­lung gezählt.

Gene­rell geht es beim FDD dar­um, dass sich die Soft­ware­ent­wick­lung an Fea­tures (deutsch in etwas: Merk­ma­le oder Eigen­schaf­ten) aus­rich­tet, die einen Wert für den / die Kun­den brin­gen. Hier­zu wird ein gene­rel­ler Pro­zess, meh­re­re Rol­len und eine spe­zi­fi­sche Nota­ti­on zur Beschrei­bung der Fea­tures ein­ge­setzt (Abbil­dung 1).

Feature Driven Development: Komponenten, (C) Peterjohann Consulting, 2023-2024

Abbil­dung 1: Fea­ture Dri­ven Deve­lo­p­ment: Komponenten

In die­sem Bei­trag wird nur der Pro­zess betrach­tet, da die­ser auch über­grei­fend ein­ge­setzt wer­den kann.

Der Pro­zess beim Fea­ture Dri­ven Deve­lo­p­ment ist unter­teilt in fol­gen­de fünf Ein­zel­schrit­te (Abbil­dung 2):

  1. Ent­wick­le ein Gesamt­mo­dell (Deve­lop over­all model): Es wird ein gene­rel­les Modell mit (allen) Fea­tures entwickelt
  2. Erstel­le eine Fea­ture-→ Lis­te (Build fea­ture list): Aus dem Gesamt­mo­dell wer­den die ein­zel­nen Fea­tures in eine Lis­te über­führt. Dort wer­den dann die ein­zel­nen Fea­tures nach → Auf­wand und → Prio­ri­tät bewertet
  3. Pla­ne je Fea­ture (Plan by fea­ture): Es wer­den die Fea­tures in eine zeit­li­che Abfol­ge gebracht und Ent­wick­lern zugeordnet
  4. Ent­wirf je Fea­ture (Design by fea­ture): Jedes Fea­ture wird kurz vor der Umset­zung in einen tech­ni­schen Ent­wurf umgesetzt
  5. Kon­stru­ie­re je Fea­ture (Build by fea­ture): Zum Abschluss wird das Fea­ture kon­stru­iert / programmiert
Feature Driven Development: Prozess, (C) Peterjohann Consulting, 2023-2024

Abbil­dung 2: Fea­ture Dri­ven Deve­lo­p­ment: Prozess

Ein Durch­lauf des Pro­zes­ses soll­te nicht mehr als 6 Mona­te betra­gen. Dabei wer­den die ers­ten drei Pro­zess­schrit­te ein­ma­lig durch­lau­fen, wäh­rend die letz­ten bei­den Pro­zess­schrit­te ins­ge­samt inner­halb von 2 bis 4 Wochen durch­lau­fen wer­den sol­len. Es kommt daher zu einer Wie­der­ho­lung / Ite­ra­ti­on der letz­ten bei­den Schrit­te, solan­ge bis alle Fea­tures des Gesamt­mo­dells umge­setzt sind.

Um den ite­ra­ti­ven Cha­rak­ter der letz­ten bei­den Pro­zess­schrit­te her­vor­zu­he­ben, kann eine ande­re Dar­stel­lung gewählt wer­den. In Abbil­dung 3 sind neben der ein­fa­chen Dar­stel­lung zwei wei­te­re Vari­an­ten dargestellt.

Feature Driven Development: Prozess - Darstellungsvarianten, (C) Peterjohann Consulting, 2023-2024

Abbil­dung 3: Fea­ture Dri­ven Deve­lo­p­ment: Pro­zess — Darstellungsvarianten

Gene­rell kann man den FDD-Pro­zess in zwei Pha­sen unter­tei­len: Die initia­le Start­pha­se und die ite­ra­ti­ve Rea­li­sie­rungs­pha­se (Abbil­dung 4). 

Feature Driven Development: Prozess - Unterteilung in zwei Phasen, (C) Peterjohann Consulting, 2023-2024

Abbil­dung 4: Fea­ture Dri­ven Deve­lo­p­ment: Pro­zess — Unter­tei­lung in zwei Phasen

Gene­rell ist die Bedeu­tung und der Ein­satz von FDD in den letz­ten Jah­ren zurück­ge­gan­gen. Dies kann damit zusam­men­hän­gen, dass wert­stro­m­ori­en­tier­tes Vor­ge­hen in der Agi­li­tät Ein­zug gehal­ten hat und daher die Fea­tures auch ohne das FDD genutzt werden.

Fol­gen­de → Schreib­wei­sen sind zu finden: 

  • Deutsch: Fea­ture Dri­ven Development
  • Eng­lisch: Fea­ture-dri­ven development

Anmer­kun­gen:

  • “Buy a Fea­ture” ist eine Prio­ri­sie­rungs­tech­nik, bei der die Wei­ter­ent­wick­lung auf­grund von bewer­te­ten und aus­wähl­ba­ren Fea­tures erfolgt
  • Der Unter­schied von → Funk­ti­on und Fea­ture wird in dem Bei­trag → Funk­ti­on oder Fea­ture? erläutert

Lite­ra­tur

  • /Coad99/ Peter Coad, Eric LeFeb­v­re, Jeff De Luca: Java Mode­ling In Color With → UML. Enter­pri­se Com­pon­ents and Pro­cess, Pren­ti­ce Hall Inter­na­tio­nal, Upper Sadd­le River, New Jer­sey 1999, ISBN 978–0‑13–011510‑2
  • /Palmer02/ Ste­phen R. Pal­mer, John M. Fel­sing: A Prac­ti­cal Gui­de to Fea­ture-Dri­ven Deve­lo­p­ment, Pren­ti­ce Hall Inter­na­tio­nal, Upper Sadd­le River, New Jer­sey 2002, ISBN 978–0‑13–067615‑3

Web­links

Legen­de zu den Weblinks
/ / Ver­weis auf eine Web­site (all­ge­mein)
/*/ Ver­weis auf eine Web­site, die als Ergän­zung zu einem Buch dient
/#/ Ver­weis auf ein ein­zel­nes The­ma auf einer Website
/#V/ Ver­weis auf ein Video auf einer Website