Kanban pour les nuls

oct 07
2009

 

  • Visualiser la cinématique
    • Diviser le travail en petites tâches, écrire chaque tâche sur une carte et poser là sur le mur
    • Utiliser des colonnes pour identifier une étape de la cinématique et pour illustrer où est chaque tâche dans la cinématique

  • Limiter le travail en cours – Assignez des limites explicites en définissant le nombre de tâche pour chaque état de la cinématique
  • Mesurer le temps (temps moyen pour compléter une tâche) optimiser le processus de manière à rendre le temps de réalisation le plus faible et le plus prévisible que possible

Scrum pour les nuls

oct 06
2009

 

  • Diviser votre organisation en petit équipe, avec des fonctions transverses et auto-organisé

  • Diviser le travail en une liste de petits livrables concrets. Définir une liste qui sera triée par priorité et estimer l’effort relative pour chaque élément.

  • Diviser le temps en petites itérations fixes (habituellement 1 à 4 semaines), avec un livrable qui puisse être potentiellement montré.



Optimiser le plan de release et mettre les priorités en collaboration avec le client, cette optimisation est fondée sur les connaissances acquises en analysant la release après chaque itération.

Optimiser les processus par une rétrospective après chaque itération.

Ainsi au lieu d’un grand groupe qui passe beaucoup de temps à construire un grand truc, nous avons une petite équipe qui passe un peu de temps à construire un petit truc, mais en réalisant des tests régulièrement pour voir le tout.

C’est fini !

Idée originale de Henrik Kniberg – http://blog.crisp.se/henrikkniberg

Agile : Rugby ou Alpinisme ?

juil 04
2009

En lisant un ouvrage sur le « lean management » de Dirk BÖSENBERG & Heinz METZEN, j’ai remarqué une similitude qui pourrait me faire penser que le terme SCRUM ne me semble pas le plus adapté aux méthodes Agile.

Je me suis souvent demandé pourquoi SCRUM, à part pour l’esprit d’équipe de la mêlée. Le rugby ne semble pas le sport le plus en relation avec mon activité quand je pratique SCRUM.

Voici une analogie provenant de l’alpinisme qui me semble plus en adéquation avec cette méthode de travail.

« Les alpinistes en tant que sportifs incarnent le mieux l’état du régime minceur. (…) Le parallèle entre les vertus de l’alpiniste et celles des principes de travail dans le régime minceur (Lean) est étonnant. »

  • Développement des petits pas sur un terrain solide
  • Plus le terrain est incertain, plus les pas sont petits et assurés
  • Utilisation du feed-back pour guider le prochain pas
  • Vitesse de développement par des pas rapides et assurés
  • Motivation par des progrès constants

Le parallèle est bien adapté, le but à atteindre, le sommet est généralement bien identifié et défini par un besoin client. Le chemin est semé d’embûches. La météo est incertaine, changement inattendu du sens du vent, visibilité réduite, problèmes non identifiés, mauvaise anticipation, choix malencontreux…

L’auteur fait référence à Lean (orienté industrie – ouvrage de 1994 – éditions d’organisation) et non à Agile, mais en lisant l’ouvrage, j’avais du mal à penser que je pouvais faire un distinguo entre les deux termes.

Je profite d’un commentaire suite à ce billet, pour faire référence à l’excellent site de Fabrice Aimetti, sur lequel vous trouverez la traduction d’un article phare à propos de ce qui allé devenir la célèbre méthode Scrum et le rugby.

Pourquoi les logiciels libres ont une convivialité médiocre, et comment les améliorer.

mai 07
2009

Pourquoi les logiciels libres ont une convivialité médiocre, et comment faire pour les améliorer. (première partie)

Les applications Open Source et les systèmes d’exploitation sont plus utilisables aujourd’hui qu’ils ne l’étaient il y a encore quelque temps. Mais cela est dû en grande partie à la lenteur des innovations, et du faible niveau de compétition entre les projets et les éditeurs. Les principaux problèmes liés à la méthodologie de conception ne sont toujours pas résolus. Nombre de ces problèmes proviennent des projets logiciels qui sont basés sur le volontariat, pas sur le logiciel libre en particulier.  Les programmes propriétaires réalisés par des « amateurs » sont souvent difficiles à utiliser pour bon nombre des mêmes raisons.  Mais la façon la plus facile d’obtenir des volontaires pour contribuer à un projet de développement est de le rendre open source. Des milliers de personnes travaillent dans le développement de logiciel libre, la plupart de ses développeurs sont bénévoles. C’est donc dans le Logiciel Libre qui emploie des bénévoles pour la réalisation de logiciel que l’on rencontre le plus souvent des problèmes d’utilisation, de conception, de documentation, etc.

Cela nous donne un indice à propos de nos deux premiers problèmes.  1. La faiblesse des incitations à la facilité d’utilisation des applications. Les éditeurs de logiciels propriétaires en général font de l’argent en produisant des logiciels que les gens veulent utiliser. Cela donne une forte incitation pour le rendre plus utilisable (cela ne fonctionne pas toujours : par exemple, Microsoft et Adobe ou le logiciel devient parfois inutilisable ou sans réelle facilité d’utilisation, mais il reste dominant par le biais des effets de réseau et du marketing.)

Avec des projets basés sur le volontariat, toute incitation est beaucoup plus faible. Le nombre d’utilisateurs qui utilise le logiciel n’a rarement de lien avec un apport financier pour les développeurs, et avec les logiciels librement redistribuables, il est de toute façon quasi impossible de compter les utilisateurs qui utilisent réellement l’application. Il existe d’autres mesures incitatives – impressionner des futurs employeurs ou inclure vos logiciels dans un OS populaire.

Solutions : Mettre en place des incitations plus fortes à son utilisabilité. Par exemple, chaque année proposer un prix du design du logiciel libre pourrait aider à faire connaître et à récompenser les développeurs qui réalisent des programmes ergonomiques, avec des interfaces IHM de qualité, etc. Les éditeurs de logiciel pourraient publier des statistiques sur le nombre de leurs utilisateurs qui utilisent leurs applications, et comment ce nombre change au fil du temps. Un système de prime que les gens pourraient verser une somme d’argent en dépôt pour celui qui met en œuvre une amélioration de la convivialité. Les éditeurs peuvent choisir de ne pas distribuer uniquement que des applications « Open Source », mais aussi une variante de l’application, avec une meilleure ergonomie et des améliorations graphiques qui pourraient être un facteur de choix lors de son acquisition.

