Artisanat du logiciel et méthodes agiles

En français

Agitation sur l'agilité

Fil des billets - Fil des commentaires

De bien belles perspectives pour les consultants en méthodes agiles

Ce n'est pas moi qui le dit, c'est James Shore dans son dernier billet. "Rescuing Scrum teams keeps me in business" avance même un de ses collègues.

La raison ? L'engouement pour Scrum a fait que nombre d'équipes insuffisamment préparées se retrouvent dans des situation inextricables de dette technique. Ils ont naïvement cru que l'on pouvait tirer bénéfice d'une gestion de projet agile sans en payer le prix.

"Responding to change over following a plan" : une idée neuve ?

Les adeptes de méthodes agiles utilisateurs de la version française de wikipédia auront peut être remarqué un assez curieux historique sur les entrées concernant les méthodes agiles et Scrum en particulier : la méthode "RAD" de James Martin serait à l'origine des méthodes agiles !
Claude Aubry explique comment cette information a induit en erreur un très sérieux journal d'informatique.

J'ai pris l'initiative de supprimer la plupart des références abusives sur la fiche de Scrum. L'auteur de ces références n'a visiblement pas aimé la manoeuvre.

Le Behaviour Driven Development ou l'art d'écrire des tests que tout le monde comprend

Une des règles de base du TDD, le dévelopement piloté par les tests, est "avant d'écrire une ligne de code, écrire un test qui ne passe pas". Le ligne de code sert ainsi à faire passer le test. Cette approche permet d'écrire le code le plus simple possible, au sens où celui-ci n'a aucune ligne superflue, et de découvrir facilement le code à écrire puisque celui-ci découle du test.

Tout ceci serait très facile si le problème de l'inception de code n'était pas repoussé vers les tests. Certes, on découvre facilement le code à écrire. Encore faut-il trouver le bon test à faire passer !
Le BDD, le développement piloté par le comportement ("behaviour") apporte une réponse à ce problème en proposant une structure des tests basée sur le comportement observable des éléments du système.

S'adapter au contexte

L'étape toulousaine de l'Agile Tour 2008 a attiré plus de 200 personnes. Un des points culminants de l'après-midi était la présentation par Claude Aubry et Philippe Krutchen de l'agilité en situation qui traitait del'adaptation des méthodes agiles à un contexte.

De nombreuses personnes ont assisté à cette présentation. Certaines connaissaient déjà bien les méthodes agiles, d'autres les découvraient. Quel impact a pu avoir une telle présentation ?

SigmAgileTour

Le prochain SigmaT, 7ème du nom, aura lieu le 16 octobre prochain. Ce sera une édition spéciale : les festivités démarreront dès le début de l'après midi et ce sera l'occasion d'accueilir à Toulouse, l'Agile Tour.

