Quels intérêts et usages pour le reverse engineering - HE-Arc

publicité
045_046_204 24/01/17 21:58 Page45
data
45
# 204
MODÉLISATION DES DONNÉES
Partie 4
Quels intérêts et usages
pour le reverse engineering ?
Pierre-André Sunier
Professeur HES
Haute école de
gestion Arc,
HES-SO
[email protected]
Steve Berberat
Collaborateur
scientifique
Haute école de
gestion Arc,
HES-SO
[email protected]
Base de données d’exemple
Pour illustrer le fonctionnement de l’ingénierie inverse, nous nous baserons sur une petite base de données Oracle existante et dotée de 4
tables. La Figure 3 présente la visualisation des tables et des colonnes de
cette base de données à partir de SQL Developer. Volontairement, aucun
modèle de données n’existe pour le moment : ce sont justement les fonctionnalités d’ingénierie inverse qui nous permettront d’en créer et de
mieux comprendre cette structure de données !
Illustration avec l’automate MVC-CD
Nous allons réaliser l’ingénierie inverse en générant les modèles logiques
et physiques, puis conceptuels de données, avec deux outils différents.
Dans ce chapitre, nous présentons cette démarche et le résultat obtenu
avec un premier outil appelé « MVC-CD ».
L’automate de transformation MVC-CD
L’automate « MVC-CD » est un prototype développé dans le cadre d’un
projet de recherche à la Haute école de gestion Arc. Il se matérialise sous
la forme d’un plug-in à ajouter à Visual Paradigm, qui est un outil de modélisation supportant plusieurs types de diagrammes dont notamment
ceux proposés par UML. Le plug-in est téléchargeable librement. Vous
trouverez toutes les informations nécessaires dans les références de cet
article. Veuillez noter qu’un des atouts de cet automate est de pouvoir
générer une base de données relationnelle Oracle embarquant les triggers et procédures qui assurent le respect des contraintes et règles
métiers décrites initialement sur le MCD. Si cet aspect vous intéresse,
sachez qu’il a fait l’objet d’un de nos
précédents articles publiés dans l’édition de novembre 2016.
Générer le MLD et le MPD
Visual Paradigm effectue nativement
de l’ingénierie inverse à partir d’une
base de données vers des modèles logiques et physiques ; le plug-in n’est
donc pas encore nécessaire à ce
stade. La fonctionnalité est disponible
dans le menu « Tools » puis « DB ».
Après avoir renseigné les informations de connexion à la base de
En qualité de développeur, il nous est parfois
demandé de reprendre une application faite sur
mesure. Pour la comprendre, nous devons lire
son modèle de données. Hors, il se peut que ce
dernier ne soit pas disponible ou soit désuet. La
solution : recourir à l’ingénierie inverse.
données, nous devons sélectionner le schéma Oracle dans lequel Visual
Paradigm ira rechercher la structure de données. La liste des objets présents dans ce schéma est affichée et nous devons cocher ceux que nous
souhaitons prendre en compte pour réaliser l’ingénierie inverse. Une prévisualisation des objets qui seront récupérés nous permet de valider les
choix et d’exécuter la génération du MLD et du MPD. Après avoir disposé les tables obtenues sur un diagramme, nous obtenons ce qui est
présenté en Figure 4. La représentation logique de la base de données
permet déjà d’y voir plus clair ! Vous remarquerez que, dans Visual
Paradigm, les MLD et MPD se regroupent dans un seul type de diagramme appelé « Entity Relationship Diagram ». Ce diagramme utilise la
notation graphique de Bachman pour ce qui est des relations.
Générer le MCD
Le MLD obtenu offre déjà une vision simplifiée de la base de données.
Pour le concepteur qui s’intéresse à la structure des données, cette vision
peut encore l’être davantage. En effet, il est possible de faire abstraction, par
exemple, des colonnes de clés étrangères qui sont propres à la technologie
des bases de données relationnelles. C’est l’ingénierie inverse du MLD vers
le MCD qui permet cela. L’automate de transformation MVC-CD est nécessaire cette fois, car Visual Paradigm ne prend pas réellement en charge la
notion de modèle conceptuel. Lors de l’exécution de l’automate, une fenêtre permet de renommer les éléments conceptuels. Cela permet, par
exemple, de définir des noms d’entités au singulier. Suite à cela, l’automate
crée les éléments. La représentation utilisée pour le modèle conceptuel est
4 MLD/MPD obtenu par reverse engineering
avec Visual Paradigm
3 Base de données d’exemple
programmez! - février 2017
045_046_204 24/01/17 21:58 Page46
46 data
# 204
le diagramme de classes UML. En disposant convenablement les éléments
obtenus, nous parvenons au résultat illustré en Figure 6.
Vous remarquerez la richesse du modèle qui permet de faciliter la lecture de la structure de données ! Nous pouvons facilement lire que l’entité
« Fourniture » est une spécialisation de « Article », ce qui explique les cardinalités maximales à 1 que nous voyions aux extrémités de la relation
située entre les 2 tables correspondantes sur le modèle logique en Figure 4.
Nous remarquons également que « Offre » est une entité associative utilisant la représentation de la classe associative UML. Les stéréotypes
« UID-1 » indiquent des identifiants uniques, alors que « M » pour
« Mandatory » signale un attribut obligatoire.
Illustration avec Oracle Data Modeler
Environnement de développement mis à disposition gratuitement par
Oracle, SQL Developer offre une fonctionnalité appelée Data Modeler
qui permet de générer une base de données à partir de modèles, ainsi
que de réaliser de l’ingénierie inverse. Cet outil, contrairement à Visual
Paradigm, est adapté avant tout aux bases de données Oracle, bien qu’il
supporte également SQL Server et DB2. Par soucis de simplification,
nous emploierons le terme raccourci « Oracle Data Modeler » dans la
suite de cet article.
Générer le MLD et le MPD
Pour générer les modèles logiques et physiques à partir d’une base de
données avec Oracle Data Modeler, il faut se rendre dans le menu
« Fichier » et sélectionner l’option « Data Modeler » puis « Importer » et
enfin « Dictionnaire de données ». Un assistant nous guide et nous permet de choisir les objets à récupérer. Une fois les étapes terminées, les
MLD et MPD sont créés. Seul le MLD est visible sur un diagramme.
Après un réarrangement graphique des tables sur le diagramme, nous
obtenons ce que vous pouvez visualiser en Figure 7.
La représentation graphique utilisée ici diffère de celle utilisée par Visual
Paradigm. Les relations sont affichées à l’aide de flèches, l’extrémité de la
flèche indiquant une cardinalité maximale à 1. Par défaut, les contraintes
de clé primaire, de clé étrangère, d’unicité ainsi que les index sont affichés. Ces éléments peuvent être masqués, ce que nous avons effectué ici
pour les index de façon à alléger quelque peu le diagramme.
Générer le MCD
Oracle Data Modeler prend en charge la notion de modèle conceptuel,
aussi bien pour générer un modèle logique que pour effectuer une ingénierie inverse ! L’ingénierie inverse du MLD en MCD se réalise à l’aide
d’une icône accessible lorsque le modèle logique est ouvert. Oracle Data
Modeler nous permet, à l’aide d’un glossaire, de définir des termes avec
leur orthographe au singulier et au pluriel, ce qui lui permet d’utiliser des
noms singuliers pour créer les entités, en se basant sur les noms des tables
au pluriel. La Figure 8 vous présente le résultat obtenu. La notation utilisée
6
programmez! - février 2017
MCD obtenu par reverse engineering avec MVC-CD
vient de Barker. La lecture des cardinalités est particulière. En effet, la cardinalité minimale se lit du côté de l’entité, alors que la cardinalité maximale
se lit du côté opposé de l’entité. Le modèle conceptuel obtenu avec Oracle
Data Modeler est épuré de tout élément technique. Ici également, il nous
semble évident que la lecture du MCD est plus facile que celle du MLD !
Notons cependant que la représentation Oracle Data Modeler est moins
riche que celle du diagramme de classe UML. Par exemple, le sens de
l’entité « Fourniture » n’est pas compréhensible de manière aussi évidente
que sur le diagramme UML de la Figure 6, où le lien de spécialisation
montre clairement que la fourniture est une sorte d’article.
CONCLUSION
Vous connaissez maintenant le concept de l’ingénierie inverse à partir
d’une base de données et comprenez les différents usages qui peuvent
en être faits. Avec les illustrations réalisées au travers de deux outils différents, vous avez pu remarquer qu’il existe des différences, notamment
en matière de notation graphique, mais vous avez aussi vu que le
concept général reste le même. Au vu du peu d’investissement que le
processus d’ingénierie inverse nécessite et du gain qu’il apporte, nous ne
pouvons que vous conseiller de l’utiliser dans votre environnement, autant pour créer ou mettre à jour des modèles servant de documentation,
que pour faire évoluer une base de données par réingénierie !
•
Références
Projet MVC-CD et téléchargement de l’automate de transformation :
http://lgl.isnetne.ch/Sagex35793/index.htm
Droz-dit-Busset Michaël que nous remercions, Travail de Bachelor
« MVC-CD – Ingénierie inverse », juillet 2015
7 MLD obtenu par reverse engineering
avec Oracle Data Modeler
8 MCD obtenu par reverse engineering
avec Oracle Data Modeler
Téléchargement