2. Peu de bons designers. Certains musiciens sont aussi de grands compositeurs, mais la plupart ne le sont pas. Certains développeurs sont aussi de grands designers, mais la plupart ne le sont pas. Développement et design de l’interface IHM sont des compétences distinctes, et des personnes compétentes dans les deux domaines à la fois sont rares. Il est donc important d’avoir des designers dédiés, mais peu de projets Logiciels Libres le font. Certains spécialistes de l’utilisabilité sont employés par des éditeurs de logiciel libre, tels que Mozilla et Canonical (ne pas s’étonner ensuite de leur popularité). Mais ils ne sont pas nombreux, et les designers bénévoles qualifiés sont encore difficiles à trouver.

Solutions : Fournir du matériel de formation accessible aux développeurs, aux concepteurs et aux bénévoles, afin d’améliorer le niveau global de la conception et du design. Encourager les communautés qui permettent de collaborer entre développeurs et spécialistes de l’ergonomie et du design. Encourager dans les projets de logiciel libre d’avoir un responsable du produit (en terme fonctionnel), un responsable du design des interfaces, un spécialiste pour rédiger l’aide en ligne, et un ingénieur qualité, ces personnes étant distincts.

Mais pourquoi y a-t-il une pénurie de bénévoles qui ont des qualités de concepteurs ou de design ? Ce qui nous amène au troisième problème.

3. Les suggestions de design ou d’ergonomie ne sont pas souvent pas les bienvenues. Le Logiciel libre a une longue et saine tradition de « show me the code ». Mais lorsque quelqu’un signale un problème d’ergonomie, cette tradition se transforme en « Envoi ton patche », ce qui est inutile puisque la plupart des designers/concepteurs ne sont pas des développeurs. Trouver des spécialistes de l’utilisabilité pour obtenir de l’aide reste un sujet difficile dans le monde Open Source.

Solution: Mettre en place des processus pour que des spécialistes de l’ergonomie ou du design contribuent à des projets. Par exemple, le concepteur pourrait publier les spécifications sur le site Web du projet et invité à donner sont avis sur un blog, wiki, ou liste de diffusion. Le concepteur peut répondre avec courtoisie aux suggestions sur la conception/ergonomie/design (même les plus étranges). Le responsable du projet pourrait mettre en place une sorte d’outil de suivi pour poser des suggestions et les retours sur l’utilisation du produit. Au lieu d’un outil de suivi d’anomalie en lecture seule qui ne donne que des informations sur le code – ce qui rend plus facile à affiner, à approuver ou refuser, et de mettre des priorités (sous la forme de bénéfice pour l’application) sur la mise en œuvre des suggestions de conception de la même manière que les rapports d’anomalies.

Pourquoi les développeurs réagissent différemment aux propositions sur la facilité d’utilisation qu’aux propositions techniques ?

4.L’usuabilité est difficile à mesurer. Certaines qualités du logiciel sont facilement et précisément mesurables : elle ne fonctionne pas pour tout le monde, les performances, si une fonction est techniquement correcte, si une anomalie apparait au milieu d’une fonction, etc.

Mais ce sont les éléments les plus importants pour la qualité et pour l’adoption du logiciel qui sont les plus difficiles à mesurer : le logiciel est-il réellement utile, est qu’il rend le service attendu, son utilisation est-elle facile ou complexe, la mise à disposition des fonctions est-elle réfléchi ou simplement « entassé » dans le logiciel, est-ce qu’il ce comporte comme les gens s’y attendent, qu’elle proportion des gens réussissent à l’utiliser sans assistance, avec quelle rapidité il l’utilise, quel et le niveau de satisfaction après l’avoir utilisé, etc.

Ces qualités concernant l’interactivité avec les utilisateurs peuvent souvent être mesurées dans des tests d’utilisateur. Mais cela prend des heures ou des jours que les bénévoles ne sont pas disposés à dépenser. Les tests utilisateurs sont de qualité moyenne, prenant en compte les grands problèmes, mais en laissant les concepteurs sans preuve tangible pour persuader les développeurs de corriger les petits problèmes. Même si le problème est identifié, une solution doit être proposée et cela nécessite de nouveaux tests.

Sans test fréquent d’utilisateur, les projets communautaires comptent sur le retour d’information subjectif de personnes qui ont consacré un peu de temps et qui les adresse sur la liste de diffusion du projet. Mais ce que ces gens disent peut ne pas être représentatif de la réalité même de leur propre comportement, et encore moins du comportement des utilisateurs en général.

Solutions : Promouvoir des tests utilisateurs à petite échelle qui peuvent être réalisés par des bénévoles. Développer et promouvoir la capture d’écran, enregistrement vidéo, wideframes et d’autres logiciels qui rend les tests plus faciles à exécuter. Réaliser des tests à la fin des itérations sur des périmètres plus restreints que sur l’ensemble de l’application. Encourager les développeurs à faire confiance au retour des utilisateurs sur les résultats de tests plus que sur l’opinion des uns et des autres. Expliquer les choix de conception que les procédures de test ne peuvent pas couvrir. Expliquer vos choix et ce qui a amené à les faire.

Le manque de designer, à son tour, contribue à trois problèmes culturels dans les projets de logiciel libre.

5. Codé avant de concevoir. Le logiciel a tendance à être beaucoup plus utilisable s’il est, au moins approximativement, conçu avant que le code soit écrit.  L’IHM souhaité pour une application ou pour une fonctionnalité peut affecter le modèle de données, le choix des algorithmes, l’ordre dans lequel les opérations sont effectuées, le besoin de paralléliser les opérations, le format de stockage de données sur le disque, et même l’architecture de l’application dans son ensemble. Mais faire des wireframe (maquette d’interface statique), des spécifications et des prototypes semble ennuyeux pour un développeur, pour lui tout commence au moment du codage – il se soucie de l’interface plus tard.