Pour plus d'informations, il suffit de suivre l'actualité sur les sites sigmat.fr et agiletour.com. Et pour être sûr de ne pas rater l'évènement, on peut déjà s'inscrire (et c'est toujours gratuit).

Vidéo : Forfait Scrum, l'agilité dans un cadre contractuel

Au SigmaT 5, Benjamin Böhle-Roitelet a présenté un retour d'expérience sur l'utilisation de Scrum par la société Ekito dans un cadre contractuel à l'occasion d'un forfait pour Milan Presse.

Voici les 4 vidéos de cette présentation.

Les transparent sont téléchargeables sur le blog de Claude Aubry.

Vidéo : Scrum utilisé pour la refonte du site communautaire Planetsagem

Au SigmaT 5, Pascal Bruyez a présenté un retour d'expérience sur l'utilisation de Scrum pour la refonte du site communautaire Planetsagem.

Voici les 4 vidéos prises à cet occasion.

Pour plus d'info, voir sur le blog de Pascal.

XP Day France 2008

Pour ceux qui ne seraient pas encore au courant, les 5 et 6 mai 2008 à Paris se déroule XP Day France 2008, les Journées d'XP et de l'agilité : http://www.xpday.fr/

Pour diverses raisons, je n'y serai toujours pas cette année mais je ne désespère pas de pouvoir m'y rendre un jour...

SigmaT 5

Un petit billet sur ce blog en sommeil depuis bien longtemps pour signaler que le vendredi 28 mars se tiendra la 5ème édition du Séminaire d'Information Gratuit sur les Méthodes Agiles de Toulouse.

Tous les détails utiles sont chez Claude.

SigmaT 3 : épilogue

Le 3ème SigmaT s'est tenu vendredi dernier. Comme on pouvait l'espérer la session fut intéressante.

Persistance

Depuis notre précédente livraison, notre logiciel peut être considéré comme acceptable pour une utilisation basique : lister le contenu d'un podcast audio, sélectionner un morceau et l'écouter. C'est là une des forces de l'agilité : fournir rapidement un système ayant une réelle utilité tout en garantissant que ce système va pouvoir aisément évoluer par rajout (sans douleur) de nouvelle fonctionnalités.
C'est ce que nous allons faire aujourd'hui pour continuer notre aventure de conception émergente. Le problème récurrent de notre utilisateur est qu'il doive sans cesse saisir l'URL de son podcast à chaque lancement du logiciel. Cela devient vite laborieux et son besoin le plus prioritaire est donc que le logiciel mémorise cette URL.

Deuxième livraison

Nous sommes toujours dans la grande saga de l'été sur la conception émergente. Après l'intégration d'un second scénario, notre deuxième version du logiciel est sur le point d'être terminée.
Allons-nous y parvenir aujourd'hui ?

Rentrée agile

Septembre, la fin de l'été (a-t-il vraiment commencé ?), la rentrée des classes...

Les agilistes du sud-ouest font aussi leur rentrée. Cela se passera le 21 septembre dans un amphi de l'université Paul Sabatier pour le 3ème "Séminaire d'Information Gratuit sur les Méthodes Agiles de Toulouse".
Toutes les informations utiles sont chez Claude Aubry avec entre autres le programme bien garni de cette rencontre. J'aurai, par ailleurs, le plaisir d'y faire une intervention sur la conception émergente.

Nouveau scénario

La première version de notre logiciel étant livrée, nous allons attaquer la deuxième en rajoutant un scénario de sélection et écoute de podcast. Nous sommes face au premier vrai défi. Le secret de l'agilité, c'est d'écrire du code facile à modifier.
Ce nouveau scénario va nous donner l'occasion de vérifier cette affirmation et de voir, du moins l'espère-t-on, évoluer notre conception en conséquence.

Finalisation avant 1ère livraison

Après avoir terminé l'implémentation de notre 1er scénario, nous sommes presque sur le point de pouvoir livrer une 1ère version de notre logiciel. Notre client ayant mis en évidence un cas d'utilisation non couvert par nos tests, nous allons nous empresser de rectifier le tir. J'entends déjà les esprits chagrins se lamenter "Voilà ce qui arrive quand on veut laisser émerger la conception au lieu de bien réfléchir avant de se lancer dans le codage !" J'ai envie de leur répondre que, permièrement, en se contentant de réfléchir sur papier, on a bien peu de chances de découvrir les cas limites. En l'occurrence, le client n'a vu le problème que parce qu'il avait le logiciel définitif devant lui et non pas des diagrammes à l'exécutabilité hypothétique ou une vulgaire maquette. Deuxièmement, moi, au moins, j'ai déjà un logiciel près d'être livré. Si j'avais passé mon temps à "concevoir" dans un état de pure abstraction, j'aurais gaspillé une bonne partie de mon temps.
Ceci étant dit, retournons au travail. Une URL invalide saisie comme source pour notre podcast fait planter le logiciel et cela n'est pas acceptable.

Intégration

Troisième volet de la saga sur la conception émergente. Après avoir implémenté la logique de notre premier scénario, il est temps d'obtenir une première version utilisable de notre application. Pour cela, il suffit de donner corps aux composants d'interaction avec l'environnement du logiciel, l'interface utilisateur et l'accès à des documents XML, puis d'intégrer l'ensemble de nos composants au sein d'un exécutable. L'utilisation de TDD pour la réalisation de composants d'interaction externe est toujours un point délicat. Si le monde extérieur est lourd à simuler, les tests unitaires perdent de leur intérêt car le temps passé à mettre en oeuvre l'environnement de test devient prohibitif. En même temps, si les composants ne sont pas suffisamment testés, la mise au point de l'ensemble après intégration peut rapidement devenir fastidieuse.

TDD sur page blanche

Après quelques considération d'ordre général sur la conception émergente, il est temps d'entrer dans le vif du sujet. Comme prévu, nous allons essayer de faire émerger la "conception" du code que nous allons écrire. Comme nous en sommes au début du projet, nous n'avons aucune base sur laquelle ancrer notre code mais ce n'est pas grave. L'essentiel est de faire un peu de conception sur papier -- suffisamment pour démarrer l'écriture d'un premier test. Le TDD fera le reste. Le premier scénario à implémenter est "L'utilisateur s'abonne à un flux de podcast et visualise la liste de ses éléments". Nous allons donc commencer par en proposer une représentation simple sous forme de diagramme de séquence, puis, nous implémenterons la logique de ce scénario à travers un ensemble de composants mis en évidence par le diagramme.

Conception émergente

Le développement dirigé par les tests ou TDD, popularisé par eXtreme Programming, est une technique de développement logiciel très usitée au sein des personnes pratiquant les méthodes agiles. Son principe de base, "toujours écrire un test qui rate avant d'écrire le code qui permet de le faire passer", a pour avantage de focaliser l'attention du développeur sur l'écriture de code destiné exclusivement à remplir les fonctionnalités souhaitées pour le logiciel. Il participe ainsi à la mise en application d'un des principes du manifeste agile "Working software is the primary measure of progress".
Par ailleurs, son approche très séquentielle (un test après l'autre) et sécurisée (les tests déjà présents garantissent le bon fonctionnement de l'ensemble au fur et à mesure des modifications) fait écho à un principe non moins important : "Welcome changing requirements, even late in development".

Le TDD, de par son nom plutôt trompeur, est parfois considéré à tort comme une méthode de test. En réalité, il n'est rien de moins qu'une méthode de développement qui, par affinages successifs, guide la conception d'un logiciel.
Contrairement à d'autres méthodes qui prévoient une phase dite "de conception" où un grand nombre d'abstractions composant le logiciel sont imaginées et documentées en amont de l'écriture de code, le TDD favorise une conception au fil de l'eau au fur et à mesure que les abstractions recherchées apparaissent dans le code déjà écrit et testé. On parle alors de conception émergente.

Les exigences non satisfaites, le cancer du logiciel

Les Burndown Chart de Release fournissent un bon moyen de visualiser l'avancement d'un projet de développement logiciel à l'échelle de l'itération. Ils permettent d'estimer visuellement la bonne marche de l'équipe et ainsi d'anticiper les retards trop importants en modulant le contenu du projet.
Certains jours, l'interprétation que l'on peut avoir de ces graphiques prend une saveur assez particulière...

XP Day France 2007

XP Day France, manifestation consacrée à XP et à l'agilité, va voir sa 2ème édition se dérouler les 2 et 3 mai prochains.

Pour diverses raisons personnelles, je n'y serai pas mais je relaie ici l'information car, suite à ma participation au 2ème SIGMA Toulouse, je suis de plus en plus convaincu que de tels évènements auraient intérêt à se multiplier si les professionnels du logiciels ne veulent pas rester englués dans des approches datant d'une époque révolue.

Je suggère donc à tous ceux qui ont la possibilité de s'y rendre, qu'ils soient chefs de projet, manager ou simple développeur de ne pas manquer le rendez-vous. Ils auront une occasion unique de dialoguer avec des personnes qui peuvent vraiment leur apporter une vision différente et efficace d'envisager leur pratique professionnelle.

- page 2 de 3 -