La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Spreading Desirable Properties Object-Oriented, Large-Scale

Présentations similaires


Présentation au sujet: "Spreading Desirable Properties Object-Oriented, Large-Scale"— Transcription de la présentation:

1 Spreading Desirable Properties Object-Oriented, Large-Scale
La passerelle DISCOVER-SPOOL : alimentation d'un dépôt de code source pour l'analyse détaillée de systèmes de taille industrielle Jean-François Bédard Département d’informatique et de recherche opérationnelle Université de Montréal SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems Laboratoire de génie logiciel

2 Résumé de la présentation
Objectifs de la recherche Environnement SPOOL Rappels, état de l’art Description du problème Génération des fichiers XMI Dépôt SPOOL évolué Expérimentations, travaux futurs

3 Objectifs de la recherche
Offrir à l’environnement de rétro-ingénierie SPOOL une passerelle évoluée Étendre le métamodèle UML pour modéliser les corps des méthodes Valider le profil RCR par implantation

4 Environnement SPOOL XMI Capture du code source (C, C++, Java)
Parseurs DISCOVER Scripts d’exportation Tcl/Access Outils de visualisation et d’analyse Analyse des dépendances Recherche et exploration Inspection conceptuelle XMI Base de données orientée objet POET

5 Rappels lex et yacc Arbres syntaxiques abstraits (AST)
Graphes sémantiques abstraits (ASG) UML et XMI Profil RCR

6 lex et yacc Utilitaires UNIX pour la construction de compilateurs
lex effectue l’analyse lexicale (division des données d’entrée en jetons) yacc se charge du parsage (découverte des relations entre les jetons) Le parseur interagit étroitement avec le lexeur

7 Arbres syntaxiques abstraits (AST)
Les AST encodent la représentation intermédiaire entre le code source et le code objet Chaque nœud représente un élément structurel du langage (énoncés, expressions, littéraux, etc.) Les AST contiennent toute l’information significative tirée du code source

8 Exemple d’AST contains(1) instance opd(2) opd(1) contains(3)
formal parm () object (salary) type (int) class (Employee) (void) (raise) name literal (50) operator (=) function (main) (jones) (.) (800) class Employee { public: int salary; }; main(void) Employee jones; int raise; jones.salary = 800; raise = 50;

9 Graphes sémantiques abstraits (ASG)
Les ASG constituent des AST augmentés d’informations sémantiques Ajout de liens entre les utilisations et les déclarations des variables, des types et des fonctions

10 Exemple d’ASG contains(1) opd(2) opd(1) contains(5) instance
object (salary) class (Employee) type (void) literal (50) operator (=) (jones) (int) formal parm () (raise) function (main) (800) (.)

11 UML UML (Unified Modeling Language) est un langage graphique pour la visualisation, la construction, la spécification et la documentation des composantes des systèmes logiciels UML représente une collection des meilleures pratiques pour concevoir des systèmes complexes, particulièrement dans le domaine de l’orienté objet

12 Exemple de diagramme de classes UML
manager managedCompanies 0..* employee employer 0..1 customer Bank accountNumber : Integer Company name : String address : String getStockPrice() : Real Job title : String startDate : Date salary : Integer Person firstName : String lastName : String birthDate : Date sex : enum {male, female} getIncome(Date) : Integer

13 XMI XMI (XML Metadata Interchange) est un format d’échange intégrant trois standards industriels : XML, UML et MOF Il facilite l’échange de métamodèles entre les outils de modélisation basés sur UML et les dépôts conceptuels basés sur MOF

14 Exemple de document XMI
<XMI version="1.1" xmlns:UML="org.omg/UML1.3"> <XMI.header> <XMI.model xmi.name="Department" href="Department.xml"/> <XMI.metamodel xmi.name="UML" href="UML.xml"/> </XMI.header> <XMI.content> <UML:Class name="Department" xmi.id="Department"> <UML:ModelElement.ownedElements> <UML:Attribute name="name" type="String"/> <UML:Attribute name="location" type="String"/> </UML:ModelElement.ownedElements> </UML:Class> <!-- autres classes --> <UML:Association> <UML:Association.connection> <UML:AssociationEnd name="memberOf" type="Department"/> <UML:AssociationEnd name="persons" type="Person"/> </UML:Association.connection> </UML:Association> </XMI.content> </XMI>

15 Profil RCR Le profil RCR (rétroconception, compréhension, réingénierie) offre une solution en relation avec UML pour la modélisation détaillée des corps des méthodes d’un système RCR propose des extensions au métamodèle UML sous la forme de métaéléments stéréotypés

16 BehavioralFeature «stereotype» RCR.Step Tags step_kind RCR.CalculateStep calculateStep_kind RCR.CreateStep createStep_kind RCR.AssignStep assignStep_kind RCR.CallStep callStep_kind RCR.CompareStep compareStep_kind RCR.DestroyStep destroyStep_kind RCR.AccessStep accessStep_kind RCR.ConvertStep convertStep_kind RCR.ReflectionStep reflectionStep_kind

17 État de l’art GEN++ Datrix CPPX Columbus DISCOVER
Passerelle Datrix-SPOOL