Mais plus il y a de code écrit, plus il est difficile de corriger un problème de conception – ce qui engendre que les développeurs, essayeront de vous convaincre qu’il y a pas de problème, que cela pourra être corrigé dans une prochaine version, que ce n’est pas réellement un problème. Et si finalement, ils le corrigent, les utilisateurs devront réapprendre à utiliser l’interface, ce qui pourrait les frustrer et les encourager à envisager des programmes concurrents.

Solution : Faire travailler en binômes un designer et un développeur quand vous voulez développer un nouveau projet ou une nouvelle fonctionnalité. Mettre en place une culture du logiciel libre ou la conception passe en premier lieu, et le code en second.

6. Trop de cuisiniers. En l’absence de designer, les nombreux participants à un projet s’efforcent de contribuer à la conception de l’IHM, de la transition entre les pages, etc., indépendamment de ce qu’ils connaissent sur le sujet. Et plusieurs personnes à la conception et à la fabrication de l’IHM conduisent à toutes sortes d’incohérences, aussi bien dans la vision que dans le détail. La qualité de la conception de l’IHM est inversement proportionnelle au nombre de designers.

Solution : Les projets doivent avoir un responsable du design, qui prend en compte les différentes suggestions, et travaille avec les développeurs pour décider de ce qui est réalisable. Plus les spécifications seront détaillées et les grandes lignes directrices connues plus elles réduisent les erreurs potentielles durant la phase de développements.

7. Oubliez les idées préconçues. En l’absence d’une conception précise du designer qui donne son identité au logiciel, de nombreux développeurs pensent que ce que fait Microsoft ou Apple est la bonne manière de faire du design. Parfois, cela est vrai, mais parfois ce ne l’est pas. En imitant les mêmes desseins, les développeurs de Logiciels Libres répètent les mêmes erreurs, ils pérennisent ainsi l’idée qu’il n’y pas de meilleurs modèles que les solutions propriétaires.

Solution : Encourager le design innovant par le biais de prix et autres formes de publicité. Mettre à jour les guides du designer, le cas échéant, tenir compte des expériences de conception réussie.

Les autres raisons de l’existence de mauvaise ergonomie/design/convivialité indépendamment de la présence de designer.

Gratter où ça gratte. Les développeurs bénévoles travaillent sur des projets et des fonctionnalités qui les intéressent, ce qui signifie habituellement qu’ils vont utiliser le logiciel pour leur propre besoin. Ils sont les développeurs, mais également les utilisateurs. Un logiciel qui est censé avoir un périmètre à usage général finit par trop souvent devenir spécifique, complexe et très geek. Les fonctionnalités nécessaires pour les novices ou les non-techniques – tels que l’assistant de configuration, l’outil de reporting, la configuration du profil – sera négligé ou voir totalement inexistant. (Je ne vous parle de la documentation…)

Solutions : Mettre en place une culture de la simplicité, en mettant en place des design très légers, ne pas ajouter des ergonomies ridiculement complexes (compter le nombre de clic et de transition, pour chercher à les réduire systématiquement par deux), appliquer la règle des 80/20 dans la présentation des fonctions. Encourager les volontaires et les développeurs à demander à leurs amis et leurs familles d’utiliser le logiciel, s’inspirer des problèmes (pour ne pas les refaire) que les autres applications peuvent avoir quand vous les utilisez. (un exemple sur mon blog, le bouton ajouté est en haut, le bouton validé est en bas de la page, je suis obligé de faire tout défiler pour valider un nouvel ajout)

8.Laisser les idées se flétrir. Beaucoup de petits détails qui améliorent l’interface de l’application ne sont pas passionnants à réaliser.  Les détails comme la création d’une fenêtre de taille plus appropriée et sa position à sa première apparition, un focus sur un contrôle précis par défaut quand une fenêtre s’ouvre, affiner les messages d’erreur et un autre texte qui peut améliorer la compréhension, ou faire une barre de progression qui refléter plus fidèlement les progrès d’ensemble. Parce que ces choses ne sont pas passionnantes ou satisfaisantes, les années passent souvent avant qu’elles ne soient corrigées. Cela donne aux utilisateurs une impression générale de mauvaise conception (et un rejet de l’application), et qui à son tour, peut décourager les spécialistes de l’utilisabilité/ergonomie de contribuer aux projets.

Solution : Lors de la planification des corrections d’anomalies, prendre en compte combien de temps ils vont prendre, éventuellement, planifier rapidement les corrections mineures, ainsi les corrections sont corrigées vélocement. Faire participer les concepteurs d’interfaces dans ce calendrier, pour se prémunir contre les défauts de la facilité, « c’est juste une question d’UI ».

9. Apaiser les personnes avec des options. Dans tous les projets avec des contributeurs multiples, il arrive parfois que tout le monde ne soit pas d’accord sur des questions de conception. Lorsque les participants sont des salariés, généralement ils continuer à travailler, même s’ils sont en désaccord avec la conception. Mais avec des bénévoles, il est beaucoup plus probable que le mainteneur du projet accorde pour apaiser un contributeur d’ajouter un paramètre de configuration pour un comportement spécifique. Le nombre, l’obscurité, et la trivialité de ces préférences finissent par perdre les utilisateurs ordinaires.

Solution : les responsables des projets doivent avoir une culture de la simplicité (du 80/20). Il faut orienter le développement sous une forme modulaire (par composant), pour pouvoir retirer facilement une fonction, des options qui ne sont pas nécessaires à tous et permettent d’alléger l’interface. Diffusé le code peut aider à calmer la pression, en permettant d’adapter le code pour retirer des options qui ne sont pas nécessaires ou pour proposer des variantes du logiciel avec le comportement qu’ils veulent.

Des outils pour faire ses maquettes IHM

mar 12
2009

Un petit billet pour vous présenter deux applications Open source pour créer vos maquettes d’IHM Web ou de vos applications lourdes.

