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