39
Méthode Mikado Simon Girardin

Méthode Mikado

Embed Size (px)

Citation preview

Page 1: Méthode Mikado

Méthode Mikado

Simon Girardin

Page 2: Méthode Mikado

Sommaire

IntroductionContexteFonctionnementPratiqueRésumé

2

Page 3: Méthode Mikado

Introduction

Pourquoi ne permettons nous d’accumuler de la dette technique ?

3

Page 4: Méthode Mikado

Introduction

Pourquoi ne permettons nous d’accumuler de la dette technique ?– Temps– Priorités– Envies… serait-ce par peur?

3

Page 5: Méthode Mikado

IntroductionPeur de réveiller un

monstre enfoui et de ne pas s’en sortir?– Taille de la tâche

inconnue, donc inestimable …

– Une tête de coupée, 4 qui repoussent

4

«Code Hydra»

Page 6: Méthode Mikado

5

«If you find yourself in a hole, stop digging.»- Will Rogers

Page 7: Méthode Mikado

Contexte

Dans ce cas là, comment faites-vous?– Partez à l’aventure?– «Big Bang»?– …

6

Page 8: Méthode Mikado

Fonctionnement

Méthode de refactoring de code «Legacy»

Reverse engineering– Cartographie des dépendances

7

Page 9: Méthode Mikado

Fonctionnement

4 nœuds1. But2. Prérequis3. Prise de décision4. Feuille

8

Page 10: Méthode Mikado

Fonctionnement

1. Etablir un but

9

«But»«Avec prérequis»«Décision»«Feuille»

Page 11: Méthode Mikado

Fonctionnement

1. Etablir un but 2. Essayer d’atteindre le but

9

«But»«Avec prérequis»«Décision»«Feuille»

Page 12: Méthode Mikado

Fonctionnement

1. Etablir un but 2. Essayer d’atteindre le but3. Analyser les

dépendances

9

«But»«Avec prérequis»«Décision»«Feuille»

Page 13: Méthode Mikado

Fonctionnement

1. Etablir un but 2. Essayer d’atteindre le but3. Analyser les

dépendances4. Revert

9

«But»«Avec prérequis»«Décision»«Feuille»

Page 14: Méthode Mikado

Fonctionnement

Mais pourquoi le «Revert»???– Génération des informations sur les

dépendances– Classe modifiées moins longtemps

10

Page 15: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Analyse

Page 16: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Diviser méthode Analyse

Page 17: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Diviser méthode AnalyseCorriger

Dépendance

Page 18: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Diviser méthode AnalyseCorriger

Dépendance

Faires interfaces

Page 19: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Diviser méthode AnalyseCorriger

Dépendance

Faires interfaces

Extraire variables

Page 20: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode AnalyseCorriger

Dépendance

Faires interfaces

Extraire variables

Page 21: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

AnalyseCorriger

Dépendance

Faires interfaces

Extraire variables

Page 22: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

AnalyseCorriger

Dépendance

Faires interfaces

Extraire variables

Page 23: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 24: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 25: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 26: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 27: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 28: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 29: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 30: Méthode Mikado

Fonctionnement (Exemple)

11

Rendre calcul testable

Introduire DI avec Spring

Diviser méthode

Faire fichier configuration

Analyse

Réalisation

Corriger Dépendance

Faires interfaces

Extraire variables

Page 31: Méthode Mikado

Fonctionnement

12

Page 32: Méthode Mikado

Fonctionnement

12

Page 33: Méthode Mikado

Fonctionnement

12

Page 34: Méthode Mikado

Pratique

1. Ne jamais sous-estimé le code legacy– Fonctionnalités pas toujours documentées– Demandes spécifiques

13

Page 35: Méthode Mikado

Pratique

1. Ne jamais sous-estimé le code legacy– Fonctionnalités pas toujours

documentées– Demandes spécifiques

2. Ne jamais sous-estimé le code legacy3. Mieux a deux…

– 4 pairs d’yeux– Evite «Gold plating»– Soutien moral…

13

Page 36: Méthode Mikado

Résumé

On ne subit plus le refactoring, on le gère.– A une vision clair des impacts– Etudier plusieurs possibilités– Etablir un planning

• Temporel• Ressources

14

Page 37: Méthode Mikado

RésuméAvantagesBut clair et définiPlanification de

ressources possible Limite drastiquement

le blocage de codeTâches peuvent être

répartis

Inconvénients / DifficultésPeut vite devenir

complexe (Définir le bon niveau de zoom)

Prends plus de temps initialement

15

Page 38: Méthode Mikado

Exercices

Lister – Des bouts de code qui font mal aux yeux– Des objectifs business difficilement atteint

pour des raisons techniques.– Quand vous vous dîtes que cela peut être

facilité– Echecs sur lesquelles vous avez des regrets

Agir– Refactorer les points-listés ci-dessus en

fonction de priorités / des ressources.16

Page 39: Méthode Mikado

Sources GeneralRefactoring Large Software Systems [en ligne]Method and tools, Hiver 2009 [consulté le 22 septembre 2014]. Disponible sur : http://www.methodsandtools.com/archive/archive.php?id=98The Big Rewrite [en ligne]. Martin Fowler, 27.12.2006 [consulté le 23 septembre 2014]. Disponible sur : http://chadfowler.com/blog/2006/12/27/the-big-rewrite MikadoYour First Mikado Graph [en ligne]. Manning Publications, 15.05.2013 [consulté le 23 septembre 2014]. Disponible sur : https://weblogs.java.net/blog/manningpubs/archive/2013/05/15/your-first-mikado-graphThe Mikado Method, Small- and Large-Scale Refactorings [en ligne]. The pragmatic bookshelf, Ola Ellnestam et Daniel Brolund, 06.2010 [consulté le 23 septembre 2014]. Disponible sur : https://pragprog.com/magazines/2010-06/the-mikado-methodThe Mikado Method [en ligne]. DZone, Jens Schauder, 11.06.2011 [consulté le 23 septembre 2014]. Disponible sur : http://java.dzone.com/articles/mikado-methodRefactoring the “Legacy” Hudson.java with the Mikado Method as a Code Dojo [en ligne]. DZone, Jakub Holý, 18.04.2011 [consulté le 23 septembre 2014]. Disponible sur : http://java.dzone.com/articles/refactoring-%E2%80%9Clegacy%E2%80%9DBehead Your Legacy Beast  [en ligne]. Agical, Daniel Brolund et Ola Ellnestam, 25.02.2012 [consulté le 22 septembre 2014]. Disponible sur : http://www.agical.com/mikmeth/mikadomethod_old_hidden_76213ge.pdfWhat I’ve Learned from (Nearly) Failing to Refactor Hudson [en ligne]. DZone, Jakub Holý, 29.04.2011 [consulté le 23 septembre 2014]. Disponible sur : http://java.dzone.com/articles/what-i%E2%80%99ve-learned-nearly