Les maquettes sont des représentations statiques d’une page d’un site ou d’une application. On doit y formaliser les éléments présents, leur taille approximative, leur localisation, leur appellation… Les maquettes peuvent aussi concerner un élément plus précis de l’interface (par exemple la représentation des différents états d’une partie de la page).
Là encore, le choix de l’application devra se faire en fonction du niveau de fidélité visuelle que l’on veut obtenir et de l’objectif que l’on vise (présentation à un client, document de travail, support d’un test utilisateur, etc.).

La première application permet de réaliser des drafts de maquettes, nous sommes plus proche de l’état de brouillon que de maquettes client. Idéal pour les brainstormings ou les spécifications internes. On peut l’utiliser pour travailler rapidement avec son équipe, hors d’un contexte client.

La première application est __Denim__ (Université de Berkeley), elle a l’avantage d’être gratuite et peut-être déployée sur son poste de travail. Elle est compatible avec les trois OS (Linux, Mac, Windows)

Denim se base sur un concept intéressant : conserver les avantages du prototypage papier, tout en y introduisant des notions d’interactivité : elle permet de lier chacune des pages de façon dynamique (on se dirige là dans des problématiques de prototypage). Idée intéressante pour nos projets en méthode Agile.

L’utilisabilité de l’application est discutable, il est au premier abord assez difficile de se familiariser avec l’accès et le comportement du menu. De plus, l’utilisation de Denim en tant qu’outil de travail est presque soumise à l’emploi d’une palette graphique.

Toutefois après quelques bonnes dizaines de minutes d’utilisation, on commence à se familiariser, le menu est particulier au premier abord, mais intelligent quand on commence à saisir le concept.

Une barre sur la gauche permet de commencer sur une vue globale, ensuite le plan du site, les story-boards, la page et pour finir le détail de la page.

Je ne peux que conseiller son utilisation, ensuite on n’aime ou pas. Je ne pense pas que cela soit mitigé.

Le site de l’application DENIM

La deuxième application est __Pencil Project__, Pencil est une extension qui transforme Firefox en une application de dessin permettant de réaliser des IHM, schémas canevas, etc. L’application peut-être aussi utilisée en standalone indépendamment de Firefox.

Vous disposez pour cela de différentes formes et widgets que vous pourrez modifier à votre convenance. Parmi ces formes, on retrouve le plus part des contrôles Windows. L’application propose également un éditeur wysiwyg ainsi que les fonctions nécessaires au positionnement et à la manipulation des éléments.

Chaque document peut contenir plusieurs feuilles de dessin apparaissant sous forme d’onglet. L’un des intérêts de Pencil est de vous permettre de superposer ces différentes feuilles.

Pencil permet d’enregistrer votre travail au format *.epz (a single XML-based file) ou de l’exporter au format *.png

Pencil est réellement très simple à manipuler et permet de créer, très facilement, un canevas de site web ou d’application. On pourra évidemment utiliser bien d’autres applications pour obtenir ce résultat, mais avec un poids de moins de 400 Ko et tout cela en Open Source, rien d’équivalent !

Une fois de plus je ne peux que conseiller son utilisation, il permet de faire des maquettes Web avec une très grande rapidité et une très bonne qualité de rendu. Ideal pour présentation client ou des spécifications.

Le site de Pencil Project

Le planning des itérations

jan 19
2009

Dernier billet d’une série de trois articles sur la panification Agile, nous avons abordé dans un précédent billet le principe de la planification Agile et détaillé dans un deuxième, une méthode de créer son planning de release. Ce dernier billet propose d’expliciter la démarche pour mettre en oeuvre le planning des itérations.

Pour rappel, le planning de relesase est une vue de haut niveau du planning du projet, le planning des itérations est une vue granulaire de ce même projet. Il a pour objectif de dénombrer l’ensemble des taches par cas d’utilisation.

La création du planning des itérations est une démarche plus simple en terme de phase par rapport au planning de release. L’équipe projet va dans un premier temps identifier l’ensemble des tâches par cas d’utilisation, estimer les taches et éventuellement mettre à jour le planning de release.

Identifier les tâches des cas d’utilisation

Avant de commencer cette activité, il est important de prendre conscience qu’il n’est pas nécessaire d’identifier l’ensemble des tâches pour l’ensemble des cas d’utilisation lors de cette première planification. Imaginons un projet avec 20 cas d’utilisation, en moyenne un cas d’utilisation regroupe 10 taches, nous devrions identifier plus de 200 taches ! Travail laborieux qui pourrait être remis en doute avec l’avancée du projet. Il est nécessaire de garder en tête les bases des méthodes agiles, dont « juste à temps« . Il n’est logique de se lancer dans une activité d’identification de l’ensemble des tâches avant d’avoir commencé le projet. Celui-ci pourrait voir évoluer son périmètre après les premières livraisons ou selon certaines contraintes non identifiées à ses débuts.

À partir de desiderata, nous allons essentiellement travailler sur la première itération et identifier les relations entre la première et la deuxième itération. Chaque cas d’utilisation de la première itération sera étudié pour en extraire les taches nécessaires à la conception, le développement et l’intégration.

À la fin de cette première étape, nous avons identifié les tâches nécessaires pour la première itération et éventuellement une première liste des tâches les plus importantes de la deuxième itération.

Nous obtenons un premier tableau qui peut être représenté de la manière suivante :

Itération Cas d’utilisation Taches Type
1 UC 103 – Demande d’inscription Spécification de ce cas d’utilisation Conception
CRUD des données dans le référentiel Réalisation
Création d’un formulaire de demande Réalisation
Créer le MCD dans le référentiel de données Réalisation
Validation des données du formulaire Réalisation
Affichage du formulaire Réalisation
Test du cas d’utilisation Intégration
1 UC 101 – Authentification Spécification de ce cas d’utilisation Conception
Formulaire d’authentification Réalisation
Appel référentiel de données Réalisation
Vérification des données d’authentification Réalisation
Vérification du rôle de l’utilisateur Réalisation
Affichage interface selon type de rôle Réalisation
Test de ce cas d’utilisation Intégration

Comme vous avez pu le constater, nous avons choisi d’identifier les taches avec des identifiants complémentaires : conception, réalisation et intégration (CRI). Cela nous permet d’évaluer la charge d’activité par acteur.

Calculer les charges par taches

