Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT tesi di laurea Trasformazione di modelli di progetto : soluzioni basate su XSLT Anno Accademico 2005/2006 relatore Ch.mo prof. Porfirio Tramontana candidato Claudio Liccardi Matr. 831/117 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Reverse Engineering - Il problema da affrontare Reverse Engineering: Cos Cos’è ’è:: un processo semisemi-automatico che, a partire dal codice, permette di ottenere i modelli progettuali del software per poi arrivare a dedurne le specifiche specifiche formali. Le fasi fondamentali: • Estrazione • Astrazione • Comprensione e descrizione Il problema: Per sistemi software di dimensioni mediomedio-grandi, risulterebbe lento, laborioso, difficile e dai costi elevati ¾ L’obiettivo: supportare e rendere efficiente il processo Generazione automatica del modello CODICE MODELLO Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Trasformazione di modelli per R.E. In questa tesi ci si sofferma sulla trasformazione automatica di modelli relativamente alla fase di astrazione del R.E. Il percorso: 1. Si parte dal modello di dettaglio ottenuto dalla fase di estrazione estrazione 2. Si trasforma tramite algoritmi di astrazione, in uno o più più passi elaborativi automatizzati, il modello di basso livello in un altro a un livello livello di astrazione più più elevato. Si definisce un modello in grado di rappresentare l'applicazione ad un più più alto livello di astrazione E’ necessario disporre di strumenti per rappresentare e trasformare trasformare modelli. 3. Si giunge a un modello di alto livello che permetta di ricavare le specifiche formali Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Un possibile approccio: adoperare XML e XMI Un esempio di documento XML XML (eXtensible Markup Language) Perchè Perch è è stato scelto: E’ garantita <RADICE> <GENITORE1> <FIGLIO_1> Dati </FIGLIO_1> . . <FIGLIO_N FIGLIO_N> > Dati </FIGLIO_N </ FIGLIO_N> > </GENITORE1> </RADICE> Standard del W3C l’ interoperabilit interoperabilità à tra sistemi e applicazioni Documento testuale Ideale per rappresentare modelli Caratterizzato da un struttura gerarchica strutturati da trasformare Elaborabile tramite un suo dialetto: XSLT XMI (Xml (Xml Metadata Interchange Interchange)) Perché Perch é è stato scelto: Standard OMG, basato su XML Permette di mappare modelli UML tramite tag XML Ideale per trasformare modelli rappresentati in XML Un esempio di <UML:Class xmi.id= xmi.id=““IdClasse IdClasse” ” name= name=““NomeClasse NomeClasse”” visibility=“” visibility= “” isRoot= isRoot=“” “” isLeaf=“” isLeaf= “” isAbstract=“” isAbstract= “”> > documento XMI <UML:Classifier.feature <UML: Classifier.feature> > <UML:Attribute xmi.id= xmi.id=“” “” name=“” name= “” visibility= visibility=“” “”> > Ideale come formato del modello di arrivo per cui progettare le trasformazioni Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Le soluzioni valutate per la trasformazione VANTAGGI SVANTAGGI ESEGUIBILE Versatilità e Flessibilità Versatilità Flessibilità Potenza dei moderni linguaggi di programmazione Non progettato per trasformazioni di modello Portabilità Portabilit à ed estensibilità estensibilità limitata Accessibilità Accessibilit à del codice ALTOVA MAPFORCE Mapping visuale Generazione automatica di un documento XSLT Portabilità Portabilit à Scarsa riusabilità riusabilità ed adattabilità adattabilità del codice XSLT generato Soluzione proprietaria e costosa XSLT Progettato per trasformazioni di documenti XML Limiti di un linguaggio non Simile ai comuni linguaggi di procedurale programmazione(ma dichiarativo) Portabilità Portabilit à Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT XSLT : parser e processori La trasformazione di un documento XML avviene attraverso due elaborazioni: elaborazioni: 1. Parsing Lo scopo è rappresentare il documento XML in un modello a oggetti più più adatto all’’elaborazione da parte delle applicazioni. all Ne esistono due categorie: Foglio di Documento stile XSL(T) Tree based (standard DOM) XML Event based (Sax: standard de facto) Parser XML 2. Applicazione del foglio di stile tramite un processore XSLT Parsing del documento XML e del foglio di stile XSL(T) Visita del modello creato dal parser e selezione del relativo template per il nodo/evento corrente. Utilizzo del template selezionato. Modello a oggetti XSLT Modello a oggetti XML Processore XSLT Documento XMI Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Un esempio concreto: R.E. di applicazioni flash Si parte da un lavoro di tesi precedente in cui: Si decompilano le flash application di una pagina web tramite l’ l ’applicazione “Flash Decompiler” Decompiler” Si ricavano informazioni ausiliarie non ottenibili tramite il decompiler decompiler I componenti e le informazioni estratte vengono catalogati in un DB Access. Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Cosa è stato fatto (1) Database Access Database XML Documento XSLT Processore XSLT Documento XMI Modello UML 1. Esportazione in XML del database ottenuto dalla prima fase di R.E. (tramite Access) 2. Realizzazione di un documento XSLT che trasformi XML in XMI. Il mapping tra i tag dell’ dell’XML e quelli dell’ dell’XMI avverrà avverrà in questo modo: TABELLA Stereotipo ENTRY Classe avente come stereotipo quello della relativa tabella CAMPI Attributi CONTENUTO DEL CAMPO Valore di default del relativo attributo COLLEGAMENTO TRA ENTRY Associazioni tra classi Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Cosa è stato fatto (2) Un frammento dell’’XSLT creato dell <xsl:template match="/*"> <XMI xmi.version="1.2" xmlns:UML="org.omg/UML/1.4"> <XMI.header> <XMI.metamodel xmi.name="UML" xmi.version="1.4"/> </XMI.header> <XMI.content> <UML:Model xmi.id="M.1" name="{name()}" visibility="public" isSpecification="false isSp ecification="false”” isRoot="false" isLeaf="false" isAbstract="false"> <UML:Namespace.ownedElement> <!-<! -- Applico i template per cercare le classi, gli stereotipi e le associazioni associazioni ---> > <xsl:apply xsl:apply--templates select="/*/*" mode="StereotipiFlash"/> <xsl:apply xsl:apply--templates select="/*/*" mode="Stereotipi"/> <xsl:apply xsl:apply--templates select="/*/*" mode="Classi"/> 3. Applicazione del documento creato tramite XSLT processor 4. Importazione del file XMI generato in un ambiente grafico UML (ArgoUML ( ArgoUML)) 5. Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Trasformazione di modelli di progetto: soluzioni basate su XSLT Conclusioni e sviluppi futuri Caratteristiche dell’ dell ’algoritmo proposto: Applicabile a qualsiasi database Indipendente dall dall’’applicazione da modellare Possibili sviluppi futuri: Migliorare ll’’efficienza Estenderne il campo di applicazione Migliorare la struttura del database Realizzare un interfaccia guidata