1 / 34

SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale

Laboratoire de génie logiciel. 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

Download Presentation

SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Laboratoire de génie logiciel La passerelle DISCOVER-SPOOL :alimentation d'un dépôtde code source pourl'analyse détaillée desystèmes de tailleindustrielleJean-François BédardDépartement d’informatique etde recherche opérationnelleUniversité de Montréal SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems

  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. XMI Base de donnéesorientée objetPOET Environnement SPOOL Capture du code source(C, C++, Java) Parseurs DISCOVER Scripts d’exportation Tcl/Access Outils de visualisationet d’analyse Analyse des dépendances Recherche et exploration Inspection conceptuelle

  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. class (Employee) function (main) contains(1) contains(1) contains(3) contains(5) formal parm () object (raise) operator (=) object (salary) instance instance instance opd(1) opd(2) type (int) type (void) type (int) name (raise) literal (50) contains(2) contains(4) object (jones) operator (=) class Employee { public: int salary; }; main(void) { Employee jones; int raise; jones.salary = 800; raise = 50; }; instance opd(1) opd(2) type (Employee) operator (.) literal (800) opd(1) opd(2) name (jones) name (salary) Exemple d’AST

  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. type (void) type (int) class (Employee) contains(1) instance instance object (salary) function (main) instance contains(2) contains(3) instance contains(1) formal parm () object (jones) object (raise) opd(2) contains(4) contains(5) opd(1) operator (=) operator (=) opd(1) opd(1) opd(2) opd(2) operator (.) literal (800) literal (50) Exemple d’ASG

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

  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 «stereotype» RCR.CreateStep Tags createStep_kind «stereotype» RCR.DestroyStep Tags destroyStep_kind «stereotype» RCR.AssignStep Tags assignStep_kind «stereotype» RCR.AccessStep Tags accessStep_kind «stereotype» RCR.CallStep Tags callStep_kind «stereotype» RCR.ConvertStep Tags convertStep_kind «stereotype» RCR.CalculateStep Tags calculateStep_kind «stereotype» RCR.CompareStep Tags compareStep_kind «stereotype» RCR.ReflectionStep Tags 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. Fichiers source(C, C++, Java) FichiersXMI de base FichiersXMI/RCR Scriptsd’exportationTcl/Access ImportateurXMI/RCR DISCOVER Arbressyntaxiquesabstraits(AST) DépôtSPOOL/RCR Ébauche de la solution

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

  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.

More Related