Nous avons à présent une liste de tâches pour mettre en oeuvre nos cas d’utilisation, la deuxième phase consiste à calculer le cout de chaque tache. Les charges sont calculées en heures à la différence des cas d’utilisation qui sont calculés en ideal days. L’idéal est de réussir à avoir des taches d’une durée d’une journée pour faciliter le suivi et l’affectation des charges. Pour l’équipe un jour = taches.

À la suite de cette deuxième activité, nous mettons à jour notre tableau qui peut être représenté de la manière suivante :

Itération Cas d’utilisation Taches Type Charges
1 UC 103 – Demande d’inscription Spécification de ce cas d’utilisation Conception 2
CRUD des données dans le référentiel Réalisation 2
Création d’un formulaire de demande Réalisation 1
Créer le MCD dans le référentiel de données Réalisation 2
Validation des données du formulaire Réalisation 3
Affichage du formulaire Réalisation 1
Test du cas d’utilisation Intégration 1
1 UC 101 – Authentification Spécification de ce cas d’utilisation Conception 1
Formulaire d’authentification Réalisation 0,5
Appel référentiel de données Réalisation 0,5
Vérification des données d’authentification Réalisation 1
Vérification du rôle de l’utilisateur Réalisation 0,5
Affichage interface selon type de rôle Réalisation 2
Test de ce cas d’utilisation Intégration 1

Mise à jour du planning de release

Nous avons terminé notre travail sur le planning des itérations. Il nous faut réaliser un dernier travail qui consiste à vérifier s’il existe des éventuelles différences de charge entre les cas d’utilisation du planning de release et ceux du planning des itérations.

Le planning des itérations implique de rentrer dans le détail lors de la phase d’identification des taches, ce travail peut nous permettre de découvrir des éléments que nous avions oubliés lors de la planification des cas d’utilisation. D’ou l’importance de bien identifier les cas d’utilisation (cf. planning de release) lors de la phase de planification des release.

Créer son planning de release

jan 05
2009

Suite à mon précédent billet sur la planification en méthode Agile dans lequel j’avais abordé le principe du planning de release et d’itération, je vous propose de continuer sur la planification est de développer le planning de release. Dans un prochain billet, je détaillerais la réalisation du planning d’itérations.

Au point de départ, nous avons un client qui nous a contactés pour développer une application. Ce projet est constitué d’un ensemble de besoins à la fois fonctionnel et technique (backlog).

La première action à réaliser dans le cadre de ce projet est de définir le planning de release. L’objectif est d’avoir une vision globale du projet en terme de planning, d’activité et de coût.  Comment réaliser un planning de release ? Le schéma suivant nous donne une première approche, que nous allons détailler par la suite.

Un projet est soumis à plusieurs conditions, qui sont régies par le classique triangle : ressources (coût, budget), calendrier, périmètre (fonctionnalités, caractéristiques). Ce sont ses éléments qui vont nous permettre de constituer notre planning de release. Prenons un simple exemple, un client souhaite X fonctionnalités avec un cout de X euros. Après une première estimation des besoins du client, nous devons lui indiquer que par rapport aux coûts nous ne pourrons pas respecter le périmètre. Nous devons appliquer des priorités sur les fonctionnalités avec notre client pour choisir ce qui peut-être fait avec son budget.

L’exercice est de définir un planning de release selon les conditions inhérentes au triangle du projet.  Nous pourrons réaliser un premier planning qui sera adapté et modifié selon les contraintes de ce triangle et ceci en relation avec notre client.

Remarque : Comme je l’ai déjà indiqué dans mes précédents billets, je n’utilise pas la notion de « vélocité » et de « user story » dans mes projets.  Ces deux éléments sont trop vagues pour réaliser un projet en mode forfait, ce qui représente 100% de notre activité de développement.

Les activités à réaliser pour créer notre planning de release sont les suivantes :

  • Identifier les cas d’utilisation
  • Sélectionner la longueur d’une itération
  • Estimer la charge par cas d’utilisation
  • Appliquer les priorités sur les cas d’utilisation
  • Sélectionner les cas d’utilisation et les date de release

Identifier les cas d’utilisation

L’identification des différents cas d’utilisation est réalisée à partir d’un cahier des charges fourni par le client, d’une liste de fonctionnalités attendues dans le programme, etc.

La première démarche est de compartimenter en cas d’utilisation ou story (pour les non-techniques) les besoins fonctionnels et un cas d’utilisation transverse pour les éléments technique. Cette activité est réalisée par le product ower et le client. Ce sont les acteurs qui ont la vue fonctionnelle du projet.  La partie technique sera abordée lors de la constitution du planning des itérations par l’équipe du projet. Il est important de créer un cas d’utilisation tranverses qui prend en compte les besoins du client, car il peut impacter de manière importante sur le budget et le calendrier de projet.

Pour permettre une évaluation budgétaire réaliste du projet (et surtout éviter de s’en rendre compte au milieu ou à la fin du projet), nous essayons d’obtenir une bonne granularité de nos cas d’utilisation. C’est à dire une cinématique nominale pour chaque d’utilisation. Ce qui pourra se traduire sous la forme suivante :

Contexte :

Un utilisateur souhaite se connecter à l’application. Cet utilisateur possède un compte dans le référentiel de données.

Acteurs :

  • Collaborateur : utilisateur référencé dans le référentiel de données
  • Administrateur : Collaborateur ayant des droits d’administration.

Description du use case :

Ce mode d’authentification permet à un collaborateur de se connecter à l’application. Celui-ci accède à une page d’authentification où il saisit son couple identifiant/mot de passe. Le système vérifie les paramètres d’authentification auprès du référentiel de données.

Pré-requis :

L’utilisateur est enregistré dans lle référentiel de données.

Descriptif du cas d’utilisation

  1. Le collaborateur ouvre son navigateur et accède à l’application
  2. Le système demande son couple identifiant/mot de passe à l’utilisateur
  3. L’utilisateur saisit son couple identifiant/mot de passe et valide
  4. Le système vérifie les informations en relation avec le référentiel de données. En cas d’échec, on retourne à l’étape 2
  5. Dans le cas d’une première authentification, le système initialise et crée un compte utilisateur dans le référentiel de données. L’application redirige l’utilisateur vers la page principale de l’application.

