Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20090929 02 - Dependency structural matrix (Inria)

71 views

Published on

Détection des cycles avec DSM

Published in: Software
  • Be the first to comment

  • Be the first to like this

20090929 02 - Dependency structural matrix (Inria)

  1. 1. DETECTION DE CYCLES AVEC DSM Jannik Laval PhD Student - RModTeam http://rmod.lille.inria.fr RMod
  2. 2. DSM? • Dependency Structural Matrix • Comment organiser des tâches selon leurs dépendences ? • Appliqué aux packages d’un logiciel.
  3. 3. ROADMAP • Un cycle ? • Construire une DSM. • Detecter les cycles. • Que faire de ces informations ?
  4. 4. ROADMAP • Un cycle ? • Construire une DSM. • Detecter les cycles. • Que faire de ces informations ?
  5. 5. UN CYCLE • Un chemin qui revient à son point d’origine • Entre 2 ou plus éléments A B C D
  6. 6. A B C D PROBLÈMES DE CYCLE • Modularité ? • Logique de dépendance • Fragilité du système
  7. 7. COMMENT DÉTECTER LES CYCLES ? A B C D
  8. 8. UN GRAPHE ?
  9. 9. +60 PACKAGES 50 PACKAGES !
  10. 10. +60 PACKAGES
  11. 11. ROADMAP • Un cycle ? • Construire une DSM. • Detecter les cycles. • Que faire de ces informations ?
  12. 12. MATRICE DE DÉPENDANCE • Origine: optimisation de processus • Appliqué aux logiciels • Visualisation compacte et structurée • Permet l’identification de cycles et de couches A B C D A x B x x C x x D x
  13. 13. MATRICE DE DÉPENDANCE A B C D A X B X X C X X D X A B C D A B C D A 0 1 0 0 B 1 0 1 0 C 1 0 0 1 D 0 0 1 0
  14. 14. VISUALISATION DES PACKAGES • 1 case = 1 dépendance • => ajout d’information • 1 colonne = packages utilisés • 1 ligne = packages clients A B C D A 2 B 1 2 C 4 8 D 1
  15. 15. INFORMATIONS DANS UNE CASE ? • Héritage • Accès direct aux classes • Invocation • Extension
  16. 16. EXTENSIONS • Inverse la dépendance • Structure les packages • En CLOS, Objective-C, Ruby, Smalltalk, C#3.0 Core asUrl String Network Url ^ Url new path: self Core String Network Url String asUrl ^ Url new path: self
  17. 17. RÉSULTAT • Que voit-on ? x x x x x x x x x x x x x 71 3 x 2 1 8 7 6 x 3 x 4 51 2 2 2 x 4 10 4 34 3 x 15 1 x 30 x 2 2 6
  18. 18. ROADMAP • Un cycle ? • Construire une DSM. • Detecter les cycles. • Que faire de ces informations ?
  19. 19. 2 METHODES POUR DETECTER LES CYCLES • Multiplication de la matrice d’adjacence • Recherche de chemins
  20. 20. MULTIPLICATION DE LA MATRICE D’ADJACENCE
  21. 21. MULTIPLICATION DE LA MATRICE D’ADJACENCE • Avantage • Approche mathématique • Inconvénients • Cycles “flous” • Pas d’information à propos du chemin
  22. 22. RECHERCHE DE CHEMIN
  23. 23. RECHERCHE DE CHEMIN • Avantage • Connaissance de chaque cycle • Inconvénient • Lenteur
  24. 24. ROADMAP • Un cycle ? • Construire une DSM. • Detecter les cycles. • Que faire de ces informations ? • Détection de couches • Compréhension et amélioration du design
  25. 25. REGROUPER LES CYCLES... • Quand il y a des cycles, nous pouvons les considérer comme un seul package, jusqu’à ne plus avoir de cycle...
  26. 26. POUR DÉTECTER LES COUCHES1 2 3 4 5 6 7 8 9 10 1 2 3 71 3 4 2 1 8 7 6 5 3 6 4 51 2 2 2 7 4 10 4 34 3 8 15 1 9 30 10 2 2 6 1 2 3+ 9 10 1 2 3+ 10 67 9 30 10 2 8 Layer3 1 2 Layer2 3+ Layer1 9 10
  27. 27. ROADMAP • Un cycle ? • Construire une DSM. • Detecter les cycles. • Que faire de ces informations ? • Détection de couches • Compréhension et amélioration du design
  28. 28. COMPREHENSION DU DESIGN •En 3 niveaux: • Niveau 1: Couleurs • Niveau 2: information textuelle • Niveau 3: information structurelle
  29. 29. NIVEAU 1: COULEURS • Cycles en bleu • Cycles directs en rouge • Cycles indirects en jaune A B C D A X B X X C X 8 D 1
  30. 30. UN EXEMPLE 1 2 3 4 5 6 7 8 9 10 1 2 3 3 71 4 2 1 3 5 2 1 8 7 6 6 4 51 2 2 2 7 4 4 18 34 3 8 15 1 9 30 10 2 2 6
  31. 31. NIVEAU 2: INFORMATION TEXTUELLE • Héritage (I) • Accès direct aux classes (R) • Invocation (S) • Extension (E)
  32. 32. UN EXEMPLE
  33. 33. DETECTER DES CYCLES NetworkTest
  34. 34. NON SYMÉTRIQUE • Supprimer ? • Inverser les liens ? • ???
  35. 35. SYMÉTRIQUE • Fusionner ? • Réorganiser les packages ? • ???
  36. 36. DSM... • Avantages • Détection de cycles • Détection de couches • Inconvénients • Lisibilité • Par où commencer les modifications ?
  37. 37. NIVEAU 3: EDSM
  38. 38. NIVEAU 3: EDSM Source P1 Target P2 Background color: cycle Tot Inh Acc Msg Ext C Z X Y BA D' D
  39. 39. ROADMAP • DSM at Work • Seaside 2.9 (no cycle....) • Pharo
  40. 40. SEASIDE 2.9
  41. 41. PHARO • 150 packages • 70 packages en cycles • 260 cycles
  42. 42. DSM IN SOFTWARE REENGINEERING • Clarifie les dépendences • Detecte les cycles • Offre des pronostics (pink/red) • Lattix (www.lattix.com) • http://moose.unibe.ch/

×