Mis à jour le lundi 30 octobre 2017
  • 4 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Entrez dans le monde des méthodologies agiles

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

 

 

Les méthodes agiles ont commencé leur apparition dans les usines Toyota, dans les années 50, à travers le Lean Software (d’où vient le Kanban). Vous voyez, ce n’est pas tout récent !

Scott Ambler, dans agilemodeling.com, propose la définition suivante :

Une méthode agile est une approche itérative et incrémentale pour le développement de logiciel, réalisé de manière très collaborative par des équipes responsabilisées appliquant un cérémonial minimal qui produisent, dans un délai contraint, un logiciel de grande qualité répondant aux besoins changeants des utilisateurs.

Super, on a tout vu, vous pouvez passer au chapitre suivant ! 😎

 …

Bon, nous sommes d’accord sur le fait que cette définition mérite qu’on la dissèque telle une grenouille pendant un cours de SVT.

 

Une approche itérative et incrémentale (et adaptative)

Itératif

Adjectif. Qui est fait ou répété plusieurs fois. (Petit Larousse)

L’itération est le principe de répéter un processus plusieurs fois dans le but d’améliorer un résultat.

Prenons un exemple concret !

Lorsque vous apprenez à faire du vélo, vous commencez par rouler avec les petites roues. Vous savez donc pédaler seul·e, c’est bien, mais vous prenez de la place et vous n’êtes pas très rapide. Vous avez d’ailleurs fait un croche-pattes malheureux à la pauvre Hind en passant près d’elle. Vous avez beau lui expliquer que ce n’est pas de votre faute (« ce sont les petites roues ! »), elle vous en veut.

Vos parents vous disent alors que vous feriez moins de malheureux et que vous iriez plus vite sans les petites roues.

Vous recommencez alors avec une seule petite roue. Vous n’allez toujours pas assez vite mais, au moins, vous prenez moins de place en largeur.

Vous tombez, vous vous faites mal mais, quelques écorchures plus tard, vous enlevez l’autre petite roue. Le résultat est presque satisfaisant. Vous continuez le même processus jusqu’à être capable de poursuivre les pigeons dans les rues d’Aix en Provence. Ah, la belle vie ! Objectif atteint !

 

Dans le monde du développement, nous utilisons cette approche pour améliorer une fonctionnalité. Nous sommes pragmatiques et nous savons bien que rien n’est parfait la première fois. Une fonctionnalité a besoin d’être testée dans des conditions réelles pour s’adapter à ses utilisateurs et pour révéler des bugs éventuels (la case à cocher n’apparaît pas sur Internet Explorer 5 par exemple 😡).

Incrémental

Adjectif. Qui travaille par incréments ou par comptage d’impulsions.  (Petit Larousse)

Un processus incrémental permet de construire un produit petit à petit en le découpant en pièces détachées. Elles sont le plus souvent indépendantes les unes des autres mais ont pour caractéristiques d’améliorer le produit.

Reprenons l’exemple du vélo. À quoi sert-il ? À se déplacer. Nous pouvons par conséquent découper la conception du vélo en plusieurs sous-produits :

  • Un monocycle. L’utilisateur se déplace mais n’a pas une grande maîtrise de la direction.

  • Un monocycle avec une roue avant. L’utilisateur a une meilleure maîtrise de la direction mais l’objet est encombrant et peu maniable.

  • Un vélo avec guidon. L’utilisateur maîtrise la direction et l’objet est plus compact mais il est plus difficile de s’arrêter car nous sommes penchés en avant.

  • Un vélo avec des freins. L’utilisateur se déplace avec aisance et peut s’arrêter en cas de danger. Objectif atteint !

Adaptée à l’informatique, cette approche incrémentale incite les responsables de produit à se concentrer sur les fonctionnalités essentielles et les développeurs à mettre en production régulièrement.

Adaptatif

Suivre une approche incrémentale et itérative suppose une grande communication avec ses utilisateurs et une certaine humilité. Votre produit sera d’abord très minimaliste et s’améliorera en fonction des retours. Puis vous ajouterez de nouvelles fonctionnalités qui, à chaque étape, feront l’objet de modifications.

Une méthode incrémentale et itérative mettra en œuvre les quatre phases vues plus haut (définition, conception, code et test) pour chaque incrément, donc pour chaque nouvelle fonctionnalité. Le responsable du produit communiquera alors avec les utilisateurs pour connaître les modifications éventuelles à apporter lors d’une itération ultérieure.

Les intérêts sont multiples. Outre le fait que vous communiquez régulièrement avec vos utilisateurs, vous avez un réel sentiment de satisfaction. Votre produit s’améliore au jour le jour, concrètement, et vous avez l’impression de passer moins de temps à écrire de la paperasse.

Des équipes responsabilisées

Un des principes des méthodes agiles, sur lesquels nous reviendrons plus tard, est le rôle actif de l’équipe produit. Les membres sont choisis avec soin pour leur complémentarité et leur motivation. Les méthodologies agiles prônent le pragmatisme, la simplicité et l’efficacité. C’est pourquoi chaque membre de l’équipe choisit lui-même la tâche sur laquelle il souhaite travailler et doit être capable de communiquer sur son travail.

Un cérémonial minimal

L’accent est mis sur le produit avant tout et non sur les réunions : un produit bancal qui a pourtant des spécifications parfaites n’en restera pas moins un produit inutilisable.

Produire des fonctionnalités, oui, mais de bonne qualité. C’est pourquoi les méthodes agiles insistent sur la collaboration entre les différentes parties prenantes du projet. Les réunions sont conservées mais tout est mis en œuvre pour qu’elles soient le plus efficaces possible. De même, la collaboration entre développeurs est grandement recommandée à travers de la programmation en binôme par exemple (“pair programming” en anglais).

Des utilisateurs aux besoins changeants

Ceci est peut-être le point le plus révolutionnaire : le projet est complètement centré sur l’utilisateur ! L’objectif n’est plus de produire des documents qui aideront le projet à avancer mais bien de produire les fonctionnalités que l’utilisateur attend au plus vite et le plus qualitativement possible. L’utilisateur évolue et notre service doit refléter ses usages.

Jim Highsmith, un des signataires du Manifeste Agile (que nous verrons en détail plus tard), définit d’ailleurs l’agilité par rapport au changement :

L‘agilité est la capacité à favoriser le changement et à y répondre en vue de s’adapter au mieux à un environnement turbulent.

Bien ! Vous avez désormais un bon aperçu des deux approches. Entrons maintenant dans le détail ! Nous allons commencer par les méthodologies de projet séquentielles car les méthodes agiles leurs empruntent certains concepts.

Exemple de certificat de réussite
Exemple de certificat de réussite