Post-conditions :

Un compte utilisateur a été créé (en cas de première authentification) dans le système. L’utilisateur est sur la page principale de l’application et peut commencer à l’utiliser.

A la fin de cette phase, nous avons identifier les différents cas d’utilisation. Nous passer à la phase suivante.

Sélectionner la longueur d’une itération

Comme je l’ai expliqué précédemment dans mon billet sur « le planning en méthode Agile », la longueur d’une itération est subjective, la majorité des projets agile utilise une longueur de 30 jours (quatre semaines). Cette période ne doit pas être considéré comme acquise, car elle peut à la finalité, nous poser des problèmes dans notre projet. Je conseille  de prendre le temps de bien choisir sa longueur lors de la conception du planning de release.

Certains éléments du projet doivent nous aider à définir la période d’une itération. Le premier point qui peut nous aider concerne la longueur du projet dans sa globalité, si nous travaillons sur un petit projet avec de nombreux cas d’utilisation ou story, il est plus intéressant de faire des itérations courtes pour que l’équipe en charge de l’intégration puisse les valider rapidement. Inversement, tous les projets n’ont pas la chance d’avoir une équipe d’intégration attitrée, le planning peut aussi dépendre de leur disponibilité.
Pour choisir la longueur d’une itération,  Je vous propose une petite liste de facteurs qui peuvent vous aider à la définir :

  • La taille du projet
  • Le nombre de cas d’utilisation
  • Les priorités du client en terme de calendrier
  • La flexibilité au changement
  • L’implication du client dans cette méthode de projet
  • La présence d’une équipe d’intégration spécifiquement sur ce projet
  • La politique de l’entreprise sur le projet
  • Le taux d’incertitude sur la mise en oeuvre de certaines fonctionnalités

Ce qu’il faut retenir :  Il faut choisir une longueur et la conserver tous au long du projet. Cette longueur correspond au rythme du projet et de l’équipe. L’équipe prend son tempo sur ce rythme et le conserve, un changement de longueur engendrerait une coupure dans ce rythme et perturberaient rapidement les équipes et le rendement du projet.

Estimer la charge par cas d’utilisation

Un planning de release est un planning avec une vision très macro à la différence d’un planning des itérations. Néanmoins, il ne faut pas penser que le travail de calcul des charges doit se faire à la légère. Dans mon précédent billet sur le planning poker, je vous avais présenté une méthode pour calculer les charges par cas d’utilisation. L’activité de planification est réalisée de la même manière pour calculer les charges par cas d’utilisation.

Le calcul de charge ne porte pas exclusivement sur le développement, mais aussi sur la partie spécification (conception) et intégration. Dans notre méthode de travail, nous calculons les charges en idéal days et non en vélocité. La vélocité est considérée comme trop floue par nos clients et les équipes.

Chaque cas fonctionnel est présenté à l’équipe projet par le product ower (par celui qui à la vision la plus fonctionnelle du projet), une première planification est réalisée par la méthode du planning poker.

Les charges pourront être réajustées après la réalisation du planning des itérations (identification des taches par cas d’utilisation). À la fin de ce travail, nous obtenons notre tableau des charges par cas d’utilisation :

Cas d’utilisation Charge
CU 100 13
CU 101 21
CU 102 8
CU 103 8
CU 104 5

Appliquer les priorités sur les cas d’utilisation

Un des points les plus importants du planning de release est d’appliquer une priorité sur chaque cas d’utilisation. En effet, cela permet de sélectionner les cas d’utilisation qui devront être développés en premier. Cette priorité est appliquée par le client et le responsable du projet, néanmoins, il est important de prendre en compte l’avis des développeur qui peuvent apporter une vision différente concernant la chronologie de réalisation des cas d’utilisation, ainsi que le risque afférent à chaque cas d’utilisation. .

À la fin de ce travail, nous obtenons notre tableau des priorités par cas d’utilisation :

Cas d’utilisation Priorité Charge
CU 100 1 13
CU 101 3 21
CU 102 2 8
CU 103 5 8
CU 104 4 5

Sélectionner les cas d’utilisation et les dates de release

Après toute cette activité que l’on peut quantifier au maximum sur 2 jours (selon la taille du projet et l’expérience des acteurs), nous avons les éléments suivants :

  • La longueur d’une itération,
  • Une liste des cas d’utilisation, avec leurs priorités et les charges.

Nous sommes fin prêts pour réaliser notre planning de release. Ce travail est maintenant assez simple, nous allons  associer les cas d’utilisation et les itérations. Pour ce faire, nous prenons les cas d’utilisation prioritaires, nous prenons leurs charges, nous les positionnons dans les itérations.

Nous avons sélectionné pour ce projet une longueur d’itération de 30 jours. Nous allons créer le planning suivant :

Itérations Cas d’utilisation Priorité Charge
Itération 1 CU 100 1 13
Itération 2 CU 101 3 21
Itération 1 CU 102 2 8
Itération 2 CU 103 5 8
Itérations 1 CU 104 4 5

Nous avons dans notre exemple 2 itérations, nous pouvons proposer le planning de release suivant :

  • La première livraison au bout de 30 jours comportant 3 cas d’utilisation
  • Une deuxième livraison au bout de 60 jours avec l’ensemble du projet.

Il faudra prévoir d’autres livraisons après les retours du client à propos de la première livraison et ensuite lors de la deuxième livraison.

Le Planning Agile

déc 30
2008

En méthode Agile, il existe deux types de plannings, le planning de release et le planning des itérations (ou sprint).

Planning release

Le planning release permet d’avoir une vision de la réalisation du projet dans sa globalité. Nous pouvons comparer un planning de release à une roadmap d’un projet.

L’exercice à réaliser dans un planning de release est d’évaluer grossièrement les fonctions qui seront livrées à une date donnée (date driven) ou choisir une date de livraison brute pour un lot de fonctionnalités (feature driven). Un planning de release est constitué de jalon qui représente le périmètre du projet à un moment donné.

