Agile et le Feature Driven Development (FDD)

novembre 19, 2015

Agile et le Feature Driven Development (FDD)

Feature Driven Development est une méthode agile développée par Jeff de Luca et Peter Coad en 1997 pour mieux gérer les risques existants dans les projets de développement.

L’idée de base de la méthode est de procéder par itérations très courtes, de deux semaines, avec production à la fin de chaque itération d’un livrable fonctionnel.

Les spécifications sont découpées le plus possibles en caractéristiques simples : les « features » que l’on peut regrouper en « feature sets ».

Intérêt

– pour le client

Les clients ont une vue claire sur le planning et les différentes étapes du projet. Ils ont aussi des résultats concrets qui leur prouvent l’avancée du projet.

– pour les managers

Du point de vue des managers, cette façon de procéder permet de connaître facilement l’état d’avancement du projet et d’avoir du concret à montrer au client à chaque fin d’itération. Le fait de délivrer fréquemment des composants fonctionnels permet aussi une bonne gestion du risque.

– pour les développeurs

Pour les développeurs, procéder par itérations est très motivant puisqu’ils doivent être capables de livrer toutes les deux semaines des composants qui sont utiles au client, qui fonctionnent et sont porteurs de valeur pour lui.

Bénéfice

Cette pratique encourage la créativité, l’innovation et l’exploration et conduit à la découverte de nouvelles fonctionnalités qui apporteront un avantage concurrentiel.

Notions de   » Feature  » et  » feature set « 

– Feature

Feature désigne une fonctionnalité porteuse de valeur pour le client, susceptible d’être implémentée en deux semaines ou moins.

Le formalisme utilisé pour les décrire est le plus simple possible : <action> the <result> <by, for, of, to> a(n) <object> (ex : calculate the total of a sale).

Ce découpage en fonctionnalités simplissimes permet au client d’exprimer ce qu’il attend de manière très simple.

– Feature set

Ces features sont regroupées en groupes qui participent à une même fonction plus globale.

Le formalisme utilisé pour décrire les feature sets est alors : <action><-ing> a(n) <object> (ex : making a product sale to a customer).

En pratique, les 5 phases d’un projet FDD

Phase 1 : Développer un modèle global

Phase 2 : Établir une liste détaillée de features classées par priorité

Phase 3 : Planifier à partir des features

Phase 4 : Concevoir à partir des features

Phase 5 : Construire à partir des features

Forces et faiblesses de FDD

FDD présente les avantages des méthodes agiles, à savoir gestion des risques, flexibilité par rapport au changement, rapidité, livraisons fréquentes, etc. FDD a déjà été utilisé avec des équipes de taille conséquente pouvant aller jusqu’à une vingtaine de développeurs. Le facteur limitant cependant la taille d’une équipe est le nombre de développeurs seniors à disposition. La propriété du code revenant aux propriétaires de classes a l’avantage de ne permettre des modifications que par une personne qui a une vision globale d’une classe. On peut opposer à cela le principe de propriété collective du code en vigueur dans eXtreme Programming qui nécessite une plus grande discipline mais peut s’avérer plus rapide si un développeur a besoin de modifier du code écrit par un autre membre de l’équipe. L’inspection du code permet d’apporter un regard neuf sur chaque portion du code et permet ainsi de produire un code de meilleur qualité. Cependant, la personne qui inspecte le code ne le connaît pas a priori et il lui faut donc un minimum de temps pour se familiariser avec ce code. Encore une fois, il peut s’avérer plus judicieux de passer à la programmation en binôme pour éviter cette perte de temps et faire la révision du code en même temps que son écriture. FDD n’est d’ailleurs par fermée à ce genre de pratiques qui poussent l’agilité encore plus loin.

Leave a Reply

You must be logged in to post a comment.