Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of...

34
Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems 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 Laboratoire de génie logiciel

Transcript of Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of...

Page 1: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

SPOOLSpreading Desirable Properties

into the Design of Object-Oriented, Large-Scale

Software Systems

La passerelle DISCOVER-SPOOL :alimentation d'un dépôtde code source pourl'analyse détaillée desystèmes de tailleindustrielle

Jean-François Bédard

Département d’informatique etde recherche opérationnelleUniversité de Montréal

Laboratoire de génie logiciel

Page 2: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 3: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 4: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Environnement SPOOL

Capture du code source(C, C++, Java)

Parseurs DISCOVER

Scripts d’exportation Tcl/Access

Base de donnéesorientée objet

POET

XMI

Outils de visualisationet d’analyse

Analyse des dépendances

Recherche et exploration

Inspection conceptuelle

Page 5: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Rappels

• lex et yacc

• Arbres syntaxiques abstraits (AST)

• Graphes sémantiques abstraits (ASG)

• UML et XMI

• Profil RCR

Page 6: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 7: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 8: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Exemple d’AST

contains(1)

instance instance instance opd(2)opd(1)

contains(1) contains(3) contains(5)

instance

contains(2)

opd(2)opd(1)

contains(4)

opd(2)opd(1)

formal parm()

object(salary)

type(int)

class(Employee)

type(void)

object(raise)

type(int)

name(raise)

literal(50)

operator(=)

function(main)

object(jones)

type(Employee)

operator(.)

literal(800)

operator(=)

name(jones)

name(salary)

class Employee{ public: int salary;};

main(void){ Employee jones; int raise; jones.salary = 800; raise = 50;};

Page 9: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 10: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Exemple d’ASG

contains(1)

opd(2)

opd(1)contains(5)

opd(1)opd(1)

instanceinstance

instance

contains(3)

instance

contains(4)

contains(2)

opd(2)

opd(2)

contains(1)

object(salary)

class(Employee)

type(void)

literal(50)

operator(=)

object(jones)

type(int)

formal parm()

object(raise)

function(main)

literal(800)

operator(=)

operator(.)

Page 11: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 12: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Exemple de diagramme de classes UML

manager

managedCompanies

0..*

employee

0..*

employer

0..*

0..1

customer

Bank

accountNumber : Integer

Company

name : Stringaddress : String

getStockPrice() : Real

Job

title : StringstartDate : Datesalary : Integer

Person

firstName : StringlastName : StringbirthDate : Datesex : enum {male, female}

getIncome(Date) : Integer

Page 13: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 14: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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>

Page 15: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 16: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

BehavioralFeature

«stereotype»RCR.Step

Tagsstep_kind

«stereotype»RCR.CalculateStep

TagscalculateStep_kind

«stereotype»RCR.CreateStep

TagscreateStep_kind

«stereotype»RCR.AssignStep

TagsassignStep_kind

«stereotype»RCR.CallStep

TagscallStep_kind

«stereotype»RCR.CompareStep

TagscompareStep_kind

«stereotype»RCR.DestroyStep

TagsdestroyStep_kind

«stereotype»RCR.AccessStep

TagsaccessStep_kind

«stereotype»RCR.ConvertStep

TagsconvertStep_kind

«stereotype»RCR.ReflectionStep

TagsreflectionStep_kind

Page 17: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

État de l’art

• GEN++

• Datrix

• CPPX

• Columbus

• DISCOVER

• Passerelle Datrix-SPOOL

Page 18: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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)

Page 19: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 20: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 21: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 22: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 23: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 24: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 25: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Ébauche de la solution

Arbressyntaxiques

abstraits(AST)

Scriptsd’exportation

Tcl/Access

FichiersXMI de base

FichiersXMI/RCR

DépôtSPOOL/RCR

DISCOVERImportateur

XMI/RCR

Fichiers source

(C, C++, Java)

Page 26: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 27: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 28: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 29: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Nouvelles classes du dépôt SPOOL/RCR

MRCRAccessStep

accessStep_kindcompositepart

MBehavioralFeature

MRCRAssignStep

assignStep_kindtargetvalue

MRCRStep

step_kind

MRCRCalculateStep

calculateStep_kindoperand

MRCRCallStep

callStep_kindoperationargument

MRCRCompareStep

compareStep_kindoperand

MRCRConvertStep

convertStep_kindvaluetype

MRCRCreateStep

createStep_kindtypesteparraySizeinitValue

MRCRDestroyStep

destroyStep_kindtargetstep

MRCRReflectionStep

reflectionStep_kindentity

Page 30: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 31: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 32: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 33: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

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

Page 34: Séminaire GÉLO, Montréal, le 3 avril 2002 SPOOL Spreading Desirable Properties into the Design of Object-Oriented, Large-Scale Software Systems La passerelle.

Séminaire GÉLO, Montréal, le 3 avril 2002

                               

Merci pour votre

présence et votre

attention.