Développement axé sur les fonctionnalités - Feature-driven development

Le développement piloté par les fonctionnalités ( FDD ) est un processus de développement logiciel itératif et incrémental . C'est une méthode légère ou Agile pour développer des logiciels . FDD associe un certain nombre de meilleures pratiques reconnues par l'industrie en un tout cohérent. Ces pratiques sont guidées par une perspective de fonctionnalité ( fonctionnalité ) valorisée par le client . Son objectif principal est de fournir des logiciels tangibles et fonctionnels à plusieurs reprises, en temps opportun, conformément aux principes du Manifeste Agile .

Histoire

FDD a été initialement conçu par Jeff De Luca pour répondre aux besoins spécifiques d'un projet de développement de logiciels de 15 mois et de 50 personnes dans une grande banque de Singapour en 1997. Cela a abouti à un ensemble de cinq processus qui couvraient le développement d'un modèle global et la liste, la planification, la conception et la construction de fonctionnalités. Le premier processus est fortement influencé par l' approche de Peter Coad en matière de modélisation d'objets . Le deuxième processus intègre les idées de Coad concernant l'utilisation d'une liste de fonctionnalités pour gérer les exigences fonctionnelles et les tâches de développement. Les autres processus sont le résultat de l'expérience de Jeff De Luca. Il y a eu plusieurs implémentations de FDD depuis son utilisation réussie sur le projet de Singapour.

La description de FDD a été présentée pour la première fois au monde dans le chapitre 6 du livre Modélisation Java en couleur avec UML par Peter Coad, Eric Lefebvre et Jeff De Luca en 1999. Plus tard, dans le livre de Stephen Palmer et Mac Felsing A Practical Guide à Feature-Driven Development (publié en 2002), une description plus générale de FDD a été donnée, découplée de la modélisation Java.

Aperçu

FDD est un processus de courte itération basé sur un modèle qui se compose de cinq activités de base. Pour des rapports d'état précis et le suivi du projet de développement logiciel, des jalons qui marquent les progrès réalisés sur chaque fonctionnalité sont définis. Cette section donne un aperçu de haut niveau des activités. Dans la figure de droite, le modèle de méta-processus pour ces activités est affiché. Au cours des deux premières activités séquentielles, une forme globale du modèle est établie. Les trois dernières activités sont itérées pour chaque fonctionnalité.

Image
Modèle de processus pour FDD

Développer un modèle global

Le projet FDD commence par un haut niveau walkthrough du champ d' application du système et de son contexte. Ensuite, des modèles de domaine détaillés sont créés pour chaque domaine de modélisation par de petits groupes et présentés pour examen par les pairs . Un ou plusieurs des modèles proposés sont sélectionnés pour devenir le modèle pour chaque domaine. Les modèles de domaine sont progressivement fusionnés dans un modèle global.

Créer une liste de fonctionnalités

Les connaissances recueillies lors de la modélisation initiale sont utilisées pour identifier une liste de caractéristiques en décomposant fonctionnellement le domaine en domaines. Les domaines contiennent chacun des activités commerciales et les étapes de chaque activité commerciale constituent la base d'une liste de fonctionnalités classées. Les fonctionnalités à cet égard sont de petits morceaux de fonctions valorisées par le client exprimées sous la forme "<action> <résultat> <objet>", par exemple : "Calculer le total d'une vente" ou "Valider le mot de passe d'un utilisateur". Les fonctionnalités ne devraient pas prendre plus de deux semaines à compléter, sinon elles devraient être décomposées en plus petits morceaux.

Planifier par fonctionnalité

Une fois la liste des fonctionnalités terminée, l'étape suivante consiste à produire le plan de développement et à attribuer la propriété des fonctionnalités (ou des ensembles de fonctionnalités) en tant que classes aux programmeurs .

Conception par fonctionnalité

Un package de conception est produit pour chaque fonctionnalité. Un programmeur en chef sélectionne un petit groupe de fonctionnalités qui doivent être développées dans les deux semaines. En collaboration avec les propriétaires de classe correspondants, le programmeur en chef élabore des diagrammes de séquence détaillés pour chaque fonctionnalité et affine le modèle global. Ensuite, les prologues de classe et de méthode sont écrits et enfin une inspection de conception a lieu.

Construire par fonctionnalité

Après qu'une inspection de conception réussie pour chaque activité visant à produire une fonctionnalité soit planifiée, les propriétaires de classe développent le code pour leurs classes. Après des tests unitaires et une inspection de code réussie , la fonctionnalité terminée est promue dans la version principale.

Jalons

