Les systèmes logiciels sont devenus très importants dans notre vie quotidienne. Ils contrôlent les machines de payement, les instruments médicales, les systèmes de télécommunication et plusieurs d'autres systèmes. A cause de leur intérêt et leur vaste domaine d'application, tout comportement non désiré ou erreur de fonctionnement peut engendrer des pertes d'argent, arrêts de services et des risques de vies. La fiabilité de logiciels devient donc un facteur suprême. D'autre part, l'évolution de besoins et le changement continu de contextes de fonctionnement nécessitent la mise à jour et la maintenance courante de ces systèmes.
Sommaire
Table de matière TABLE DE MATIÈRE .................................................................................................................... 1 LISTE DES FIGURES ..................................................................................................................... 4 INTRODUCTION ........................................................................................................................... 6 PARTIE 1 : ÉTAT DE L'ART ......................................................................................................... 9 CHAPITRE 1 : RÉTRO-INGÉNIERIE ........................................................................................... 10 1. Introduction ................................................................................................................. 10 2. Origine et Définition de la rétro-ingénierie ................................................................. 10 3. Apports de la rétro-ingénierie logiciel ......................................................................... 11 4. Étapes de la rétro-ingénierie ....................................................................................... 12 4.1 Collection de données ........................................................................................... 12 4.1.1 Techniques de collection d'informations ....................................................... 12 4.2 Extraction d'informations pertinentes .................................................................. 13 4.3 Visualisation ........................................................................................................... 14 5. La rétro-ingénierie des logiciels orientés objet ........................................................... 15 6. Conclusion .................................................................................................................... 16 CHAPITRE 2 : LANGAGE DE MODÉLISATION UNIFIÉ (UML) ................................................. 17 1. Introduction ................................................................................................................. 17 2. Historique d'UML ......................................................................................................... 17 3. La Méta-Modélisation .................................................................................................. 18 4. Les Diagrammes d'UML2 ............................................................................................. 19 4.1 Les machines à état ............................................................................................... 20 4.2 Les diagrammes de séquence ................................................................................ 21 4.2.1 Les interactions .............................................................................................. 21 4.2.2 Les mécanismes de composition .................................................................... 22 5. Conclusion .................................................................................................................... 26 CHAPITRE 3 RÉTRO-INGÉNIERIE DES MODÈLES COMPORTEMENTAUX .................................. 27 2 1. Introduction ................................................................................................................. 27 2. Etat de l'art sur la rétro-ingénierie des modèles comportementaux d'UML .............. 27 2.1 Travaux de la rétro-ingénierie des machines à états ............................................ 27 2.2 Travaux de la rétro-ingénierie des diagrammes de séquence d'UML .................. 28 2.2.1 Travaux basés sur l'analyse statique ............................................................... 28 2.2.2 Travaux basés sur l'analyse dynamique ......................................................... 29 2.2.3 Travaux basés sur l'analyse hybride ............................................................... 34 2.3 Discussion et conclusion ........................................................................................ 35 PARTIE 2 : CONTRIBUTION .................................................................................................... 38 CHAPITRE 4 : APPROCHE INCRÉMENTALE .............................................................................. 39 1. Introduction ................................................................................................................. 39 2. Exemple pour illustration ............................................................................................. 39 3. Approche incrémentale ............................................................................................... 40 3.1 La Collection de traces ........................................................................................... 41 3.2 Construction incrémentale du diagramme de séquence ...................................... 45 3.2.1 Détection des opérateurs ................................................................................ 48 a) Fragment combiné avec l'opérateur "loop" ....................................................... 48 b) Fragment combiné avec l'opérateur "opt" ......................................................... 51 c) Fragment combiné avec l'opérateur "alt" .......................................................... 53 d) Fragment combiné avec l'opérateur "seq" ......................................................... 56 4. Conclusion .................................................................................................................... 57 CHAPITRE 5 IMPLÉMENTATION ............................................................................................... 58 1. Outils d'implémentation .............................................................................................. 58 1.1 Outils de collection de traces ................................................................................ 58 1.2 Stockage des données ........................................................................................... 61 1.3 API UML2 ............................................................................................................... 63 2. Application de l'approche sur l'exemple Vente ........................................................... 64 3 2.1 Cas d'utilisation ..................................................................................................... 64 CONCLUSION ET PERSPECTIVES ............................................................................................... 70 1. Évaluation .................................................................................................................... 70 2. Discussion des résultats ............................................................................................... 70 3. Perspectives ................................................................................................................. 71 RÉFERENCES ............................................................................................................................. 72 ANNEXES .................................................................................................................................. 76 (1) Code de détection des fragments combinés de type "loop" ....................................... 76 (2) Code source de l'application "Vente" .......................................................................... 77 4 Liste des figures FIG.1.1. MODÈLE D'ARCHITECTURE DES OUTILS PAR [3] ...................................................... 11 FIG. 1.2. ÉTAPES PRINCIPALES DE LA RÉTRO-INGÉNIERIE ...................................................... 12 FIG. 1.3. GRAPHE D'INTERACTION GÉNÉRÉ AVEC PROGRAM EXPLORER [44] ..................... 15 FIG. 2.1. L'ARCHITECTURE À QUATRE NIVEAUX DE L'OMG ................................................. 19 FIG. 2.2. EXEMPLE DE MACHINE À ÉTAT ................................................................................. 21 FIG. 2.3. UNE PARTIE DU MÉTA-MODÈLE DES DIAGRAMMES DE SÉQUENCE D'UML2 .......... 22 FIG. 2.4. EXEMPLE D'UN DS DANS UML2.0 ET SES CONCEPTS .............................................. 23 FIG. 2.5. EXEMPLE DES RÉFÉRENCES VERS LES DS DANS UML2 .......................................... 23 FIG. 2.6. EXEMPLE D'UN DIAGRAMME DE SÉQUENCE COMBINÉ ............................................ 25 FIG. 2.7. EXEMPLE D'UN DIAGRAMME DE VUE D'ENSEMBLE D'INTERACTION DANS UML2 . 25 FIG. 3.1. CFG ET SON DIAGRAMME DE SÉQUENCE CORRESPOND [1] ..................................... 29 FIG. 3.2. DS APRÈS L'EXÉCUTION DE DEUX ITÉRATIONS D'UNE BOUCLE [7] ......................... 30 FIG. 3.3. ARCHITECTURE DE JAVAVIS [7] ............................................................................ 31 FIG. 3.4. MÉTA-MODÈLE DE DIAGRAMME DE SCÉNARIO BRIAND ET AL. [12] ....................... 32 FIG. 3.5. MÉTA-MODÈLE DE TRACE BRIAND ET AL. [12] ........................................................ 32 FIG. 3.6. APPARIEMENT ENTRE TRACE ET SÉQUENCE MÉTA-MODÈLES BRIAND ET AL. [12] 33 FIG. 4.1. LA CONSTRUCTION INCRÉMENTALE DU DIAGRAMME DE SÉQUENCE ...................... 41 FIG. 4.2. TRACES DE L'APPLICATION VENTE AVEC LES DONNÉES D'ENTRÉE DE CHAQUE TRACE ...................................................................................................................................... 42 FIG. 4.3. EXEMPLE DE TRACE ................................................................................................. 43 FIG. 4.4. LA DÉCOMPOSITION DES TRACES EN BLOCS ............................................................. 48 FIG. 4.5. DS DE VENTE APRÈS APPLICATION DE L'ALGORITHME DÉTECTION DE LOOP. ........ 50 FIG. 4.6. DS DE VENTE APRÈS L'APPLICATION DE L'ALGORITHME DÉTECTION DE OPT ........ 53 FIG. 4.7. DS FINAL DE L'APPLICATION VENTE......................................................................... 57 FIG. 5.1. CODE SOURCE DE L'EXEMPLE LOOP.JAVA .............................................................. 58 FIG. 5.2. VERSION NON INSTRUMENTÉ DE LA MÉTHODE M1(). ............................................... 59 FIG. 5.3. VERSION INSTRUMENTÉ DE LA MÉTHODE M1(). ...................................................... 59 FIG. 5.4. TRACE 2 DE L'APPLICATION VENTE GÉNÉRÉE PAR L'OUTIL MODEC .................... 60 FIG. 5.5. TRACE2 ADAPTÉ DE L'APPLICATION VENTE ............................................................ 61 FIG. 5.6. LE MODÈLE RELATIONNEL INTERMÉDIAIRE ........................................................... 62 FIG. 5.7. VUE INITIALE DE LA TABLE MESS_TR ..................................................................... 65 FIG. 5.8. VUE FINALE DE LA TABLE MESS_TR ........................................................................ 66 5 FIG. 5.9. VUE FINALE DE LA TABLE COMBINED_FRAGMENTS ................................................ 67 FIG. 5.10. VUE FINALE DE LA TABLE OPERANDS .................................................................... 67 FIG. 5.11. LE DIAGRAMME DE SÉQUENCE GÉNÉRÉ AFFICHÉ PAR UN ÉDITEUR ECLIPSE ...... 68 FIG. 5.12. UNE PARTIE DU DS REPRÉSENTE UN FRAGMENT COMBINÉ SOUS FORME D'UN DOCUMENT UML ...................................................................................................................... 69
Accédez gratuitement au plan de ce document en vous connectant.
Extraits
[...] Cependant, la deuxième partie est consacrée à une étude détaillée concernant la rétro-ingénierie des diagrammes de séquence. Notre étude liée aux diagrammes de séquence est plus détaillés que celle concernant les machines à états car notre sujet de recherche s'intéresse en particulier aux diagrammes de séquence d'UML. Nous concluions ce chapitre par la discussion des limites des travaux étudiés et en fixant le cadre générale de notre approche que nous proposons dans la seconde partie de cette thèse Etat de l'art sur la comportementaux d'UML rétro-ingénierie des modèles Travaux de la rétro-ingénierie des machines à états Plusieurs travaux de la rétro-ingénierie de machines à état ont été proposés [ 59]. [...]
[...] isInvoice : indique si une facture doit être établie ou non. isPayslip : indique si un bon de paiement doit être établi ou non. Les données avec lesquelles sont initialisés ces paramètres sont eux même les données d'entrée qui précisent le comportement de l'application dans chaque session d'exécution CHAPITRE IV APPROCHE INCRÉMENTALE La classe Vendor contient également les méthodes signInvoice() , signDelivery() , signPayslip() qui représentent le visa des paperasses établies par le vendeur. La classe sale qui représente la vente contient la méthode newSale(), celle-ci crée une nouvelle instance de vente, ainsi contient la méthode addArticle() qui ajoute les articles commandés. [...]
[...] Selon l'analyse dynamique est l'analyse des propriétés d'un programme en cours d'exécution. L'importance de l'analyse dynamique est dérivée de ses caractéristiques essentielles qui sont : La précision des informations : Avec l'analyse dynamique, il est possible de collecter précisément les informations pertinentes qui ne comprennent que des comportements possibles. Dépendance aux entrées des programmes : l'analyse dynamique est caractérisée par le fait que ses résultats sont liés aux données d'entrées et de sorties de programme . Cela permet d'aider les développeurs à comprendre le logiciel en étudiant comment il change son comportement en fonction des différentes entrées et sorties [26]. [...]
[...] Guéhéneuc et Ziadi dans ont proposé une approche d'analyse dynamique pour la rétro-ingénierie des modèles comportementaux d'UML 2.0 (diagrammes de séquence et machines à états). L'approche est définie en trois étapes : Etape 1. Construire des diagrammes de séquence de base à partir de fichiers de traces générés par l'outil d'analyse dynamique Caffeine [38]. Etape 2. La composition de diagrammes de séquence de base. Etape 3. La synthèse des diagrammes d'états. Une fois les diagrammes de séquence auraient été générés, ils produisent des machines à états automatiquement en utilisant une méthode existante pour la synthèse de machines à états. [...]
[...] En effet, les interactions alternatives et itératives ne peuvent être détectées qu'en précisant les valeurs appropriées des conditions else if" et "while, for, repeat . Il faut donc répéter cette phase autant de fois que le nombre de 41 CHAPITRE IV APPROCHE INCRÉMENTALE différentes entrées du système pour collecter les traces pertinentes. Cependant exécuter le système pour couvrir toutes les entrées possibles du système est irréaliste car la plage des valeurs de données est souvent infinie. Dans notre approche nous avons posé l'hypothèse de l'existence d'un utilisateur expert qui connaît les différentes valeurs d'entrées du système eur permettant d'obtenir les traces les plus pertinentes et de couvrir toutes les fonctionnalités possibles du système. [...]