Les fondements du développement agile par Laurent Desmons (ldesmonsmcsd@hotmail.com)

Introduction

Dans mon article précédent, "Mettre en place son environnement de développement .NET", je présentais une démarche pour mettre en oeuvre un atelier logiciel à la disposition du développeur .NET, afin qu'il puisse utiliser au quotidien des outils destinés à faciliter ses développements, le tout dans un esprit volontairement très "XP", ou "eXtreme Programming". 

Cet article propose maintenant de démystifier ce terme en présentant une petite synthèse des fondements du "développement agile".

Qu'est-ce que "le développement agile" ?

Le développement agile, aussi appelé "développement adaptatif", peut être considéré comme "un style de développement logiciel itératif centré sur les personnes et qui met l'accent sur la satisfaction du client à travers l'intégration continue d'un logiciel entièrement fonctionnel". 

Afin de clarifier cette notion somme toute encore un peu vague (mais pleine de bon sens), on peut énoncer les principes et les fondements suivants (voir http://agilemanifesto.org/):

Différentes méthodes

Il s'agit donc avant tout d'efficacité et d'adaptation, l'objectif étant comme toujours de répondre aux demandes tout en respectant les délais et les coûts. On privilégie d'abord les individus et les interactions. Plus facile à dire qu'à faire, et voilà pourquoi des méthodes ont été mises au point afin de mettre en action ces principes. Au cours de cet article je vais tenter de faire la synthèse de quelques unes des méthodes de développement agile les plus connues, puis de fournir une comparaison sur leurs spécificités. 

Je vais donc m'attarder sur les méthodes suivantes :

Extreme Programming (XP)

Proposée par Kent Beck, c'est la méthode la plus connue, et la plus en vogue. A vrai dire il s'agit plus d'un ensemble de pratiques à dimension humaine, plutôt qu'une véritable méthode. Il faut bien reconnaître qu'elle a de gros côtés positifs et qu'elle est assez facile à mettre en oeuvre, au prix parfois d'un changement de mentalité et d'une acceptation par l'ensemble des équipes impliquées. Il s'agit ici d'appliquer "à l'extrême" les principes du développement agile, en se focalisant sur les besoins du client, les individualités, le développement itératif et l'intégration continue. Le développeur et ses relations avec le client sont au coeur de XP. Cette méthode convient à des équipes petites voire moyennes, soit jusqu'à une vingtaine de personnes environ. 

Le plus surprenant dans cette méthode est qu'elle peut sembler naturelle, mais qu'elle n'est concrètement pas évidente à appliquer et à maîtriser car elle réclame beaucoup de discipline et de communication (contrairement à la première impression qui peut faire penser à une ébullition de cerveaux individuels). Il s'agit d'aller vite, sans perdre de vue la rigueur du codage et les fonctions finales de l'application. La grande force de XP (et le plus grand risque de le faire échouer) est précisément sa simplicité et le fait qu'on va droit à l'essentiel, selon un rythme qui doit rester constant.

On peut énoncer ainsi les 13 principes fondamentaux de XP :

Rational Unified Process (RUP)

Élaboré par les membres de Rational Software (maintenant IBM) dont Philippe Kruchten, RUP est une véritable méthode qui couvre l'ensemble du cycle de développement. Son étendue, son coût et sa lourdeur apparente la réserve pour les projets de moyenne voire de grande importance. Bien que ses auteurs affirment qu'il est possible d'adapter RUP pour de petits projets, la tâche semble ardue, car RUP propose un processus complet dont la rigueur et le formalisme (documentation exhaustive) peuvent rebuter. Une formation préalable est indispensable si on ne veut pas se perdre dans les centaines de pages HTML qui forment le processus et les nombreux "artefacts" (documents et logiciels) que RUP propose de produire. 

RUP a un coût d'investissement très important et, en un sens, il peut être considéré comme pas tellement "agile" car trop rigide. Il s'agit ici cependant d'un véritable outil complet de gestion de projets. RUP fournit un cadre générique qu'il faut adapter à chaque application. Il est centré sur une architecture incrémentale et itérative, le développement s'articule autour du modèle objet et des cas d'utilisation, et favorise UML en tant que langage de modélisation. RUP affecte à chacun un rôle très clair. RUP est formé d'un découpage en 4 phases : inception (objectifs et cas d'utilisation), élaboration (architecture logicielle), construction (développement), transition (déploiement). Chaque phase se découpe en itérations. Chaque itération dure entre deux semaines et six mois et fournit une version de l'application. 

Moins "extrémiste" que XP, RUP donne en même temps une apparence de plus grande rigueur, ce qui peut rassurer certains clients habitués aux documentations exhaustives.

Les principales pratiques liées à RUP sont :

Scrum 

Le terme "Scrum" (qui provient d'une stratégie de rugby) se rapproche plus d'une gestion de ressources humaines plutôt que d'une réelle méthode de développement. Il s'agit ici de ne pas oublier le côté humain du développement. Cette approche a été mise au point par Ken Schwaber.

Théoriquement, Scrum peut se marier d'ailleurs très bien avec XP, en fournissant aux développeurs "agiles" un cadre de prise en compte du facteur humain. On peut alors envisager des projets plus importants qu'avec le simple XP. Comme RUP, il s'agit d'un processus incrémental, mais bien moins formalisé : Scrum ne propose aucune pratique de développement, juste des pratiques de management. Il s'agit en fait d'un cadre de gestion de projets bien adapté aux méthodes de développement agile, comme XP.

Les principales caractéristiques de Scrum sont :

Feature-Driven Development (FDD)

Cette méthode, élaborée par Jeff de Luca et Peter Code, est plus formalisée que XP. On peut presque considérer que FDD est une application très "light" de RUP, car sa particularité est de ne se concentrer que sur les phases de design et de réalisation, ce qui consiste à :

Comparaison entre les méthodes 

Le tableau suivant (inspiré de "Agile Software Development Methods" par Pekka Abrahamsonn et Outi Salo, VTT Publications 478) peut servir à comparer sommairement les méthodes présentées dans cet article 

Méthode
Points clés
Désavantages
  XP
  Développement guidé par les besoins du client. Equipes réduites, centrées sur
  les développeurs. Binômes. Builds journaliers. Amélioration constante,
adaptativité aux modifications.
  On se focalise sur l'aspect individuel du développement, au détriment d'une vue globale
  et des pratiques de management ou de formalisation.
  On risque ainsi de manquer de contrôle et de structuration en laissant les développeurs
  trop libres de dériver par rapport aux fonctions de l'application.
  RUP   Processus complet assisté par des outils. Exhaustif. 
  Rôles bien définis, modélisation.
  Lourd, largement étendu, il peut être difficile à mettre en oeuvre de façon   spécifique. Convient pour les gros projets qui génèrent beaucoup de documentation.
  Scrum   Petites équipes, itérations de 30 jours, réunions journalières.   La mise en oeuvre du développement n'est pas précisée, seule compte la gestion 
  des ressources humaines.
  FDD   Procédé bien défini et simple, orienté objet et basé sur le développement.
  Itérations très courtes.
  Uniquement centré sur le développement.

 

Conclusion 

Le développement agile repose sur des principes simples et naturels. Il est soutenu par des méthodes qui partagent beaucoup de points communs :

Les méthodes présentées ici se distinguent toutefois par leur portée et leur domaine d'application, ainsi que par l'environnement de travail dans lequel elles peuvent être mises en oeuvre : cela devrait vous aider à faire un choix "agile" le jour où vous déciderez peut-être d'adopter l'une d'entre elles...

 

Auteur : Laurent Desmons 

Copyright © 2004