El desenvolupament basat en funcionalitats (feature-driven development, FDD) és un procés de desenvolupament de programari iteratiu i incremental. És un mètode lleuger o àgil per desenvolupar programari. L'FDD combina diverses bones pràctiques en un tot cohesionat. Aquestes pràctiques es basen en la perspectiva de lliurar funcionalitats (característiques) valorades pel client. El seu objectiu principal és lliurar programari tangible i funcional repetidament de manera oportuna, d'acord amb els principis del manifest àgil.
Història L'FDD va ser ideat inicialment per Jeff De Luca per satisfer les necessitats específiques d'un projecte de desenvolupament de programari de 15 mesos i 50 persones en un gran banc de Singapur el 1997. Això va donar lloc a un conjunt de cinc processos que cobrien el desenvolupament d'un model general i la llista, la planificació, el disseny i la construcció de funcions. El primer procés està molt influenciat per l'enfocament de Peter Coad al modelatge d'objectes. El segon procés incorpora les idees de Coad d'utilitzar una llista de funcions per gestionar els requisits funcionals i les tasques de desenvolupament. Els altres processos són el resultat de l'experiència de Jeff De Luca. Hi ha hagut diverses implementacions d'FDD des del seu ús amb èxit al projecte de Singapur.
La descripció de FDD es va introduir per primera vegada al món al capítol 6 del llibre Java modelling in Color with UML de Peter Coad, Eric Lefebvre i Jeff De Luca el 1999. Més tard, al llibre de Stephen Palmer i Mac Felsing A Practical Guide to Feature-Driven Development (publicat el 2002), es va donar una descripció més general de FDD desacoblada de la modelització Java.
Visió general L'FDD és un procés d'iteració curta basat en models que consta de cinc activitats bàsiques. Per a informes precisos de l'estat i per fer un seguiment del projecte de desenvolupament de programari, es defineixen fites que marquen el progrés realitzat en cada característica. Aquesta secció ofereix una visió general d'alt nivell de les activitats. A la figura de la dreta, es mostra el model de metaprocés per a aquestes activitats. Durant les dues primeres activitats seqüencials, s'estableix una forma general del model. Les tres activitats finals s'iteren per a cada característica. miniatura|672x672px|Model de procés per a FDD
Desenvolupar un model global El projecte FDD comença amb una revisió d'alt nivell de l'abast del sistema i el seu context. A continuació, grups petits creen models de domini detallats per a cada àrea de modelització i es presenten per a la seva revisió per parells. Es selecciona un o més dels models proposats per convertir-se en el model per a cada àrea de domini. Els models d'àrea de domini es fusionen progressivament en un model global.
Crea una llista de funcions El coneixement recollit durant el modelatge inicial s'utilitza per identificar una llista de característiques descomponent funcionalment el domini en àrees temàtiques. Cada àrea temàtica conté activitats empresarials, i els passos dins de cada activitat empresarial formen la base d'una llista de característiques categoritzades. Les característiques en aquest sentit són petites parts de funcions valorades pel client expressades en la forma "<acció> <resultat> <objecte>", per exemple: "Calcula el total d'una venda" o "Valida la contrasenya d'un usuari". Les característiques no haurien de trigar més de dues setmanes a completar-se, en cas contrari s'haurien de dividir en parts més petites.
Planifica per característica Un cop completada la llista de característiques, el següent pas és elaborar el pla de desenvolupament i assignar la propietat de les característiques (o conjunts de característiques) com a classes als programadors.
Disseny per característica Es produeix un paquet de disseny per a cada característica. Un programador en cap selecciona un petit grup de característiques que s'han de desenvolupar en un termini de dues setmanes. Juntament amb els propietaris de les classes corresponents, el programador en cap elabora diagrames de seqüència detallats per a cada característica i refina el model general. A continuació, s'escriuen els pròlegs de la classe i del mètode i, finalment, es realitza una inspecció de disseny.
Crea per característica Després de planificar una inspecció de disseny satisfactòria per a cada activitat per produir una característica, els propietaris de la classe desenvolupen codi per a les seves classes. Després de les proves unitàries i la inspecció satisfactòria del codi, la característica completada es promociona a la compilació principal.
Fites Com que les característiques són petites, completar una característica és una tasca relativament petita. Per obtenir informes precisos sobre l'estat i fer un seguiment del projecte de desenvolupament de programari, és important marcar el progrés realitzat en cada característica. Per tant, FDD defineix sis fites per característica que s'han de completar seqüencialment. Les tres primeres fites es completen durant l'activitat Disseny per característica i les tres últimes es completen durant l'activitat Crea per característica. Per fer un seguiment del progrés, s'assigna un percentatge de finalització a cada fita. A la taula següent es mostren les fites i el seu percentatge de finalització. En el moment en què comença la codificació, una característica ja està completa al 44% (Revisió del domini 1%, Disseny 40% i Inspecció de disseny 3% = 44%). Tutorial de dominiDissenyInspecció de dissenyCodiInspecció de codiPromoure per construir1%40%3%45%10%1%
Bones pràctiques El desenvolupament basat en funcions es basa en un conjunt bàsic de les millors pràctiques d'enginyeria de programari orientades a una perspectiva de funcions valorades pel client.
Modelització d'objectes de domini. La modelització d'objectes de domini consisteix a explorar i explicar el domini del problema que s'ha de resoldre. El model d'objectes de domini resultant proporciona un marc general al qual afegir característiques. Desenvolupament per característica. Qualsevol funció que sigui massa complexa per ser implementada en dues setmanes es descompon en funcions més petites fins que cada subproblema sigui prou petit per ser anomenat característica. Això facilita l'entrega de funcions correctes i l'ampliació o modificació del sistema. Propietat individual de la classe (propietat del codi). La propietat individual de la classe significa que diferents parts o grups de codi s'assignen a un únic propietari. El propietari és responsable de la coherència, el rendiment i la integritat conceptual de la classe. Equips destacats. Un equip destacat és un equip petit, format dinàmicament, que desenvolupa una activitat petita. Sempre s'apliquen diverses ments a cada decisió de disseny i s'avaluen diverses opcions de disseny abans de triar-ne una. Inspeccions. Les inspeccions es duen a terme per garantir un disseny i un codi de bona qualitat, principalment mitjançant la detecció de defectes. Gestió de la configuració. La gestió de la configuració ajuda a identificar el codi font de totes les funcions que s'han completat fins ara i a mantenir un historial de canvis a les classes a mesura que els equips de funcions les milloren. Compilacions regulars. Les compilacions regulars garanteixen que sempre hi hagi un sistema actualitzat que es pugui demostrar al client i ajuden a destacar els errors d'integració del codi font de les funcions amb antelació. Visibilitat del progrés i els resultats. Els gestors dirigeixen un projecte mitjançant informes de progrés freqüents, adequats i precisos de tots els nivells dins i fora del projecte, basats en el treball completat.
Metamodel (Metamodelling) miniatura|173x173px|Model de dades de procés per a FDD El metamodelatge ajuda a visualitzar tant els processos com les dades d'un mètode. Això permet comparar mètodes i reutilitzar fàcilment fragments de mètode en el procés d'enginyeria de mètodes. L'ús d'aquesta tècnica és coherent amb els estàndards UML.
El costat esquerre del model de metadades mostra les cinc activitats bàsiques implicades en un projecte de desenvolupament de programari que utilitza FDD. Totes les activitats contenen subactivitats que corresponen a subactivitats de la descripció del procés FDD. El costat dret del model mostra els conceptes implicats. Aquests conceptes s'originen a partir de les activitats representades al costat esquerre del diagrama.
Referències
Categoria:Programari Categoria:Desenvolupament de programari