
22.06.2005 2/22
1.3. Document
Le présent document est le rapport de synthèse du travail du groupe de compétence
ISNet-Ne de la Haute école Neuchâteloise en fin de phase II du projet, son contenu devra
s’intégrer dans le cadre global du projet.
Suite aux résultats de la phase I, l’activité de l’équipe neuchâteloise s’est principalement
orientée sur la réalisation d’un prototype de génération de script de création d’objets
persistant dans la base de données à partir de leurs spécifications contenues dans un
fichier XMI. Le modèle de persistance retenu est le modèle relationnel-objet d’Oracle.
Prototype de générateur SQL-DDL
1.4. Introduction
Le prototype que nous avons réalisé permet de générer le script SQL-DDL (Data
Defintion Language) pour une base de données relationnelle (le SGBD cible retenu lors
de l'étape I est Oracle) à partir d'un fichier XMI contenant un modèle de domaine UML
(seul les diagrammes de classes sont pris en considération).
Le prototype est loin d'être une solution de production. Notre objectif était de monter la
faisabilité d'une transformation XMI-UML vers SQL-DDL. Un certain nombre de choix ont
été implémentés sans forcément utiliser la solution la plus propre. Par exemple, nous
utilisons un stéréotype pour gérer les contraintes NOT NULL au lieu d'utiliser la
multiplicité à disposition pour les attributs UML. Nous avons également simplifié certaine
partie de la mise en correspondance afin de respecter les délais qui nous étaient
initialement fixés. Par exemple, pour le moment, les associations doivent être navigable
que dans un sens. De ce fait, l'analyse du fichier XMI s'en trouve facilitée puisque nous
avons contourné le problème posé par les associations bi-directionnelles (graphe
cyclique).
Les critères du génie logiciel et les principes de la conception orientée objet n'ont pas
forcément été respectés dans le cadre de ce travail. En effet, nous avons réutilisé
quelques classes issues d'un autre travail sur la génération de code SQL-DDL qui
n'étaient initialement pas prévues pour être intégrées à ce projet. De plus, nous avons
privilégié la fonctionnalité sur la bonne odeur du code source (au sens XP du terme).
Dans le cas d'une implémentation de production de notre prototype, un important travail
de refactoring sera nécessaire pour obtenir une solution de qualité.
1.5. Parsing XML
Dans le cadre du développement de ce prototype, nous avons utilisé l’API de Sun JAXP
(Java API for XML Processing) pour effectuer le parsing des fichiers XMI. Nous avons
retenu la méthode de parsing de type DOM (Document Object Model). Par manque de
temps, nous n’avons pas pu étudier l’autre alternative orientée événements qui s’appelle
SAX (Simple API for XML).
De toute façon, il nous semble absolument évident qu’une version de production du
générateur devrait être construite sur la base de la norme Xpath du W3C. Etant donné,
les évolutions futures d’XMI (la version 2.0 d’UML devrait bientôt être publiée), il faut