1. L'analyse de logiciels, Phylogénie et Évolution
Adnane Ghannem , Salima Hassaine , Yann-Gaël Guéhéneuc et Sylvie Hamel
Dép. I.R.O., Université de Montréal
Software Analysis, Phylogeny and Evolution {ghannema | hassaisa | guehene | hamelsyl}@iro.umontreal.ca,
http://www.iro.umontreal.ca
Introduction
En bioinformatique, l'élaboration d'algorithmes efficaces pour l'alignement local ou global de séquences biologiques est une problématique naturelle, étant donné
que l'analyse des données, provenant de séquençage de génomes . Dans le domainde de génie logiciel, il est reconnue que les développeurs et les mainteneurs utili-
sent des patrons récurrents de programmation pour comprendre les programmes. De nombreuses approches ont été développées, pour identifier automatiquement
les patrons et rendre systématique leurs utilisation pendent leurs compréhension [1,2,3]. Cepenant, toutes les approches existantes sont limitées dans leurs perfor-
mances en temps et en mémoire et dans leurs résultats en précision et en rappel, lorsqu'appliquées sur de grands programmes.
Il a été démontré, dans un travail précédent[4], qu'il est possible de représenter de façon unique un programme sous la forme d'une chaîne de caractères représen-
tant les classes du programme et les relations entre celles-ci. L’idée d’utiliser et de généraliser des algorithmes de recherche de patrons utilisés en bioinformatique
dans le contexte de génie logiciel est, selon nos connaissances, complètement nouvelle et très prometteuse. Dans le cadre de l'étude de l'évolution de grands pro-
grammes, nous proposons deux volets : l'étude de l'historique de grands programmes et la recherche de similitudes entre différents programmes (la phylogénie).
Génération de génomes de programmes
Fichiers .jar
Fichier .class
Programme
Modèle du
programme
A in B in D dm B Modèle eulérien
in E co B in C dm
G cr C dm G cr D
dm G cr E dm
G as F ag A
Chaîne de
caractères
CICICDCI
CACICDCR
CDCRCDC
RCDCACGC
Génome du
programme
Alignement de Smith Watermann
CCGGTTCTTCTTACAACGCGCACACAGCCARCCAGCACA
CGTAGTACGCUACACGAGCCARCAGTGAGCCTTACGT
ACGCGCACAC - AGCCAR
| | | | | | | | | | | | | |
ACGCU- ACACGAGCC AR
Phylogénie de programmes Évolution de programmes
Définition: Définition:
(1) Qui a travaillé sur ces éléments
(2) Quel(s) développeur(s) travaillent sur les
C'est l'étude de similarités entre différents grands pro- mêmes éléments C'est l'étude de différentes versions d'un même pro-
grammes et des interconnexions entre ceux-ci pour (3) Quelle(s) sorte(s) de changement fait un gramme dont le but d'en identifier et d'en comprendre
identifier l'héritage et l'historique communs de pro- développeur les composantes essentielles d'un même programme.
grammes différents. (4) Quand le changement a t-il été fait
(5) Pourquoi le changement a t-il été fait
Objectifs: (6) Quels éléments changent fréquemment Objectifs:
Créer un algorithme pour la construction d’un réseau ensemble Créer un langage de patrons d’évolution décrivant des si-
phylogénique de différents programmes. (7) Quels éléments sont stables (changent tuations récurrentes de changement dans l'évolution d'un
rarement) programme et facilitant la compréhension de cette évolu-
En utilisant une des trois méthodes suivantes :
(8) Quels éléments sont instables (changent tion, tel le patron de changement décrivant des
* méthode des distances (phénétiques) . fréquemment) classes/méthodes changeant ensemble (Question 6, 7 et 8).
* méthode de parcémonie. (9) Combien de développeurs ont travaillé sur
* méthode de maximum de vraisemblance. une version du programme
(10) Combien d’éléments ont été ajoutés,
modifiés, effacés.
Liste de questions importantes sur l'évolution
Figure 2: L'étude de l'évolution des versions d'un programme.
Figure 1: Réseau phylogénique d'un programme.
[1] Roel Wuyts. Declarative reasoning about the structure of object-oriented systems. In Joseph Gil, editor, proceedings of the 26th conference on the Technology of Object-Orien
ted Languages and Systems, pages 112-124. IEEE Computer Society Press, August 1998.
[2] Jörg Niere. Fuzzy Logic based intercative recovery of software design. Presented at the ICSE Doctoral Symposium, May 2002.
[3] Alessandro Garcia, Clàudio Sant'Anna, Eduardo Figueiredo, Uira Kulesza, Carlos Lucena, and Arndt von Staa. Modularizing design patterns with aspects: A quantitative
study. In Peri Tarr, editor, proceedings of the 4 th international conference on Aspect-Oriented Software Development, pages 3-14. ACM Press, March 2005.
[4] Olivier Kaczorol, Yann-Gaël Guéhéneuc, and Sylvie Hamel. Efficient identification of design pattrens with bit-vector algorithm. In Giuseppe Antonio di Lucca and Nicolas
Gold, editors, Proceedings of the 10 th Conference on Software Maintenance and Reengineering, pages 173-182.IEEE Computer Society Press, March 2006.