18 GEN++ GEN++ est un générateur d’analyseurs de code source C++, basé sur le processeur frontal Cfront et sur un langage abstrait de spécification de requêtes, GENOA GENOA visualise le code source du point de vue des graphes sémantiques abstraits (ASG)

19 Datrix Les parseurs Datrix traitent les systèmes rédigés en C, C++ et Java Les parseurs construisent en mémoire les ASG correspondants et émettent leurs graphes en TA-like ou VCG Les fichiers TA-like sont utilisés dans SPOOL par le convertisseur ASG2XMI

20 CPPX CPPX est un compilateur C++ qui produit en sortie une base d’informations CPPX utilise le compilateur GCC de GNU et convertit les ASG résultants en fichiers GXL, TA ou VCG La base d’informations est une collection de faits à propos d’un programme et de ce qu’il contient, définit, utilise, modifie, requiert, importe et exporte

21 Columbus Columbus est un cadre d’application de rétro-ingénierie logicielle pour l’analyse, la représentation interne, le filtrage et l’exportation de code source Dans sa version actuelle, Columbus contient des modules de traitement des systèmes écrits en C++ Entités extraites du code source : les structures (class, struct, union) et leurs composantes (attributs et fonctions), les énumérations, les templates et les objets globaux

22 DISCOVER DISCOVER est un atelier de génie logiciel comportant une suite d’outils aidant à la compréhension des systèmes DISCOVER contient un dépôt alimenté par le parsage détaillé du code source C, C++, Java et SQL DISCOVER donne accès aux AST ainsi emmagasinés par un langage de scriptage dérivé de Tcl, Tcl/Access

23 Passerelle Datrix-SPOOL
Passerelle pour alimenter le dépôt orienté objet de l'atelier SPOOL Elle recueille les fichiers .asg de Datrix et importe leur contenu dans le dépôt Composée de deux applications : le convertisseur ASG2XMI et l’importateur XMI

24 Description du problème
Alimentation d’un dépôt de code source permettant l’analyse détaillée de systèmes logiciels de taille industrielle Éléments constitutifs d’un système considérés et exclus Langages de programmation considérés Attentes techniques : processus rapides et fichiers compacts

25 Arbres syntaxiques abstraits (AST) Scripts d’exportation Tcl/Access
Ébauche de la solution Arbres syntaxiques abstraits (AST) Scripts d’exportation Tcl/Access Fichiers XMI de base Fichiers XMI/RCR Dépôt SPOOL/RCR DISCOVER Importateur XMI/RCR Fichiers source (C, C++, Java)

26 Fichiers XMI de base Fichiers décrivant principalement les éléments constitutifs d’un système Approche retenue : construction préalable de tables de symboles globales Éléments recueillis : les structures et leurs attributs, les énumérations et leurs littéraux, les alias (typedef) et les déclarations et définitions de fonctions

27 Fichiers XMI/RCR Fichiers décrivant principalement les objets globaux et les corps des méthodes d’un système Implantation concrète du profil RCR Script d’exportation XMI/RCR : ensemble de procédures (104) rattachées aux types de nœuds d’AST rencontrés, regroupées à l’intérieur de 7 familles génériques

28 Dépôt SPOOL/RCR Intégration du profil RCR dans le modèle actuel du dépôt SPOOL par l’adjonction de nouvelles classes et dépendances Buts visés : supporter le langage Java et modéliser le détail des corps des méthodes

29 Nouvelles classes du dépôt SPOOL/RCR
MRCRAccessStep accessStep_kind composite part MBehavioralFeature MRCRAssignStep assignStep_kind target value MRCRStep step_kind MRCRCalculateStep calculateStep_kind operand MRCRCallStep callStep_kind operation argument MRCRCompareStep compareStep_kind MRCRConvertStep convertStep_kind type MRCRCreateStep createStep_kind step arraySize initValue MRCRDestroyStep destroyStep_kind MRCRReflectionStep reflectionStep_kind entity

30 Importateur XMI/RCR L’importateur XMI/RCR lit les fichiers XMI de base et XMI/RCR et crée les objets correspondants dans le dépôt de données SPOOL/RCR Architecture relativement simple : utilisation du parseur xml4j d’IBM Traitement rapide des fichiers

31 Résultats des expérimentations
Ajustements au profil RCR Tests de génération XMI : systèmes Apache, ET++, SPOOL et jKitGo Importation réussie des fichiers XMI de base dans SPOOL Fichiers XMI plus complets tout en étant plus compacts

32 Travaux futurs Implantation du dépôt SPOOL/RCR
Implantation de l’importateur XMI/RCR Ajustements aux scripts d’exportation Développement de nouveaux outils d’analyse et de visualisation pour l’atelier SPOOL Application des algorithmes de génération des fichiers XMI et XMI/RCR à d’autres processeurs frontaux

33 Conclusion La disponibilité d'arbres syntaxiques abstraits de qualité constitue la pierre angulaire de l’analyse statique rigoureuse du code source L’intégration du profil RCR fournit une preuve tangible de l’efficacité des mécanismes d’extension d’UML L’utilisation du format d’échange XMI met en valeur une solution efficiente pour l’encodage de modèles complexes

34 Merci pour votre présence et votre attention.


Télécharger ppt "Spreading Desirable Properties Object-Oriented, Large-Scale"

Présentations similaires


Annonces Google