Agile Tour 2010, Toulouse, le 21 Octobre, IUT Blagnac
La SIGMAT est heureuse de vous inviter à l'étape toulousaine de
l'AGILE TOUR 2010, le 21 octobre 2010 à l'IUT Blagnac, de 9H à 18H.
Cette année, la richesse et la diversité des interventions étend
l'intérêt de la journée à un public impliqué dans de gros projets
industriels (pas uniquement issus du logiciel), dans la conception de
systèmes critiques et dans la conception de systèmes matériels.
Des thèmes originaux seront également abordés comme l'enseignement des
pratiques agiles, les enjeux sociaux de ces pratiques, l'agilité au
coeur de l'innovation.
Les pratiques agiles, pour être vraiment efficaces, impliquent une
redistribution des rôles de chacun.
Ainsi, la relation client / fournisseur, le rôle du maître d'ouvrage,
le pilotage de projet seront abordés dans ce nouveau contexte.
De nouveaux secteurs industriels (systèmes embarqués) et métiers (DSI,
RH) seront également mis en lumière à travers des retours
d'expérience.
Les ateliers compléteront efficacement les présentations en vous
permettant de mieux comprendre et d'expérimenter principes et outils
de l'agilité.
Le programme détaillé :
http://www.agiletour.org/fr/at2010_toulouse_programme.html
La manifestation est ouverte à un large public désireux de découvrir
les bénéfices ou de renforcer ses connaissances dans le domaine de
l'Agilité.
La cohabitation des expériences et des compétences, la convivialité de
l'organisation favorise la discussion entre les acteurs pour faire de
cette journée un temps fort à vocation applicative pour chacun.
Managers, Enseignants, DSI, Responsables RH, Architectes, Chefs de
projet, Responsables qualité, Acheteurs, Développeurs trouveront ainsi
des réponses pratiques à des problèmes concrets tels que la montée en
qualité des prestations, la compétitivité des équipes ou
l'amélioration de la motivation des équipes.
L'inscription, gratuite, se fait via le formulaire :
http://www.agiletour.org/fr/toulouse_inscription.html
Les détails pour nous rejoindre sur le site de l'IUT Blagnac :
http://www.agiletour.org/fr/at2010_toulouse_lieu.html
--
antoine, pour l'équipe d'organisation
User Stories, ATDD et BDD
User Story:
Une user story est une façon de « spécifier » un besoin fonctionnel.
C'est au-delà de l’aspect écrit d’une spécification, surtout un moyen de communiquer entre le Product Owner (ou analyste métier) et l’équipe de développement. Je vous renvoie à l’article de Martin Fowler à ce sujet.
Une user story est exprimée en utilisant la phrase suivante :
En tant que « rôle », je veux « faire une action », afin d’ « atteindre un objectif »
Il est important de définir le rôle, l’action, mais aussi l’objectif à atteindre. Le fait de réfléchir à ces trois éléments permet de préciser son besoin mais aussi son pourquoi : Un point important pour l’estimation de la valeur ajoutée de la user story.
Granularité.
Plus la granularité d’une user story est fine, plus l’implémentation en sera simplifiée. Voir même, influencera l'architecture de la solution et améliorera l'aspect unitaire et autonome du code produit.
Une user story a une granularité en fonction de sa maturité.
Je prends pour exemple la user story suivante :
« En tant qu’utilisateur, je veux me connecter à google afin d’accéder à tous mes services en lignes »
A elle seule, cette user story représente (presque) tout ce que google m’apporte.
Bill Wake propose une méthode d’estimation du bien fondé d’une user story : INVEST
ATDD:
Mais comment passer d’un besoin exprimé en langage métier en un produit exprimé en langage de programmation. (Il y a eu UML, un temps…)
L’approche ATDD ou Acceptance Test Driven Development
C’est d’une certaine manière la faculté de renvoyer l’envoyeur à sa responsabilité de clairement préciser son besoin par la définition des critères de contrôles qui lui serviront à vérifier l’adéquation du produit au besoin.
Il s’agit de compléter la user story par des critères d’acceptance.
Reprenons l’exemple :
« En tant qu’utilisateur, je veux me connecter à google afin d’accéder à tous mes services en lignes »
Imaginons les critères suivants :
Premier élément de réflexion :
Un critère d’acceptance doit être :
J’utilise cette méthode d’habitude allouée aux tâches pour les critères d’acceptance.
Un critère d’acceptance doit avoir les caractéristiques suivantes :
Voilà, j'ai fait le tri.
C’est un exemple bien sur, et je n’ai pas le moyen de communiquer avec les équipes de développement Google pour qu’ils me fassent part de leurs remarques afin d’améliorer l'exhaustivité et raffiner cette liste de critères.
BDD :
J’ai une user story et des critères d’accetance. Maintenant, comment spécifier le comportement de l’application attendu pour répondre au besoin.
A ce stade, j’utilise le langage Gherkin défini pour le BDD ou Behavior Driven Developement : Given / When / Then (And)
Ce langage permet de spécifier les scénarios utilisateurs, le comportement de l’application.
La user story s'exprime ainsi au final :
« En tant qu’utilisateur, je veux me connecter à google afin d’accéder à tous mes services en lignes »
Scénario 1 : Accéder à la page de connexion
Given L’utilisateur n’est pas connecté
And L’utilisateur est sur la page d’accueil google
When L’utilisateur demande à se connecter
Then La page de connexion est affichée
Scénario 2 : Se connecter
Given L’utilisateur n’est pas connecté
And L’utilisateur est sur la page de connexion
When L’utilisateur saisi son identifiant
And L’utilisateur saisi son mot de passe
And L’utilisateur clique sur « Connexion »
Then La page d’accueil google s’affiche en <30s
And L’identifiant de l’utilisateur est affiché à droite dans le bandeau
Je n'ai volontairement pas traduit Given / When / Then (And).
Le langage gherkin est interprété par de plus en plus d’outils de test (robotframework, cucumber, fitnesse, …).
Il suffit, dans ce cas, de simplement copier/coller les scénarios dans votre outil préféré de test. Ne reste plus qu’à implémenter les keywords ou autres fixtures. Robotframework pour les tests IHM, cucumber pour les tests unitaires par exemple.
N.B.: Cet article m’a été fortement inspiré par les travaux de Raj Mudhar au sujet de l’ATDD
Et aussi du tutoriel BDD sur robotframework proposé par Yannick Ameur
Une user story est une façon de « spécifier » un besoin fonctionnel.
C'est au-delà de l’aspect écrit d’une spécification, surtout un moyen de communiquer entre le Product Owner (ou analyste métier) et l’équipe de développement. Je vous renvoie à l’article de Martin Fowler à ce sujet.
Une user story est exprimée en utilisant la phrase suivante :
En tant que « rôle », je veux « faire une action », afin d’ « atteindre un objectif »
Il est important de définir le rôle, l’action, mais aussi l’objectif à atteindre. Le fait de réfléchir à ces trois éléments permet de préciser son besoin mais aussi son pourquoi : Un point important pour l’estimation de la valeur ajoutée de la user story.
Granularité.
Plus la granularité d’une user story est fine, plus l’implémentation en sera simplifiée. Voir même, influencera l'architecture de la solution et améliorera l'aspect unitaire et autonome du code produit.
Une user story a une granularité en fonction de sa maturité.
Je prends pour exemple la user story suivante :
« En tant qu’utilisateur, je veux me connecter à google afin d’accéder à tous mes services en lignes »
A elle seule, cette user story représente (presque) tout ce que google m’apporte.
Bill Wake propose une méthode d’estimation du bien fondé d’une user story : INVEST
ATDD:
Mais comment passer d’un besoin exprimé en langage métier en un produit exprimé en langage de programmation. (Il y a eu UML, un temps…)
L’approche ATDD ou Acceptance Test Driven Development
C’est d’une certaine manière la faculté de renvoyer l’envoyeur à sa responsabilité de clairement préciser son besoin par la définition des critères de contrôles qui lui serviront à vérifier l’adéquation du produit au besoin.
Il s’agit de compléter la user story par des critères d’acceptance.
Reprenons l’exemple :
« En tant qu’utilisateur, je veux me connecter à google afin d’accéder à tous mes services en lignes »
Imaginons les critères suivants :
- L’utilisateur peut se connecter
- La barre de menu google présente les services disponibles
- L’utilisateur peut accéder à tous ces services
- Google trace la connexion de l’utilisateur
- Google présente la liste des nouvelles fonctionnalités disponibles
Premier élément de réflexion :
Un critère d’acceptance doit être :
- Une vision utilisateur
- Ne pas proposer de solution
- Ne pas être interne à la fonction
- Google trace la connexion de l’utilisateur. C’est un traitement interne à la fonction, l’utilisateur n’est pas informé. Cela pourrait faire l’objet d’une autre user story du type En tant qu’administrateur google, je veux être informé de toute connexion, afin d’analyser le trafic sur le site
J’utilise cette méthode d’habitude allouée aux tâches pour les critères d’acceptance.
Un critère d’acceptance doit avoir les caractéristiques suivantes :
- Specific = défini et explicite
- Measurable = quantifiable, observable
- Achievable = peut exister, peut être fait
- Relevant = approprié à cette user story
- Time bound = quand cela doit-il intervenir
Criteria | Specific | Measurable | Achievable | Relevant | Time Bound |
L’utilisateur peut se connecter | Acceder à la page de connexion Saisir son identifiant et son mot de passe et demander la connexion | L’utilisateur voit son identifiant à droite dans le bandeau google | OUI | OUI | <30s |
La barre de menu google présente les services disponibles | On a la barre de manu même non connecté | | | N | |
L’utilisateur peut accéder à tous ces services | C’est spécifique par service | | | N | |
Google présente la liste des nouvelles fonctionnalités disponibles | Message « Découvrez nos nouvelles fonctionnalités » | Message affiché en haut à droite | OUI | N | ce n’est pas le fait de se connecter qui déclenche ce message |
Voilà, j'ai fait le tri.
C’est un exemple bien sur, et je n’ai pas le moyen de communiquer avec les équipes de développement Google pour qu’ils me fassent part de leurs remarques afin d’améliorer l'exhaustivité et raffiner cette liste de critères.
BDD :
J’ai une user story et des critères d’accetance. Maintenant, comment spécifier le comportement de l’application attendu pour répondre au besoin.
A ce stade, j’utilise le langage Gherkin défini pour le BDD ou Behavior Driven Developement : Given / When / Then (And)
Ce langage permet de spécifier les scénarios utilisateurs, le comportement de l’application.
La user story s'exprime ainsi au final :
« En tant qu’utilisateur, je veux me connecter à google afin d’accéder à tous mes services en lignes »
Scénario 1 : Accéder à la page de connexion
Given L’utilisateur n’est pas connecté
And L’utilisateur est sur la page d’accueil google
When L’utilisateur demande à se connecter
Then La page de connexion est affichée
Scénario 2 : Se connecter
Given L’utilisateur n’est pas connecté
And L’utilisateur est sur la page de connexion
When L’utilisateur saisi son identifiant
And L’utilisateur saisi son mot de passe
And L’utilisateur clique sur « Connexion »
Then La page d’accueil google s’affiche en <30s
And L’identifiant de l’utilisateur est affiché à droite dans le bandeau
Je n'ai volontairement pas traduit Given / When / Then (And).
Le langage gherkin est interprété par de plus en plus d’outils de test (robotframework, cucumber, fitnesse, …).
Il suffit, dans ce cas, de simplement copier/coller les scénarios dans votre outil préféré de test. Ne reste plus qu’à implémenter les keywords ou autres fixtures. Robotframework pour les tests IHM, cucumber pour les tests unitaires par exemple.
N.B.: Cet article m’a été fortement inspiré par les travaux de Raj Mudhar au sujet de l’ATDD
Et aussi du tutoriel BDD sur robotframework proposé par Yannick Ameur
Are you ready-ready to be done-done
Jeff-Sutherland, continuant l’agilisation de Systematic, présente une évolution du concept de done/done : le ready/ready
Ou plus exactement la Feature ready/ready checklist.
A partir de la notion de done/done, normalement, une équipe construit une liste de typologie de tâche ayant pour objectif l’atteinte du done. Cette checklist se place au niveau Scrum Team, côté développement donc.
La checklist ready/ready reprend ce concept et le remonte d’un cran, côté demandeur (Product Owner, Architecte, et lead developper).
En clair, quelles sont les tâches de préparation nécessaires au passage d'une feature dans l'état "Not Started" de ces user stories dans le task board (repris du Kanban Lean) :
• Preparation de la feature pour l’engagement : préparation à l’acceptation
• Clarification de la feature pour l’équipe : prise en compte des contraintes de l’équipe de développement en amont
• Préparation de la feature pour implémentation : passage de la feature aux stories pour préparation aux sprints.
Tous ces points sont fortement conditionnés par la mise en place du pilotage par les tests d’acceptance (ATDD)
Deux métriques sont utilisées :
• Le Process Efficiency
S’il faut une journée idéale pour produire une user story mais qu’en fait elle est produite en 5 jours, alors l’efficacité est de 20%. Le but étant d’augmenter cette efficacité en préparant au mieux l’implémentation, la checklist ready/ready est construite en ce sens.
• Fix time after failed builds
De la même manière, quelle est l’efficacité du processus concernant la correction d’une erreur de build. Ici, les pratiques ATDD permettent la réduction de temps.
Plus que le nombre de bugs, c’est bien le temps de correction qui importe.
Ou plus exactement la Feature ready/ready checklist.
A partir de la notion de done/done, normalement, une équipe construit une liste de typologie de tâche ayant pour objectif l’atteinte du done. Cette checklist se place au niveau Scrum Team, côté développement donc.
La checklist ready/ready reprend ce concept et le remonte d’un cran, côté demandeur (Product Owner, Architecte, et lead developper).
En clair, quelles sont les tâches de préparation nécessaires au passage d'une feature dans l'état "Not Started" de ces user stories dans le task board (repris du Kanban Lean) :
• Preparation de la feature pour l’engagement : préparation à l’acceptation
• Clarification de la feature pour l’équipe : prise en compte des contraintes de l’équipe de développement en amont
• Préparation de la feature pour implémentation : passage de la feature aux stories pour préparation aux sprints.
Tous ces points sont fortement conditionnés par la mise en place du pilotage par les tests d’acceptance (ATDD)
Deux métriques sont utilisées :
• Le Process Efficiency
S’il faut une journée idéale pour produire une user story mais qu’en fait elle est produite en 5 jours, alors l’efficacité est de 20%. Le but étant d’augmenter cette efficacité en préparant au mieux l’implémentation, la checklist ready/ready est construite en ce sens.
• Fix time after failed builds
De la même manière, quelle est l’efficacité du processus concernant la correction d’une erreur de build. Ici, les pratiques ATDD permettent la réduction de temps.
Plus que le nombre de bugs, c’est bien le temps de correction qui importe.
Robotframework pour Eclipse: nouveau starter
Cette nouvelle version change complètement le mode de lancement d'Eclipse, puisqu'il utilise maintenant le launcher Eclipse equinox. Assurance d'une meilleur prise en charge du chargement des bundles.
Forfait en AT
Je suis actuellement en mission de coaching Agile chez un industriel.
L'équipe est en assistance technique dans les locaux du client avec le businesss.
Je suis agréablement surpris de voir l'engagement de l'équipe lors des planning de sprint.
Bien que n'ayant aucune contrainte contractuelle, l'équipe se sent totalement engagé dans l'accomplissement du scope prévu et dans le délai prévu.
Comme quoi, quand les gens travaillent ensemble, chacun sait prendre sa place et faire ce qu'il a à faire.
Sans doute une réponse pragmatique à la problématique du forfait.
L'équipe est en assistance technique dans les locaux du client avec le businesss.
Je suis agréablement surpris de voir l'engagement de l'équipe lors des planning de sprint.
Bien que n'ayant aucune contrainte contractuelle, l'équipe se sent totalement engagé dans l'accomplissement du scope prévu et dans le délai prévu.
Comme quoi, quand les gens travaillent ensemble, chacun sait prendre sa place et faire ce qu'il a à faire.
Sans doute une réponse pragmatique à la problématique du forfait.
Robotframework pour Eclipse
Et voilà, après quelques nœuds au cerveau et de belles prises de têtes, j'ai mis à disposition une librairie de tests automatisés type ATDD d'application RCP / SWT sous Eclipse pour Robotframework.
Basé sur SWTBot, robotframework-eclipselibrary fait le pont entre robotframework et ce dernier.
EclipseLibrary reprend les même principes que SWTBot en les transposant sous forme de mots-clés pour RobotFramework.
Vous pouvez retrouver la liste complète des mots clés disponibles ici.
Pour l’instant c’est une « release candidate » comme on dit, en clair, il doit certainement rester des bugs quelque part.
Toutes les instructions d’installation, les concepts et la doc sont disponibles sur le site robotframework-eclipselibrary.
Un user group est disponible aussi.
PS : Un grand merci à Eric Rubinat pour son aide précieuse sur Eclipse et Bruno Marchesson pour ce qui est de l’introspection Java.
SigmaT 15 : la rentrée
C'est reparti!
Prochain rendez-vous le 17 septembre prochain à partir de 16h.
En résumé :
- L'enseignement des méthodes Agiles, IUP ISI et IUT Blagnac
- Stub et Mock montent sur scène, par Olivier Azeau
- Retour d'experience Scrum à Montpellier, Olivier Destrade, chef de projet ET ScrumMaster chez IOcean
- Champ ouvert
- et l'Apéro
En détail et pour s'inscrire :
L'agilité vue par les développeurs : "Une journée en enfer"
C'est le titre de l'article co-écrit avec Jean-Baptiste Cazaux et avec l'aide de Pascal Ognibene qui parrait dans la version papier du magazine Programmez (n°133 de Septembre).
Rien moins que 3 pages dans le dossier "Agile et productif", tout ça pour 5€95 seulement!
A lire absolument!
Un avant gout en basse résolution
Inscription à :
Articles (Atom)