Le but du planning release est d’avoir assez d’informations pour décider si le projet produira assez de ROI (Retour sur investissements) pour au moins le payer (et gagner de l’argent). Il permet de définir les fonctions que nous devrons développer en priorités (on n’oublie pas la règle des 80/20). Il indique au client, à l’équipe, à la communauté les différentes dates de livraisons.

C’est durant l’étape de définition, du planning release que l’on choisira la durée d’une itération. On parle souvent de sprint de 30 jours en Scrum, ce choix est assez arbitraire et ne se justifie pas, si ce n’est pour indiquer que cela doit être un maximum. Le choix de la longueur d’une itération doit être sélectionnée par rapport au planning de release global et les fonctionnalités du projet. Si le projet est constitué de nombreuses petites fonctionnalités sur un laps de temps court (3 à 4 mois de projet), il est peut-être plus intéressant de faire des itérations de 15 jours pour les faire tester par le client ou les bêta-testeur.

Un planning release est constitué de plusieurs itérations (ou sprint), qui elles-mêmes incluent les fonctionnalités du projet (backlog) au sens fonctionnel.

Planning des itérations

A la différence d’un planning de release qui est une vue de haut niveau du projet, le planning des itérations est une vue à court terme avec plus de détail. Un planning des itérations détail ce qui est nécessaire pour réaliser dans sa globalité une fonctionnalité (un cas d’utilisation).

Un planning d’itérations est constitué de cas d’utilisation (ou story) avec les tâches associées.

Agile Tour 2008

sept 26
2008

Agile Tour, une série d’événements gratuite répartie sur plusieurs villes européennes pendant tout le mois d’octobre 2008.

L’édition 2008 est organisée sur 7 conférences réparties en France et en Suisse :

   * 01 octobre : Besançon (Le programme)
   * 03 octobre : Mulhouse (Le programme)
   * 06 octobre : Genève (Le programme)
   * 09 octobre : Grenoble (Le programme)
   * 14 octobre : Lille
   * 16 octobre : Toulouse (Le programme)
   * 23 octobre : Valence (Le programme)

C’est le moment idéal pour rencontrer des professionnels de l’agilité, de voir des exemples de mise en place d’Agile en entreprises. Par exemple, Yahoo sera présent à Valence et Grenoble.

La conférence de Grenoble est composée de plus de 12 conférences.

Je ne peux que vous conseiller d’y aller faire un tour, pour ma par je serais le 9 octobre à Grenoble.

Planning Poker – 2ème épisodes

sept 09
2008

Lors de mon dernier billet sur le planning poker, je vous avez indiqué que je détaillerais la méthode (carte et attribution des points) pour bien mettre en œuvre cette technique. Me voila de nouveau pour clore ma présentation sur le planning poker.

Le Planning poker combine des opinions d’experts, des analogies et des échanges dans une ambiance agréable et ludique, qui permettent d’obtenir des estimations rapides avec des résultats fiables.

Les participants au planning poker inclus tous les développeurs de l’équipe. Rappelez-vous que le terme développeurs en méthode agile se réfère à tous les programmeurs, testeurs, ingénieur système, ingénieurs base de données, les architectes, concepteurs de l’interaction avec l’utilisateur, et ainsi de suite.

Sur un projet agile, qui ne dépasse pas généralement plus dix personnes. Si c’est le cas, il est généralement préférable de se séparer en deux équipes. Chaque équipe pourra alors faire une estimation de manière indépendante. Le directeur de produit participe à la planification, mais il ne fait d’estimation.

Au début de la planification, chaque participant reçoit un jeu de cartes. Chaque jeu de cartes distribué doit permettre de réaliser une estimation fiable. Chaque participant peut, par exemple, recevoir un jeu de cartes qui va de 0, 1, 2, 3, 5, 8, 13, 20, 40 à 100. Les cartes doivent être prêtes avant la réunion de planification et les nombres doivent être assez grands pour être vu de l’autre côté de la table.

Pour chaque cas d’utilisation ou fonction à estimer, un animateur lit le descriptif. Le modérateur est généralement le directeur de produit ou un architecte. Toutefois, le modérateur peut être n’importe qui, car il n’existe pas de privilège associé avec le rôle. Le directeur de produit répond à toutes les questions des participants. Néanmoins, tout le monde doit savoir qu’à un certain moment les discussions complémentaires ne conduisent pas à améliorer la précision. L’objectif avec le planning poker est de ne pas procéder à une estimation qui supportera toutes les futures fonctionnalités. Au contraire, l’objectif est de qualifier la première vue pour arriver sur la fin à une estimation fiable, d’où une première estimation peut être considérée à « bon marché ».

Après que toutes les questions ont trouvé des réponses (enfin, on essaye), chaque participant choisit une carte représentant son estimation. Les cartes sont montrées une fois que chaque participant a fait son choix. À ce moment-là, toutes les cartes sont retournées en même temps de manière à ce que tous les participants puissent voir chaque estimation individuelle.

Il est très probable à ce stade que les estimations diffèrent sensiblement. Il s’agit en fait d’une bonne nouvelle. Si les estimations diffèrent, les participants avec des valeurs hautes et des valeurs basses doivent expliquer la raison de leurs estimations. Il est important que cela ne fonctionne pas comme un reproche à l’intention des participants. Mais un échange sur des visions différentes.

A titre d’exemple, un participant avec une estimation haute peut dire: Eh bien, pour tester ce cas d’utilisation, nous devons créer une base de données avec des objets fictifs. Cela pourrait nous prendre un jour. Je pense aussi que l’algorithme de compression n’est pas bon, ce qui impliquerait d’en développer un nouveau plus efficace . Le participant qui a fait une faible estimation peut répondre : Je pensais que nous allions stocker les informations dans un fichier XML – ce qui serait plus facile qu’une base de données.

Le groupe peut discuter de nouveau sur le cas d’utilisation et de leurs estimations respectives quelques minutes de plus. Le modérateur peut prendre des notes qu’il pense utiles pour le développement et le test de ce cas d’utilisation. Après la discussion, chaque participant fait une nouvelle estimation en sélectionnant une carte. Les cartes sont une fois de plus gardées secrètes jusqu’à ce que tout le monde ait réalisé son estimation au cours de laquelle elles seront affichées en même temps.

