kanban pour maîtriser le développement incrémental

50
© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011 Utilisation des techniques Kanban pour maîtriser le développement incrémental Jeff Patton AgileProductDesign.com [email protected] Téléchargez cette présentation sur : www.agileproductdesign.com/downloads/patton_kanban.ppt

Upload: fabrice-aimetti

Post on 18-Jul-2015

139 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Utilisation des techniques Kanban pour maîtriser le développement incrémental

Jeff [email protected]

Téléchargez cette présentation sur : www.agileproductdesign.com/downloads/patton_kanban.ppt

Page 2: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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 Leanau développement logiciel

2

Page 3: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

看板 – 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.

3

*NdT : TAF = Travail à faire ; WIP = Work in progress

Page 4: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Simulation KanbanSimulons un processus simple,

voyons ensuite si nous pouvons l’amélioreren ajoutant un système Kanban.

J’ai besoin de 5 volontaires pour fabriquer le modèle d’avion disposant des

dernières avancées technologiques. 4

Page 5: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Simulation Kanban(slide ajouté par le traducteur)

5

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 constructioncoû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 WIPsur le processus

2.1. Apparition d’un goulot d’étranglement

2.2. Optimisation du goulot d’étranglement

Page 6: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Pourquoi utiliserKanban dans le

Développement Logiciel ?(nous ne construisons pas des avions,

en tout cas rien d’aussi tangible)

6

Page 7: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 8: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 9: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 10: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Comment configurer un système Kanban simple

pour une équipe de développement logiciel ?

10

Page 11: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 12: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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.

Les étapes du workflow de ce processus sont très simples : 1. Elaboration & Critères d’acceptation2. Développement3. Tests4. Déploiement

12

Page 13: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

2. Construisez un tableau Kanban visuel

Placez une colonne « objectifs » à gauche, puis une file d’attente, les étapes de votre processus et enfin une colonne « fini » à droite.

13

Page 14: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

2. Construisez un tableau Kanban visuel

Placez une colonne « objectifs » à gauche, puis une file d’attente, les étapes de votre processus et enfin une colonne « fini » à droite.

Placez une ligne au-dessus pour traiter les urgences.

14

Page 15: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

2. Construisez un tableau Kanban visuel

Placez une colonne « objectifs » à gauche, puis une file d’attente, les étapes de votre processus et enfin une colonne « fini » à droite.

Placez une ligne au-dessus pour traiter les urgences.

Placez des files d’attente « fini en attente » entre chaque file de travail (dans cet exemple, on les a placées en bas).

15

Page 16: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 17: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Ce tableau utilise du ruban de peintre pour indiquer que des emplacements sont disponibles pour les travaux en cours.

17

Page 18: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 19: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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.

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

19

Page 20: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 21: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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.

Les Product Owners gèrent la file d’attente.

21

Page 22: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Page 23: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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 gouletsd’étranglement : soulagez les goulets d’étranglement le plus rapidement possible. 23

Page 24: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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 gouletsd’étranglement : soulagez les goulets d’étranglement le plus rapidement possible.

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.

24

Page 25: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Affichez et gérez les temps de cycle

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.

Affichage public des temps de cycle par Disneyland

25

Page 26: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Tableaux Kanban

26

Page 27: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Tableaux Kanban

27

Page 28: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Tableaux Kanban

28

Page 29: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Tableaux Kanban

29

Page 30: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Tableaux Kanban

30

Page 31: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

Page 32: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

32

Page 33: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

33

Page 34: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

34

Page 35: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

35

Page 36: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

36

Page 37: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

37

Page 38: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

38

Page 39: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

39

Page 40: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

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

Tâchesen attente

Tâchesen cours

Tâchesterminées

Featureterminée

40

Page 41: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Tableau Kanbanavec Décomposition en Tâches

41

Page 42: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Utilisez les diagrammes de flux cumulé pour visualiser le travail en cours

www.agilemanagement.net/Articles/Papers/BorConManagingwithCumulat.html42

Page 43: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Utilisez les diagrammes de flux cumulé pour visualiser le travail en cours

www.agilemanagement.net/Articles/Papers/BorConManagingwithCumulat.html43

Page 44: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Timeboxez l’inspection de votre processus et de votre produitMaintenez 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

Page 45: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Commencez à observer votre processus en utilisant le mode de pensée Lean

Cockburn’s Software Engineering in the 21st Century:

http://alistair.cockburn.us/Software+engineering+in+the+21st+century.ppt 45

Le développement logiciel ressemble àl’industrie si l’on dit que l’unité de stock est unedécision qui n’a pas été prise !

Page 46: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Puisque nous sommes engagés dans des “travaux sur la connaissance”, observez le temps de cycle des décisions validées

Cockburn’s Software Engineering in the 21st Century:

http://alistair.cockburn.us/Software+engineering+in+the+21st+century.ppt 46

Le développement logiciel comporte des boucles correctives.

Page 47: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

La boucle de feedback est souvent négligée –surveillez les files d’attente

Cockburn’s Software Engineering in the 21st Century:

http://alistair.cockburn.us/Software+engineering+in+the+21st+century.ppt 47

Les stratégies du Lean Manufacturings’appliquent directement : surveillez les files d’attente.

Page 48: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Configurer un système Kanbansimple 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

Page 49: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

Utilisation des techniques Kanban pour maîtriser le développement incrémental

Jeff [email protected]

Téléchargez cette présentation sur : www.agileproductdesign.com/downloads/patton_kanban.ppt

Page 50: Kanban pour maîtriser le développement incrémental

© Jeff Patton – Traduit par Fabrice AIMETTI le 5 juillet 2011

50

• 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/

Références Kanban :