Spécifications de l`algorithme de transformation incrémentale d`un

publicité
Projet MVC-CD
Spécifications de l'algorithme de transformation
incrémentale de MCD en MLD-R
Créé par P.-A. Sunier, le 12 juin 2013
Modifié par P.-A. Sunier, le 7 février 2014
Page 1 sur 21
Table des matières
1
Préambule ....................................................................................................................................... 3
2
Organisation du référentiel ............................................................................................................. 3
3
Choix du mode de transformation .................................................................................................. 3
4
Transformation incrémentale ......................................................................................................... 3
4.1
5
Référencement entre MCD et MLD......................................................................................... 3
4.1.1
Cible logique .................................................................................................................... 3
4.1.2
Source conceptuelle ........................................................................................................ 4
4.1.3
Diagrammes logiques de données .................................................................................. 4
Algorithme principal - 1ère esquisse ................................................................................................. 5
5.1
Concept ................................................................................................................................... 5
5.1.1
Aspect dynamique ........................................................................................................... 5
5.1.2
Aspect statique ................................................................................................................ 6
5.2
Découpage en activités ........................................................................................................... 8
5.2.1
6
Algorithme principal - 2ème esquisse.............................................................................................. 10
6.1
Concept ................................................................................................................................. 10
6.1.1
Aspect dynamique ......................................................................................................... 10
6.1.2
Aspect statique .............................................................................................................. 10
6.2
Découpage en activités ......................................................................................................... 16
6.2.1
7
Activité - Contrôle de conformité du MCD .................................................................... 17
Algorithme principal - 3ème esquisse.............................................................................................. 18
7.1
Concept ................................................................................................................................. 18
7.1.1
Aspect dynamique ......................................................................................................... 18
7.1.2
Aspect statique .............................................................................................................. 18
7.2
8
Activité - Contrôle de conformité du MCD ...................................................................... 9
Découpage en activités ......................................................................................................... 19
Références internes au projet ....................................................................................................... 19
Page 2 sur 21
1 Préambule
L'algorithme de transformation incrémentale d'un modèle conceptuel de données en un modèle
logique relationnel s'appuie sur les modalités de transformation que nous avons décrites dans le
document Spécifications de transformation d'un MCD en un MLD-R [RF-2] et sur les Spécifications
de transformation incrémentale entre MCD et MLD décrites dans [RF-3].
2 Organisation du référentiel
Le référentiel sera organisé selon les préceptes qui ont été présenté en [RF-1a]
3 Choix du mode de transformation
L'algorithme de transformation doit tenir compte du choix du modélisateur d'obtenir:



un modèle logique basé sur des dépendances entre tables - MLD-DT;
un modèle logique basé sur des tables indépendantes - MLD-TI;
les deux modèles ci-dessus.
[Plus de détails en RF-3 – Chapitre Cohérence du modèle logique entre itérations]
Toutefois, la transformation incrémentale d'un modèle logique basé sur des tables dépendantes est
tellement contraignante que nous y renonçons dans un premier temps.
Dès lors, nous retenons les modes de faire suivants:


la transformation incrémentale sera assurée pour les modèles basés sur des tables
indépendantes;
les modèles logiques basés sur des dépendances entre tables sont effacés et recréés
complètement à chaque transformation.
4 Transformation incrémentale
4.1 Référencement entre MCD et MLD
Un référencement croisé entre élément(s) de niveau conceptuel et objet(s) de niveau logique est
réalisé lors de la création des objets de niveau logique et maintenu entre les différentes itérations.
Le référencement est réalisé par des tags.
4.1.1 Cible logique
Tout élément de niveau conceptuel doit référencer le ou les objets de niveau logique dont il est
source de dépendance.
La référence sera double:


Un tag MLDTargetId qui réfère l'id Visual Paradigm de l'objet logique;
Un tag MLDVPElementName qui contient le nom de l'objet logique.
Le premier tag MLDVPElementId est en fait une clé primaire et sera utilisé en tant que tel.
Page 3 sur 21
Le second tag MLDVPElementId est en fait un identifiant naturel qui, à terme, nous permettrait de
recréer un objet de niveau logique qui aurait été supprimé par erreur.
4.1.2 Source conceptuelle
Tout objet de niveau logique doit référencer le ou les éléments de niveau conceptuel dont il est cible
de dépendance.
La référence sera double:


Un tag MCDVPElementId qui réfère l'id Visual Paradigm de l'élément conceptuel;
Un tag MCDVPElementName qui contient le nom de l'élément conceptuel.
Le premier tag MCDVPElementId est en fait une clé primaire et sera utilisé en tant que tel.
Le second tag MCDVPElementId est en fait un identifiant naturel qui, à terme, nous permettrait de
recréer un objet de niveau conceptuel qui aurait été supprimé par erreur.
4.1.3 Diagrammes logiques de données
Les diagrammes ne sont pas effacés entre les différentes itérations.
Page 4 sur 21
5 Algorithme principal - 1ère esquisse
5.1 Concept
5.1.1 Aspect dynamique
Le principe de l'algorithme principal est représenté par le scénario nominal ci-dessous.
Nous y avons mis en évidence:


le référentiel de VP qui contient:
o le MCD à transformer;
o le MLD existant (lors de la 1ère itération, le MLD n'existe pas)
o le nouvel MLD obtenu par adaptation du MLD aux spécifications contenues dans le
MCD.
les objets essentiels en mémoire du plugin:
o MCDElement - les éléments du MCD à transformer;
o MLDElementExistant - les éléments du MLD existant et à adapter;
o MLDAObtenirElement - les éléments du MLD tels qu'ils devront être après la
transformation;
o MLDAdaptateur - les spécifications de base de réalisation du delta entre éléments du
MLD à obtenir et éléments existants.
Figure 1 - Scénario nominal de l'algorithme principal
Page 5 sur 21
5.1.2 Aspect statique
Les classes essentielles requises par l'algorithme de transformation sont représentées ci-dessous.
Figure 2 - Classes essentielles à la réalisation de la transformation
Dans le modèle de classes essentiel ci-dessus, nous trouvons:


les classes:
o MCDElement - éléments du modèle conceptuel de données (entités, associations,
attributs, contraintes…);
o MLDElement - éléments du modèles logique de données (tables, colonnes…);
o MLDAdaptaeur - spécifications élémentaires de réalisation du delta entre MLD à
obtenir et MLD exoistant;
les interfaces:
o MLDAObtenirElement: éléments du modèle logique à obtenir en fin de
transformation; il s'agit d'une spécialisation de MLDElement;
o MLDExistantElement: éléments du modèle logique existant avant la transformation;
il s'agit d'une spécialisation de MLDElement;
Page 6 sur 21

les relations (UML):
o de dépendance:
 1 - De MLDAObtenirElement à MCDElement: référence à l'élément
conceptuel ayant amené à l'instantiation de MLDAObtenirElement;
 2- De MLDAExistantElement à MCDElement: référence à l'élément
conceptuel ayant amené à l'instantiation de MLDAExistantElement;
 3- De MCDElement à MLDAExistantElement: référence à l'élément logique
existant d'un élément conceptuel (utile au traçage entre les différentes
itérations);
 4 - De MLDAdaptateur à MLDAObtenirElement: référence à l'élément
logique servant de situation finale à MLDAdapteur;
 5 - De MLDAdaptateur à MLDAExistantElement: référence à l'élément
logique servant de situation initiale à MLDAdapteur;
o de réalisation:
 entre l'interface MLDAObtenirElement et la classe MLDElement;
 entre l'interface MLDExistantElement et la classe MLDElement;
Page 7 sur 21
5.2 Découpage en activités
Figure 3 - Diagramme d'activités principales
Page 8 sur 21
Le diagramme de la Figure 3 - Diagramme d'activités principalesmontre les activités principales de
l'algorithme de transformation à savoir:





5.2.1
Contrôle de conformité du MCD - la logique de l'algorithme peut s'arrêter à cette seule
activité si seul le contrôle de conformité est souhaité par l'utilisateur.
Si le modèle est conforme, les objets MCDElement sont créés en mémoire.
[L'activité est décrite en Figure 4]
Lecture du MLD existant et mise en mémoire - lecture du MLD existant et création des
objets MLDExistantElement en mémoire.
La lecture du MLD existant est effectuée si la transformation est incrémentale et que le MLD
a été créé lors d'une itération précédente.
Génération du nouvel MLD en mémoire - lecture des objets MCDElement conformes
existants en mémoire et création des objets MLDACreerElement en mémoire.
Elaboration du delta entre MLD existant en mémoire et MLD nouveau en mémoire création des objets MLDAdaptateur qui vont contenir les spécifications de correction du
delta entre MLD existant et MLD à obtenir.
Si la transformation n'est pas incrémenatle ou qu'il s'agit de la 1ère itération, le delta
correspond à la réalisation du MLD à obtenir.
Génération du MLD - Exécution du code de transformation contenu dans les objets
MLDAdaptateur.
Activité - Contrôle de conformité du MCD
Figure 4 - Activité "Contrôle de conformité du MCD"
Page 9 sur 21
6 Algorithme principal - 2ème esquisse
6.1 Concept
6.1.1 Aspect dynamique
Le principe de la 1ère esquisse est maintenu [5.1].
6.1.2 Aspect statique
Par rapport à la 1ère esquisse, nous avons avancé dans la réalisation et affiné la structure de données
6.1.2.1 MLD
Les éléments du modèle logique à obtenir , MLDAObtenirElement, et existant, MLDExistantElement,
ne sont plus des interfaces; ils sont différenciés par l'instanciation en mémoire de deux modèles
logiques [Figure 5].
Figure 5 - 2 instances du modèle logique de données
Page 10 sur 21
6.1.2.2 Liens en mémoire entre référentiel VP et modèles de données
Figure 6 - Classes en charge de la traçabilité de la transformation incrémentale
Page 11 sur 21
Le modèle de la Figure 6 représente les classes essentielles qui vont permettre de garder la trace des
dépendances entre éléments de modèles de niveaux différents. Nous pouvons observer:

Les classes
o MCDElement - ancêtre de tous les éléments de niveau conceptuel en mémoire,
comme par exemple: entité, attribut, association…
o MLDElement - ancêtre de tous les éléments de niveau logique en mémoire, comme
par exemple: table, colonne…
Il y aura des éléments de niveau logique propres à l'instance du MLD à obtenir et
d'autres du MLD existant.
o VPElement - ancêtre des éléments du référentiel de VP qui sont chargés en mémoire.
L'attribut idIME est l'identifiant unique de tout élément du référentiel de VP.
Les éléments du référentiel de VP en mémoire sont utiles pour mettre en place le
double référencement [4.1] entre MCD et MLD et en assurer ensuite la persistance
au sein du référentiel de VP.
o VPElementMCD - sert à faire le lien entre un élément de niveau conceptuel et son
éventuelle représentation au niveau logique. Par exemple: la référence à la table de
niveau logique qui est créée à partir de l'entité de niveau conceptuel.
Concrètement, sont stockés:
 L'identifiant de l'élément du référentiel de VP de niveau logique.
 Le nom de l'élément du référentiel de VP de niveau logique.
o VPElementMLD - sert à faire le lien entre un élément de niveau logique et son
éventuelle représentation (ou source) au niveau conceptuel. Par exemple: la
référence à l'entité de niveau conceptuel qui a été source de création de la table de
niveau logique.
Concrètement, sont stockés:
 L'identifiant de l'élément du référentiel de VP de niveau conceptuel.
 Le nom de l'élément du référentiel de VP de niveau conceptuel.

Les dépendances
Page 12 sur 21
6.1.2.3
Les adaptateurs de correction du delta
4
2
3
Figure 7 - Adaptateur de correction du delta entre MLD existant et à obtenir
Page 13 sur 21
1
Le modèle de la Figure 7 représente les classes essentielles qui vont permettre de définir les
opérations à réaliser pour adapter le MLD existant dans le référentiel de VP. Nous pouvons observer:
Les classes






Adapter - singleton représentant l'ensemble des adaptations à faire au MLD de VP pour
corriger le delta avec le nouvel MCD, respectivement MLD.
AdapterElement - ancêtre de tous les adaptateurs spécifiques de delta.
Il est associé à une opération à effectuer.
AdapterTable - adaptateur spécialisé "Table".
Il est associé aux éléments en mémoire suivants:
o existing - L'éventuelle table existante.
o toObtain - La table à obtenir.
AdapterColumn - adaptateur spécialisé "Colonne".
Il est associé aux éléments en mémoire suivants:
o existing - L'éventuelle colonne existante.
o toObtain -La colonne à obtenir.
AdapterOperation - liste des opérations supportées:
o A - Ajouter un élément inexistant.
o S - Supprimer un élément obsolète.
o M - Modifier les propriétés d'un élément existant en prévenant les effets de bord sur
une éventuelle implantation physique ou autre contrainte.
o R - Remplacer les propriétés d'un élément existant sans tenir compte d'effets de
bord sur une éventuelle implantation physique ou autre contrainte.
AdapterNature - liste des natures d'éléments de modèle logique en mémoire susceptibles
d'être dotés d'un adaptateur:
o TABLE
o COLUMN
Les associations

L'association ① représente le paramétrage de transformation du delta.
Remarque importante: L'utilisateur ne peut choisir qu'une opération entre M-Modifier et RRemplacer.
Page 14 sur 21
Les adaptateurs seront créés par les méthodes createAdapterTable() ou createAdapterColumn(); ces
méthodes sont implantées au sein de la classe singleton Adapter.
Ces méthodes sont appelées par une méthode execute() ou autre de la classe singleton Adapter.
Cette méthode va parcourir tous les éléments à adapter (tables, colonnes…) de l'instance toObtain
du MLD.
Pour chaque élément, elle va chercher, via la structure représentée en Figure 6, s'il y a un élément
existant. S'il est trouvé un élément existant, elle va vérifier si les attributs des deux éléments sont
différents ou pas. Ensuite, un adaptateur est créé en respect des règles 1, 2 et 3 de la table de
décision ci-après.
Après avoir parcouru l'instance toObtain du MLD, la méthode execute() va parcourir les éléments de
l'instance existing.
Pour chaque élément, elle va contrôler sil est orphelin (non rattachée à un élément du MCD) ou pas.
Si l'élément est orphelin, un adaptateur est créé en respect de la règle 4 de la table de décision.
Création des adaptateurs
C1 existing
C2 toObtain
C3 Attr(existing) <> Attr(toObtain)
R1
O
O
O
A1
A2
A3
A4
A5
X
X
Créer adaptateur
Modifier ou Remplacer existant
Supprimer existant
Ajouter nouveau
Erreur
R2
O
O
N
R3
O
N
-
R4
N
O
-
X
X
R5
N
N
-
X
X
X
Naturellement, les adaptateurs ne seront créés que si l'utilisateur autorise l'opération pour la nature
de l'élément traité (association ①).
C'est aussi par le paramétrage de l'utilisateur que l'on saura dans le cas de la condition C3 de la table
de décision quelle est l'opération de l'action A2 à prendre en compte.
Lors de la création d'un adaptateur, l'association ④ est créée pour faciliter la reprise des
adaptateurs lors de leur exécution.
Page 15 sur 21
6.2 Découpage en activités
Nous avons affiné la production et l'utilisation des différentes instances des modèles MCD et MLD.
Page 16 sur 21
6.2.1
Activité - Contrôle de conformité du MCD
Page 17 sur 21
7 Algorithme principal - 3ème esquisse
7.1 Concept
7.1.1
Aspect dynamique
Par rapport à la première esquisse, nous avons réalisé le diagramme ci-dessous sur la base des
classes et méthodes planifiées
Figure 8 - Scénario nominal de l'algorithme principal de l'esquisse 3
Remarque: Nous avons limité le scénario ci-dessus, pour certains échanges, à quelques messages
explicatifs du concept. Par exemple, MCDLoader va envoyer le message createEntity() mais aussi
createAttribute(), createAssLink()… ou encore MCDToMLD va envoyer createTable() mais aussi
createColumn(), createPackage()…
7.1.2 Aspect statique
Le principe de la 2ème esquisse est maintenu [6.1.2].
Page 18 sur 21
7.2 Découpage en activités
Nous avons simplifié le découpage en activités pour bien montrer les flux et branchements
principaux.
Figure 9 - Diagrammes d'activités principales de l'esquisse 3
8 Références internes au projet
[RF-1a]
Spécifications d'organisation du référentiel
http://lgl.isnetne.ch/Sagex35793/Specifications/specificationsReferentiel.pdf
[RF-1]
Spécifications de réalisation de MCD
http://lgl.isnetne.ch/Sagex35793/Specifications/specificationsMCD.pdf
Page 19 sur 21
[RF-2]
Spécifications de transformation d'un MCD en un MLD-R
http://lgl.isnetne.ch/Sagex35793/Specifications/specificationsMCD-MLDR.pdf
[RF-3]
Spécifications de transformation incrémentale d'un MCD en un MLD-R
http://lgl.isnetne.ch/Sagex35793/Specifications/SpecificationsMCD-MLDRIteratif.pdf
Page 20 sur 21
Les contraintes de clés étrangères sont aussi considérés comme des éléments susceptibles d'être adaptés
Page 21 sur 21
Téléchargement