Transcription TDD et FDD : approches dérivées de XP
Au sein de l'écosystème des pratiques agiles, et étroitement liées à l'Extreme Programming (XP), des approches plus spécifiques apparaissent, telles que le Test-Driven Development (TDD) et le Feature-Driven Development (FDD).
Bien qu'elles soient parfois considérées comme des cadres indépendants ou des variantes, elles sont souvent vues comme des disciplines ou des ensembles de pratiques qui approfondissent des aspects particuliers du développement agile de logiciels, en mettant l'accent sur la qualité grâce à des tests rigoureux (TDD) ou à l'organisation du travail autour de fonctionnalités tangibles pour le client (FDD).
Les deux visent à améliorer la qualité, l'efficacité et la création de valeur dans le développement de logiciels, en particulier dans les projets d'une certaine envergure ou complexité.
Développement piloté par les tests (TDD) : cycle rouge-vert-refactorisation
Le développement piloté par les tests (TDD) est une pratique de développement logiciel qui inverse le flux traditionnel : on écrit d'abord un test automatisé qui définit un résultat souhaité ou une amélioration, puis on écrit le code minimum nécessaire pour que ce test soit réussi.
Il repose sur deux règles principales : ne pas écrire de code fonctionnel à moins qu'il n'existe un test qui échoue, et éliminer la duplication de code.
Le cycle central du TDD est connu sous le nom de cycle rouge-vert-refactorisation :
- Rouge : écrire un test automatisé pour la nouvelle fonctionnalité. Le test échouera initialement car le code n'existe pas encore.
- Green : écrire le code le plus simple possible pour que le test passe.
- Refactor : améliorer le code nouvellement écrit (et le code existant) pour le rendre plus propre, plus simple et plus facile à maintenir, en s'assurant que tous les tests continuent de réussir. Le TDD utilise des tests unitaires et d'acceptation pour guider la conception et garantir une qualité continue.
Développement piloté par les fonctionnalités (FDD) : axé sur les fonctionnalités à valeur ajoutée
Le développement piloté par les fonctionnalités (FDD) est un processus de développement itératif et incrémental spécialement conçu pour répondre aux besoins des projets logiciels de grande envergure.
Son approche principale consiste à organiser le développement autour de fonctionnalités, définies comme de petits éléments fonctionnels qui ont une valeur directe pour le client.
Chaque fonctionnalité est suffisamment petite pour être mise en œuvre dans un court laps de temps (généralement pas plus de deux semaines), ce qui permet des livraisons fréquentes et tangibles de valeur.
Le FDD vise à fournir une structure plus formalisée que d'autres méthodes agiles pour gérer la complexité inhérente aux grands projets.
Phases et rôles du FDD
Le FDD s'organise en cinq phases principales qui se déroulent de manière itérative :
Développer un modèle général : créer un modèle d'objets de haut niveau du domaine du problème.
Construire une liste de caractéristiques : identifier et répertorier toutes les caractéristiques requises, en les regroupant par thèmes.
Planification par fonctionnalité : séquencer la mise en œuvre des fonctionnalités et attribuer des ensembles de fonctionnalités aux chefs programmeurs.
- Conception par fonctionnalité : l'équipe chargée des fonctionnalités produit un ensemble de plans détaillés pour chaque fonctionnalité.
- Construire par caractéristique : l'équipe implémente le code correspondant à la caractéristique, le teste et l'intègre.
La FDD définit également des rôles spécifiques pour gérer ce processus, notamment : directeur de projet, architecte en chef, directeur du développement, programmeur en chef, propriétaire de classe et expert du domaine.
Cet ensemble de rôles et de phases fournit une structure claire pour le développement à grande échelle.
Résumé
Le TDD (Test-Driven Development) et le FDD (Feature-Driven Development) sont des approches spécifiques liées à l'XP. Le TDD met l'accent sur la qualité grâce à des tests rigoureux, tandis que le FDD organise le travail autour des fonctionnalités.
Le TDD inverse le flux traditionnel en écrivant d'abord le test. Son cycle est le suivant : Red (test échoué), Green (code réussi) et Refactor (améliorer le code) .
Le FDD est un processus itératif pour les grands projets, axé sur les fonctionnalités ayant une valeur directe pour le client. Il s'organise en cinq phases et comprend des rôles spécifiques.
tdd et fdd approches derivees de xp