Matrice de dpendances enrichie - RMoD: RMoD de dpendances enrichie Les matrices de dpendance (DSM - Dependency Structure Matrix) sont une solution prouve pour rvler les problmes de

  • View
    212

  • Download
    0

Embed Size (px)

Text of Matrice de dpendances enrichie - RMoD: RMoD de dpendances enrichie Les matrices de dpendance (DSM -...

  • Matrice de dpendances enrichieAccepted to LMO2008

    Jannik Laval, Alexandre Bergel, Stphane Ducasse, Romain Piers

    RMoD Team, INRIA - Lille Nord Europe - USTL - CNRS UMR 8022, Lille, Francefirstname.lastname@inria.fr

    Rsum. Les matrices de dpendance (DSM - Dependency Structure Matrix),dveloppes dans le cadre de loptimisation de processus, ont fait leurs preuvespour identifier les dpendances logicielles entre des packages ou des sous-syst-mes. Il existe plusieurs algorithmes pour structurer une matrice de faon cequelle reflte larchitecture des lments analyss et mette en vidence descycles entre les sous-systmes. Cependant, les implmentations de matrices dedpendance existantes manquent dinformations importantes pour apporter unerelle aide au travail de ringnierie. Par exemple, le poids des relations quiposent problme ainsi que leur type ne sont pas clairement prsents. Ou en-core, des cycles indpendants sont fusionns. Il est galement difficile dobtenirune visualisation centre sur un package. Dans ce papier, nous amliorons lesmatrices de dpendance en ajoutant des informations sur (i) le type de rf-rences, (ii) le nombre dentits rfrenantes, (iii) le nombre dentits rfren-ces. Nous distinguons galement les cycles indpendants. Ce travail a t im-plment dans lenvironnement de ringnierie open-source Moose. Il a t ap-pliqu des tudes de cas complexes comme le framework Morphic UI contenudans les environnements Smalltalk open-source Squeak et Pharo. Les rsultatsobtenus ont t appliqus dans lenvironnement de programmation Pharo et ontmen des amliorations.

    1 IntroductionComprendre la structure de grosses applications est un dfi mais aussi une tche importante

    pour la maintenance (Demeyer et al., 2002). Plusieurs approches prsentent des informations propos des packages et de leurs relations, par la visualisation dartefacts logiciels, de leurstructure, de leur volution ou encore de mtriques. Les mtriques logicielles peuvent tre dif-ficiles comprendre puisquelles dpendent fortement de lapplication analyse. DistributionMap (Ducasse et al., 2006) rsoud ce problme en montrant comment les proprits se rpar-tissent dans une application. Langelier et al. (2005) caractrisent lvolution des packages etde leurs mtriques. Package Surface Blueprint (Ducasse et al., 2007) rvle la structure internedun package et les relations avec les autres packages le concept de surface reprsente lesrelations entre le package analys et les packages auxquels il accde. (Dong et Godfrey, 2007)ont travaill sur la prsentation de systmes par des graphes de dpendances objets de hautniveau pour aider la comprhension des systmes au niveau de leurs structures de packages.

  • Matrice de dpendances enrichie

    Les matrices de dpendance (DSM - Dependency Structure Matrix) sont une solutionprouve pour rvler les problmes de cycles dans une structure (Sangal et al., 2005). Dve-loppes lorigine pour loptimisation des processus, elles mettent en vidence des problmesde dpendances entre tches. La technique a t applique avec succs pour lidentification dedpendances applicatives (Steward (1981); Sullivan et al. (2001); Lopes et Fiadeiro (2005)).MacCormack et al. (2006) ont appliqu les matrices de dpendance pour analyser le niveau demodularit de larchitecture de Mozilla et Linux.

    Cependant, appliques la ringnierie logicielle, elles noffre pas une solution optimale :elles ne fournissent pas suffisamment dinformations exploitables. Les DSMs utilises de nosjours permettent juste de faire un tat des lieux, sans rellement offrir une aide la re-ingnirie.Par exemple, les implmentations actuelles de DSM ne fournissent pas dinformations pro-pos des types de liens entre les entits. Certains algorithmes (comme llvation la puissancedes matrices dadjacences) naffichent pas tous les cycles indpendamment les uns des autres.Il est galement difficile de dtecter les cycles propre une entit prcise. De plus, les matricesde dpendance ne prennent pas en compte les extensions de classes, construction lmentairedans les languages dynamiquement typs1.

    Notre contribution est double : dune part, nous identifions les faiblesses des matrices dedpendance traditionnelles (Section 2), dautre part, nous rpondons ces faiblesses (Section3). Nous appliquons notre outil sur le package Morphic UI afin de le remodulariser et lint-grer Pharo, une nouvelle version de Squeak. Nous proposons des matrices de dpendancesenrichies (EDSM). Nous enrichissons les cellules des matrices de dpendance avec des infor-mations contextuelles en affichant (i) les types de rfrences existantes (hritage, accs auxclasses, ...), (ii) la proportion dentits (classes/mthodes) origines, (iii) la proportion denti-ts cibles. Nous distinguons galement les cycles indpendants et utilisons des informationscolorimtriques pour cela. Finalement nous offrons une vision par niveau des cycles entre lesentits.

    Le document est organis de la faon suivante : la Section 2 prsente les DSM et leurslimites actuelles. La Section 3 prsente notre solution. La Section 4 montre un exemple de miseen uvre sur lapplication Morphic UI. La Section 5 prsente les limites de notre solution. LaSection 6 conclue le document.

    2 Limites des matrices de dpendance

    Les matrices de dpendances (DSM) sont efficaces pour dtecter des cycles entre compo-sants logiciels. Bien que ces rsultats soient pertinents pour vrifier lindpendance de dif-frents composants logiciels (Sangal et al., 2005), les DSM sont moins utiles pour la re-ingnierie.

    Nous avons identifi un certain nombre de limites aux DSM : la fusion de certains cyclesindpendants (Section 2.1), le manque de prcision de la visualisation (Section 2.2), labsencedinformation de cycles pour une entit prcise (Section 2.3) et le manque de support desextensions de classes (Section 2.4).

    1Une extension de classe est le fait quune mthode peut tre dfinie dans un autre package que celui de sa classe.Les langage Objective-C, Smalltalk, C# 3.0 offrent diffrents degrs dextensions de classes.

    RNTI - X - 2

  • J. Laval, A. Bergel, S. Ducasse, R. Piers

    2.1 Cycles flous avec la mthode dlvation la puissanceUn des algorithmes utiliss pour le calcul des cycles est bas sur llvation la puissance

    de la matrice dadjacence. Le principe de cette approche est dlever une DSM binaire sanime puissance pour indiquer quels lments peuvent emprunter un chemin revenant sureux-mmes en n tapes et donc constituer un cycle (Yassine et al., 1999). Cet algorithme estlimit car les cycles de mme longueur ne sont pas diffrencis.

    Le formalisme utilis pour la lecture des DSM est le suivant : les lments en tte decolonne font appel aux lments en tte de ligne. Par exemple, sur la Figure 1(b), A fait appel B et C, B fait appel A, C fait appel D et D fait appel C.

    Sur la Figure 1(a), les lments A et B constituent un cycle direct et C et D en constituentun autre. Mais si nous levons la DSM binaire (Figure 1(b)) au carr, une valeur diffrente dezro apparat dans la diagonale de chacun des lments (Figure 1(c)). Ces valeurs signifient quechacun des lments A, B, C et D est impliqu dans au moins un cycle direct mais ces valeursne montrent pas la rpartition des lments dans les cycles directs. Ainsi lalgorithme fusionneces 4 lments (Figure 1(d)), ce qui signifie que ces lments apparaissent comme un seulcycle (Figure 1(e)) notons que la zone grise reprsente les cycles. Ainsi, la matrice de par-titionnement fournit une information errone en indiquant un cycle unique (la zone grise dansla Figure 1(e)) alors que la matrice devrait montrer 2 cycles directs comme dans la Figure 1(f).

    A

    B C

    D

    (a) Visualisation

    A B C DA 0 1 0 0B 1 0 0 0C 1 0 0 1D 0 0 1 0

    (b) Matricebinaire

    A B C DA 1 0 0 0B 0 1 0 0C 1 0 1 0D 1 0 0 1

    (c) Matricebinaire leve aucarr

    ABCDABCD

    (d) DSM fusion-ne

    A B C DA XB XC X XD X

    (e) DSM partitionne avec la m-thode de la matrice dadjacence

    A B C DA XB XC X XD X

    (f) DSM partitionne idale avec 2cycles distincts

    FIG. 1 Limite de la mthode de puissance de matrice dadjacence

    Llvation la puissance de la matrice dadjacence ne permet pas de dterminer prcis-ment les cycles diffrents. Cependant, nous utilisons cet algorithme combin une mthode derecherche de chemin afin didentifier les diffrents cycles de mme niveau.

    2.2 Manque de prcision de la visualisationUne DSM traditionnelle offre un aperu gnral mais sans information prcise de la situa-

    tion quelle dcrit. Nous identifions deux sortes de faiblesses : le manque dinformation sur les

    RNTI - X - 3

  • Matrice de dpendances enrichie

    causes des dpendances dune part, et sur leur importance dautre part.

    Manque dinformation sur les causes. Les dpendances peuvent avoir plusieurs causes :des accs aux classes, des extensions de classes (voir la Section 2.3), des relations dhritage etdes invocations de mthodes. Les cots dlimination dun cycle varient en fonction du type delien choisi pour suppression : changer une rfrence directe une classe est souvent plus simpleque de changer une relation dhritage. Cest pourquoi il nest pas suffisant dindiquer lesdpendances dans une DSM avec un simple marqueur X (Figure 2(a)) ou mme avec un nombrereprsentant le nombre de dpendances qui existent (Figure 2(b)). Nous pensons quindiquerau moins un nombre pour chaque type de dpendance (Figure 2(c)) donne une indication plusprcise et aide ainsi une meilleure comprhension de la situation.

    A B C DA XB XC XD

    (a) DSM avec desmarqueurs

    A B C DA 5B 3C 1D

    (b) DSM avec desnombres

    A B C D

    A 51 | 3 | 1 | 0

    B 31 | 0 |1 | 1

    C 10 | 1 | 0 | 0

    D

    Nombre d'hritages

    Nombre d'accs

    Nombre d'invocations

    Nombre de classes tendues

    (c) DSM avec les types de dpendance

    FIG. 2 Exemple de rfrences dans une DSM

    Manque dinformat