Étant donné que les fonctionnalités sont petites, la réalisation d'une fonctionnalité est une tâche relativement petite. Pour un rapport d'état précis et un suivi du projet de développement logiciel, il est important de marquer les progrès réalisés sur chaque fonctionnalité. FDD définit donc six jalons par fonctionnalité qui doivent être complétés de manière séquentielle. Les trois premiers jalons sont terminés pendant l'activité Concevoir par fonction et les trois derniers sont terminés pendant l'activité Construire par fonction . Pour suivre les progrès, un pourcentage d'achèvement est attribué à chaque jalon. Dans le tableau ci-dessous, les jalons et leur pourcentage d'achèvement sont indiqués. Au moment où le codage commence, une fonctionnalité est déjà terminée à 44% (Domain Walkthrough 1%, Design 40% et Design Inspection 3% = 44%).

Tableau 1 : Jalons
Procédure pas à pas du domaine Concevoir Contrôle de conception Code Contrôle des codes Promouvoir pour construire
1% 40% 3% 45% dix% 1%

Les meilleures pratiques

Le développement axé sur les fonctionnalités repose sur un ensemble de bonnes pratiques d' ingénierie logicielle visant une perspective de fonctionnalité valorisée par le client.

  • Modélisation d'objets de domaine . Domaine La modélisation objet consiste à explorer et expliquer le domaine du problème à résoudre. Le modèle d'objet de domaine résultant fournit un cadre global dans lequel ajouter des fonctionnalités.
  • Développement par fonctionnalité . Toute fonction trop complexe pour être implémentée dans les deux semaines est encore décomposée en fonctions plus petites jusqu'à ce que chaque sous-problème soit suffisamment petit pour être appelé fonctionnalité. Cela permet de fournir plus facilement des fonctions correctes et d'étendre ou de modifier le système.
  • Propriété de classe individuelle (code) . La propriété de classe individuelle signifie que des morceaux distincts ou un groupe de code sont attribués à un seul propriétaire. Le propriétaire est responsable de la cohérence, des performances et de l'intégrité conceptuelle de la classe.
  • Équipes de fonctionnalité . Une équipe technique est une petite équipe formée de manière dynamique qui développe une petite activité. Plusieurs esprits sont toujours appliqués à chaque décision de conception, et plusieurs options de conception sont évaluées avant d'en choisir une.
  • Contrôles . Des inspections sont effectuées pour assurer une conception et un code de bonne qualité principalement par la détection de défauts.
  • Gestion des configurations . La gestion de la configuration aide à identifier le code source de toutes les fonctionnalités terminées à ce jour et à conserver un historique des modifications apportées aux classes à mesure que les équipes de fonctionnalités les améliorent.
  • Constructions régulières . Des versions régulières garantissent qu'il y a toujours un système à jour qui peut être démontré au client et aide à mettre en évidence les erreurs d'intégration du code source pour les fonctionnalités dès le début.
  • Visibilité des progrès et des résultats . Les gestionnaires dirigent un projet en utilisant des rapports d'avancement fréquents, appropriés et précis à tous les niveaux à l'intérieur et à l'extérieur du projet en fonction du travail terminé.

Métamodèle (Métamodélisation)

Image
Modèle de données de processus pour FDD

La métamodélisation permet de visualiser à la fois les processus et les données d'une méthode . Cela permet de comparer les méthodes et les fragments de méthode dans le processus d' ingénierie de méthode peuvent facilement être réutilisés. L'utilisation de cette technique est conforme aux normes UML .

Le côté gauche du modèle de métadonnées montre les cinq activités de base impliquées dans un projet de développement logiciel utilisant FDD. Les activités contiennent toutes des sous-activités qui correspondent aux sous-activités dans la description du processus FDD. Le côté droit du modèle montre les concepts impliqués. Ces concepts proviennent des activités décrites dans la partie gauche du diagramme.

Les outils utilisés

  • Fiches doc . Doc Sheets est un outil d'entreprise commercial pour le développement axé sur les fonctionnalités.
  • TechExcel DevSuite . TechExcel DevSuite est une suite commerciale d'applications permettant un développement axé sur les fonctionnalités.
  • Outils FDD . Le projet FDD Tools vise à produire une boîte à outils open source et multiplateforme prenant en charge la méthodologie de développement piloté par les fonctionnalités.
  • Visionneuse FDD . FDD Viewer est un utilitaire pour afficher et imprimer des parkings.

Voir également

Les références

  • 1. ^ Coad, P. , Lefebvre, E. & De Luca, J. (1999). Modélisation Java en couleur avec UML : composants et processus d'entreprise . Prentice Hall International. ( ISBN  0-13-011510-X )
  • 2. ^ Palmer, SR et Felsing, JM (2002). Un guide pratique du développement basé sur les fonctionnalités . Prentice Hall. ( ISBN  0-13-067615-2 )

Liens externes