Dans de nombreux cas, les estimations convergent déjà au second tour. Mais si cela n’est pas le cas, il faut continuer à répéter le processus. L’objectif pour les participants est de converger vers une seule estimation qui peut être utilisée pour le cas d’utilisation. Cela prend rarement plus de trois tours de scrutin, mais le processus doit continuer jusqu’à ce que les estimations convergent. Il n’est pas nécessaire que tout le monde dans la pièce retourne une carte avec exactement la même estimation. Si je suis un modérateur et sur le deuxième tour quatre participants proposent, 5, 5, 5 et 3, je vais demander au participant qui a fait la plus faible estimation, si il est OK si on décide d’une estimation à 5. Encore une fois, l’estimation ne nécessite pas une précision absolue, mais raisonnable.

Le droit à la discussion

Certaines discussions sur la conception préliminaire du cas d’utilisation sont nécessaires et appropriées, lors de l’estimation. Toutefois, dépenser trop de temps sur des discussions à propos de la conception est souvent un gaspillage d’efforts et de temps. Voici un moyen efficace d’encourager certains débats, mais assurez-vous qu’il ne va pas trop durer.

Acheter un sablier, et placez-le au milieu de la table de poker où la planification est en cours. Toute personne assistant à la réunion doit pouvoir voir le compte à rebours à tout moment. Lorsque le sablier est épuisé (environ deux minutes), la prochaine série de cartes est jouée. Si un accord n’est pas atteint, la discussion peut se poursuivre. Mais quelqu’un doit tourner immédiatement le sablier pour limiter la discussion à deux minutes. Le sablier n’a rarement besoin d’être utilisé plus de deux fois. Avec cette méthode, les équipes apprennent à estimer plus rapidement.

Les petites sessions

Il est possible de jouer au poker avec un sous-ensemble de l’équipe, plutôt que de tout le monde. Ce n’est pas idéal, mais cela est parfois une option raisonnable, surtout si l’équipe est nombreuse, s’il y a beaucoup de cas à estimer, comme cela peut se produire au début d’un nouveau projet.

La meilleure façon d’y parvenir est de scinder la plus grande équipe en deux ou trois petites équipes, dont chacun doit disposer d’au moins trois participants. Il est important que chacune des équipes de participant estime successivement.

Pour ce faire, commencer avec toutes les équipes ensemble dans une session de planification conjointe d’une durée d’une heure environ. Demandez-leur une estimation pour 10 à 20 cas d’utilisation. Ensuite, assurez-vous que chaque équipe a une copie des cas d’utilisation et leurs estimations et qu’ils les utilisent comme base pour estimer les cas d’utilisations qu’ils leur sont donnés à estimer.

Quand jouer au planning poker

Les équipes devront jouer au planning poker à deux moments différents. Tout d’abord, il sera généralement nécessaire de faire des estimations sur un grand nombre de cas d’utilisation avant que le projet ne commence officiellement ou au cours de sa première itération. Estimer une première série de cas d’utilisation avec l’équipe sous la forme de deux ou trois réunions allant d’une à trois heures chacune. Naturellement, cela dépendra du nombre de cas d’utilisation à estimer et de la taille de l’équipe, et si le directeur de produit a les capacités de préciser les exigences de manière succincte.

Deuxièmement, les équipes devront faire de nouveaux efforts à chaque nouvelle estimation de cas d’utilisation qui sont identifiés au cours d’une itération. Une façon d’y parvenir est de planifier une estimation sous la forme de réunion très courte vers la fin de chaque itération. Normalement, cela est tout à fait suffisant pour estimer les travaux qui sont à réaliser au cours de l’itération, et permet d’obtenir les priorités à appliquer à l’itération en cours.

Sinon, Kent Beck propose une enveloppe accrochée sur le mur avec tous les nouveaux cas d’utilisation positionnés dans l’enveloppe. L’équipe va récupérer un ou deux cas d’utilisation dans l’enveloppe et les estimer. Les équipes doivent établir une règle pour eux-mêmes, généralement que tous les cas d’utilisation doivent être estimés d’ici la fin de la journée ou à la fin de l’itération. J’aime bien l’idée d’accrocher une enveloppe sur le mur qui contient les cas d’utilisation non estimés. Toutefois, je préfère lorsque quelqu’un qui a un peu de temps consacre quelques minutes à faire une estimation, il trouve au moins une autre personne et ils font une estimation conjointe.

Pourquoi le planning poker fonctionne

Maintenant que je viens de décrire la mise en oeuvre du planning poker, je vous propose de passer un petit moment sur les raisons pour lesquelles il fonctionne si bien.

Tout d’abord, le planning poker rassemble de multiples expertises pour réaliser les estimations. Parce que ces experts forment une équipe pluridisciplinaire sur un projet de développement applicatif, ils sont le plus à même pour estimer une tâche que d’autres personnes. Après avoir réalisé un examen approfondi de la littérature sur les estimations des charges en développement, Jørgensen (2004) a conclu que les personnes les plus compétentes pour résoudre la tâche doivent l’évaluer .

Deuxièmement, un dialogue animé s’ensuit au cours de la planification, et les planificateurs sont appelés par leurs pairs pour justifier leurs estimations. Cela a été proposé pour améliorer la précision de l’estimation, en particulier sur les cas d’utilisation avec de grandes quantités d’incertitude (Hagafors et Brehmer 1983). Être invité à justifier les estimations a démontré que cela se traduit par une meilleure estimation pour compenser les informations manquantes (Brenner et coll. 1996). C’est d’autant plus important sur un projet agile parce que les cas d’utilisations sont souvent intentionnellement vagues.

Troisièmement, des études ont montré que la moyenne des estimations individuelles conduit à de meilleurs résultats (HOEST et Wohlin 1998) de même que des discussions de groupe de planificateurs (Jørgensen et Moløkken 2002). Le groupe de discussion est la base du planning de poker, et ces discussions aboutissent à une sorte de moyenne des estimations individuelles.

Finalement, le planning poker fonctionne parce que c’est amusant !

A lire !

Nos recommandations.

Liste des pages

Information générale à propos de ce blog...