Utilisation des techniques Kanban pour maîtriser le développement incrémental Jeff Patton AgileProductDesign.com jpatton@acm.org Téléchargez cette présentation sur : www.agileproductdesign.com/downloads/patton_kanban.ppt
Dans cette courte présentation, nous allons abordé les points suivants : 1. Qu est-ce qu un Système Kanban et comment s applique-t-il au développement logiciel? 2. Comment configurer le Système Kanban d une équipe de développement? 3. Appliquer le mode de pensée Lean au développement logiciel 2
看 板 Les cartes Kanban limitent l excès de travail en cours 看 板 Kanban signifie littéralement "carte visuelle, enseigne ou panneau d affichage. A l origine, Toyota a utilisé les cartes Kanban pour limiter la quantité de stocks immobilisés dans un atelier de fabrication. L excès de stock est un gaspillage, le temps de production associé aurait pu être utilisé ailleurs. Les cartes Kanban agissent comme une forme de monnaie qui représente la manière dont le TAF* est maîtrisé dans un système. *NdT : TAF = Travail à faire ; WIP = Work in progress 3
Simulation Kanban Simulons un processus simple, voyons ensuite si nous pouvons l améliorer en ajoutant un système Kanban. J ai besoin de 5 volontaires pour fabriquer le modèle d avion disposant des 4 dernières avancées technologiques.
Simulation Kanban (slide ajouté par le traducteur) 1 ère partie : http://www.youtube.com/watch?v=ksswm1lxeqq Chaîne de construction d avions en papier (4 ouvriers, 1 testeur). 1 avion qui fonctionne rapporte 2 M 1 avion en cours de construction coûte 1 M (stock) Expérimentation en mode Flux poussés. 2 ème partie : http://www.youtube.com/watch?v=zg5mbydn9pc Expérimentation en mode Flux tirés : Définition de limites de WIP sur le processus 2.1. Apparition d un goulot d étranglement 2.2. Optimisation du goulot d étranglement 5
Pourquoi utiliser Kanban dans le Développement Logiciel? (nous ne construisons pas des avions, en tout cas rien d aussi tangible) 6
Un développement itératif timeboxé a de véritables défis à relever Les problèmes courants que l on peut rencontrer : Des timeboxes courtes offrent de plus fréquentes opportunités de mesurer le progrès et d inspecter le logiciel, mais nous force à avoir des items de développement plus petits. Des items de développement plus petits sont souvent trop petits pour leur associer une valeur métier et sont difficiles à identifier. La qualité des exigences en souffre puisque les analystes se précipitent pour préparer les cycles suivants. La qualité des développements en souffre lorsque les analystes surchargés n ont plus le temps d inspecter le logiciel ou de répondre aux questions. La qualité en souffre souvent puisque les testeurs se dépêchent de terminer le travail en retard durant la timebox. 7
Au sein d une itération, l effort fourni par les différents rôles n est pas le même Les développements se déroulent pendant tout le cycle alors que les tests commencent tardivement et ne semblent pas disposer d assez de temps. 8
Utiliser une approche Kanban dans le logiciel nous fait renoncer aux itérations timeboxées pour nous concentrer sur la notion de flux continu. 9
Comment configurer un système Kanban simple pour une équipe de développement logiciel? 10
1. Définissez le workflow du processus Observez le flux naturel de vos features, stories ou lots de travaux et décrivez les étapes typiques de votre processus. 11
1. Définissez le workflow du processus Les étapes du workflow de ce processus sont très simples : 1. Elaboration & Critères d acceptation 2. Développement 3. Tests 4. Déploiement Observez le flux naturel de vos features, stories ou lots de travaux et décrivez les étapes typiques de votre processus. 12
2. Construisez un tableau Kanban visuel Placez une colonne «objectifs» à gauche, puis une file d attente, les étapes de votre processus et enfin une 13 colonne «fini» à droite.
2. Construisez un tableau Kanban visuel Placez une ligne au-dessus pour traiter les urgences. Placez une colonne «objectifs» à gauche, puis une file d attente, les étapes de votre processus et enfin une 14 colonne «fini» à droite.
2. Construisez un tableau Kanban visuel Placez une ligne au-dessus pour traiter les urgences. Placez une colonne «objectifs» à gauche, puis une file d attente, les étapes de votre processus et enfin une 15 colonne «fini» à droite. Placez des files d attente «fini en attente» entre chaque file de travail (dans cet exemple, on les a placées en bas).
3. Décidez des limites pour les items en files d attente et en cours de traitement Une bonne limite est un multiple du nombre de personnes dans un rôle donné et pouvant travailler sur un item dans une étape donnée du processus. Commencez avec : nombre de personnes * 1,5 16
3. Décidez des limites pour les items en files d attente et en cours de traitement Ce tableau utilise du ruban de peintre pour indiquer que des emplacements sont disponibles pour les travaux en cours. Une bonne limite est un multiple du nombre de personnes dans un rôle donné et pouvant travailler sur un item dans une étape donnée du processus. Commencez avec : nombre de personnes * 1,5 17
4. Placez des objectifs priorisés dans la colonne de gauche du tableau Un bon objectif décrit le résultat attendu une fois le logiciel déployé. Les objectifs aident à rester concentré sur les résultats essentiels à obtenir. 18
4. Placez des objectifs priorisés dans la colonne de gauche du tableau Avoir des objectifs visibles : nous encourage à rester concentrer nous aide à prioriser nous aide à gérer le périmètre et les spécifications des features Un bon objectif décrit le résultat attendu une fois le logiciel déployé. Les objectifs aident à rester concentré sur les résultats essentiels à obtenir. 19
5. Démarrez le tableau en plaçant les stories ou features dans la file d attente Inscrivez sur la carte de la story ou de la feature sa date d entrée dans la file d attente. Cela démarre la mesure du temps de cycle. 20
5. Démarrez le tableau en plaçant les stories ou features dans la file d attente Les Product Owners d attente. gèrent la file Inscrivez sur la carte de la story ou de la feature sa date d entrée dans la file d attente. Cela démarre la mesure du temps de cycle. 21
6. Déplacez les features à travers le workflow du processus chaque fois que le travail est fini Lorsque la story entre dans la 1 ère étape du processus, inscrivez la date sur la carte. C est sa date de début. Lorsque la story est terminée, inscrivez la date sur la carte. C est sa date de fin. 22
7. Utilisez les dates inscrites sur les cartes pour calculer le temps de cycle Utilisez le temps de cycle moyen pour configurer les temps d attente à partir des différents points du tableau. Faites attention au flux et aux goulets d étranglement : soulagez les goulets d étranglement le plus rapidement possible. 23
7. Utilisez les dates inscrites sur les cartes pour calculer le temps de cycle Temps de cycle = date de fin date de début Le temps de cycle moyen à partir du moment où un item entre dans le tableau est le temps d attente à partir de ce point dans la file. Utilisez le temps de cycle moyen pour configurer les temps d attente à partir des différents points du tableau. Faites attention au flux et aux goulets d étranglement : soulagez les goulets d étranglement le plus rapidement possible. 24
Affichez et gérez les temps de cycle Affichage public des temps de cycle par Disneyland Réduisez le nombre d emplacements autorisés pour les cartes Kanban jusqu à ce que le temps de cycle soit stabilisé. Réduisez la taille des items de développement : Le TAF est en fait le nombre d items * la taille moyenne des items Identifiez et agissez immédiatement sur les goulets d étranglement : Soulagez les goulets d étranglement récurrents en adaptant le nombre et le profil des personnes dans chaque rôle et avec de la formation croisée. 25
Tableaux Kanban 26
Tableaux Kanban 27
Tableaux Kanban 28
Tableaux Kanban 29
Tableaux Kanban 30
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 32
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 33
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 34
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 35
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 36
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 37
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 38
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 39
Décomposez les grandes étapes du processus en tâches pour améliorer la visibilité Lorsqu une feature, user story ou item est trop grand, c est-à-dire : Prend plus de quelques jours à terminer Exige que plusieurs personnes collaborent à sa réalisation Décomposez cette étape en cartes pour les suivre de façon indépendante. Feature à développer en attente en cours terminées Feature terminée 40
Tableau Kanban avec Décomposition en 41
Utilisez les diagrammes de flux cumulé pour visualiser le travail en cours www.agilemanagement.net/articles/papers/borconmanagingwithcumulat.html 42
Utilisez les diagrammes de flux cumulé pour visualiser le travail en cours www.agilemanagement.net/articles/papers/borconmanagingwithcumulat.html 43
Timeboxez l inspection de votre processus et de votre produit Maintenez des timeboxes régulières dans votre processus comme des points de repère pour procéder à l inspection de votre produit : Evaluez la qualité du produit livré d un point de vue fonctionnel, ingénierie logicielle et expérience utilisateur. Evaluez votre rythme de développement : Mesurez le nombre d items terminés par rapport aux objectifs Mesurez le temps de cycle moyen par item de développement Calculez le ratio jours de développement par item terminé. Utilisez ce ratio pour estimer le délai de réalisation des items non encore développés. Ajustez si nécessaire votre planning de développement. Evaluez et adaptez le processus que vous utilisez : Animez un atelier de réflexion sur votre processus pour identifier les changements que vous pourriez faire pour améliorer votre produit ou votre rythme. Ending cycles right: http://www.stickyminds.com/s.asp?f=s14865_col_2 44
Commencez à observer votre processus en utilisant le mode de pensée Lean Le développement logiciel ressemble à l industrie si l on dit que l unité de stock est une décision qui n a pas été prise! Cockburn s Software Engineering in the 21 st Century: http://alistair.cockburn.us/software+engineering+in+the+21st+century.ppt 45
Puisque nous sommes engagés dans des travaux sur la connaissance, observez le temps de cycle des décisions validées Le développement logiciel comporte des boucles correctives. Cockburn s Software Engineering in the 21 st Century: http://alistair.cockburn.us/software+engineering+in+the+21st+century.ppt 46
La boucle de feedback est souvent négligée surveillez les files d attente Les stratégies du Lean Manufacturing s appliquent directement : surveillez les files d attente. Cockburn s Software Engineering in the 21 st Century: http://alistair.cockburn.us/software+engineering+in+the+21st+century.ppt 47
Configurer un système Kanban simple permet à l équipe de se concentrer sur le temps de cycle du travail livré et fournit un moyen de détecter et de commencer à résoudre les goulets d étranglement. 48
Utilisation des techniques Kanban pour maîtriser le développement incrémental Jeff Patton AgileProductDesign.com jpatton@acm.org Téléchargez cette présentation sur : www.agileproductdesign.com/downloads/patton_kanban.ppt
Références Kanban : Anderson, Kanban in Action : http://www.agilemanagement.net/articles/weblog/kanbaninaction.html Hiranabe, Kanban Applied to Software Development: from Agile to Lean : http://www.infoq.com/articles/hiranabe-lean-agile-kanban Ladas, Scrumban Essays on Kanban Systems for Lean Software Development : http://www.lulu.com/content/3864767 Ladas, Scrum-ban : http://leansoftwareengineering.com/ksse/scrum-ban/ Belshee, Naked Planning, Kanban Simplified : http://joearnold.com/2008/03/naked-planning-kanban-simplified/ 50