Méthode Mikado

310 vues

Publié le

Présentation que j'ai faite à mes collègues afin de faciliter partiellement les refactoring en cours.

I'm working on the english translation, but if you need it ASAP please notify me.

Publié dans : Ingénierie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
310
Sur SlideShare
0
Issues des intégrations
0
Intégrations
17
Actions
Partages
0
Téléchargements
2
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Hydre du code
  • Peur de réveiller un monstre enfoui par d’autres qui ont creusé et de ne pas s’en sortir?
  • Comment est-ce que vous gérez vos refactorings?
  • Attention le point 4 est le grand secret de la méthode
  • Resultat : Pas forcément quelque chose que l’on fait sur un coin de table
  • Resultat : Pas forcément quelque chose que l’on fait sur un coin de table
  • Resultat : Pas forcément quelque chose que l’on fait sur un coin de table
  • Tiré de l’article ”What I’ve Learned from (Nearly) Failing to Refactor Hudson”
  • Tiré de l’article ”What I’ve Learned from (Nearly) Failing to Refactor Hudson”
  • Souvent nous n’avons aucune idée
  • Méthode Mikado

    1. 1. Méthode Mikado Simon Girardin
    2. 2. Sommaire Introduction Contexte Fonctionnement Pratique Résumé 2
    3. 3. Introduction Pourquoi ne permettons nous d’accumuler de la dette technique ? 3
    4. 4. Introduction Pourquoi ne permettons nous d’accumuler de la dette technique ? – Temps – Priorités – Envies … serait-ce par peur? 3
    5. 5. Introduction Peur 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»
    6. 6. 5 «If you find yourself in a hole, stop digging.» - Will Rogers
    7. 7. Contexte Dans ce cas là, comment faites-vous? – Partez à l’aventure? – «Big Bang»? – … 6
    8. 8. Fonctionnement Méthode de refactoring de code «Legacy» Reverse engineering – Cartographie des dépendances 7
    9. 9. Fonctionnement 4 nœuds 1. But 2. Prérequis 3. Prise de décision 4. Feuille 8
    10. 10. Fonctionnement 1. Etablir un but 9 «But» «Avec prérequis» «Décision» «Feuille»
    11. 11. Fonctionnement 1. Etablir un but 2. Essayer d’atteindre le but 9 «But» «Avec prérequis» «Décision» «Feuille»
    12. 12. Fonctionnement 1. Etablir un but 2. Essayer d’atteindre le but 3. Analyser les dépendances 9 «But» «Avec prérequis» «Décision» «Feuille»
    13. 13. Fonctionnement 1. Etablir un but 2. Essayer d’atteindre le but 3. Analyser les dépendances 4. Revert 9 «But» «Avec prérequis» «Décision» «Feuille»
    14. 14. Fonctionnement  Mais pourquoi le «Revert»??? – Génération des informations sur les dépendances – Classe modifiées moins longtemps 10
    15. 15. Fonctionnement (Exemple) 11 Rendre calcul testable
    16. 16. Fonctionnement (Exemple) 11 Rendre calcul testable Diviser méthode
    17. 17. Fonctionnement (Exemple) 11 Rendre calcul testable Diviser méthode Corriger Dépendance
    18. 18. Fonctionnement (Exemple) 11 Rendre calcul testable Diviser méthode Corriger Dépendance Faires interfaces
    19. 19. Fonctionnement (Exemple) 11 Rendre calcul testable Diviser méthode Corriger Dépendance Faires interfaces Extraire variables
    20. 20. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Corriger Dépendance Faires interfaces Extraire variables
    21. 21. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    22. 22. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    23. 23. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    24. 24. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    25. 25. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    26. 26. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    27. 27. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    28. 28. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    29. 29. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    30. 30. Fonctionnement (Exemple) 11 Rendre calcul testable Introduire DI avec Spring Diviser méthode Faire fichier configuration Corriger Dépendance Faires interfaces Extraire variables
    31. 31. Fonctionnement 12
    32. 32. Fonctionnement 12
    33. 33. Fonctionnement 12
    34. 34. Pratique 1. Ne jamais sous-estimé le code legacy – Fonctionnalités pas toujours documentées – Demandes spécifiques 13
    35. 35. 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 legacy 3. Mieux a deux… – 4 pairs d’yeux – Evite «Gold plating» – Soutien moral… 13
    36. 36. 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
    37. 37. Résumé Avantages But clair et défini Planification de ressources possible Limite drastiquement le blocage de code Tâches peuvent être répartis Inconvénients / Difficultés Peut vite devenir complexe (Définir le bon niveau de zoom) Prends plus de temps initialement 15
    38. 38. 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
    39. 39. Sources  General Refactoring Large SoftwareSystems [en ligne]Method and tools, Hiver 2009 [consulté le 22 septembre 2014]. Disponible sur : http://www.methodsandtools.com/archive/archive.php?id=98 The 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  Mikado Your First MikadoGraph [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-graph The 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-method The Mikado Method [en ligne]. DZone, Jens Schauder, 11.06.2011 [consulté le 23 septembre 2014]. Disponible sur : http://java.dzone.com/articles/mikado-method Refactoring 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%9D BeheadYour 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.pdf What 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

    ×