Designer - Portail du laboratoire de génie logiciel

Transcription

Designer - Portail du laboratoire de génie logiciel
Designer et l’ingénierie du logiciel
Couplage entre structure de données et modules de traitements
P.-A. Sunier, ISNet Neuchâtel avec le concours de C. Kohler et P. Ferrara
1
2
3
Introduction..................................................................................................................................................... 1
Rappel de la démarche méthodologique ......................................................................................................... 2
Entités et associations ..................................................................................................................................... 3
3.1
Concepts.................................................................................................................................................. 3
3.2
Associations ............................................................................................................................................ 4
3.2.1
Modèle conceptuel de données (MCD)........................................................................................... 4
3.2.2
Modèle logique de données (MLD) ................................................................................................ 5
3.2.3
Modèle logique de traitement (MLT).............................................................................................. 6
3.3
Associations non transférables et identifiantes........................................................................................ 8
3.3.1
Modèle conceptuel de données (MCD)).......................................................................................... 8
3.3.2
Modèle logique de données (MLD) ................................................................................................ 9
3.3.3
Modèle logique de traitement (MLT)............................................................................................ 10
3.4
Entités associatives................................................................................................................................ 11
3.4.1
Modèle conceptuel de données (MCD)......................................................................................... 11
3.4.2
Modèle logique de données (MLD) .............................................................................................. 12
3.4.3
Modèle logique de traitement (MLT)............................................................................................ 13
4 Liens utiles .................................................................................................................................................... 15
4.1
Plus d’informations ............................................................................................................................... 15
4.2
Mise en pratique.................................................................................................................................... 15
4.3
Références............................................................................................................................................. 15
1 Introduction
Dans le premier article consacré à Designer, Newsletter 2/2003 d’avril 2003, sous le titre Notions
élémentaires, nous avons présenté les concepts de Designer sur la base d’une approche d’ingénierie du
logiciel alliant méthodologie, normalisation et standardisation, qualité et réutilisation.
Dans cet article, nous traiterons de la modélisation conceptuelle des données et de l’incidence de la structure de
données sur la conception des modules de traitements. Pour pouvoir démontrer succinctement cette incidence,
nous ne décrirons pas l’entier de la démarche d’ingénierie qui a fait l’objet de notre premier article ; nous nous
limiterons à relater les phases qui nous semblent les plus significatives du thème traité. Nous avons mis en
évidence ces phases significatives dans un rappel de notre choix.
Dans cet article nous abordons les concepts suivants que nous traiterons dans de futurs articles :
• Associations récursives, arcs.
• Règles d’application des contraintes d’intégrité référentielle.
• LOV, List of values – Formulaires de valeurs de référence.
• Composant spécifique de création de valeurs inexistante dans une LOV.
• Auto-incrémentation des attributs de clés primaires des entités par les APIs de tables.
Article 2
- 1/15-
Août 2005
2 Rappel de la démarche méthodologique
Sur la base du cadre méthodologique retenu, nous avons défini une démarche méthodologique basée sur une
approche top/down. Nous proposons une méthodologie basée sur les différents niveaux d’abstraction de
modélisation des données; elle intègre les fonctionnalités de Designer à mettre en œuvre. Notre démarche
méthodologique est découpée en 9 phases.
1ère phase
Définition d’un projet
2ème phase
Modélisation conceptuelle des données (MCD)
3
ème
phase
Transformation des objets de niveau conceptuel en objets de niveau
logique
4ème phase
Enrichissement du modèle logique de données (MLD)
5ème phase
Génération et exécution des scripts SQL-DDL
6ème phase
Génération et exécution des scripts de création des APIs de tables
7
ème
phase
8ème phase
Test de l’intégrité de la structure de données
Modélisation logique des traitements (MLT)
Génération et exécution des scripts de création de modules
9
ème
phase
Test de l’application
Comme déjà indiqué en introduction, les 3 phases mises en évidence sont celles qui sont traitées pour démontrer
le couplage existant entre structure de données et modules de traitements.
Pour plus de détails relatifs à notre choix méthodologique, le lecteur se référera à notre premier article :
Notions élémentaires.
Article 2
- 2/15-
Août 2005
3 Entités et associations
3.1
Concepts
Entity Relationship Diagrammer nous permet de créer nos modèles conceptuels de données. Les
modèles sont conçus selon un formalisme propriétaire sur la base du concept d’entités qui représentent
les « types ou classes d’objets » du système à modéliser et d’associations qui représentent les « types
ou classes de liens » pouvant exister entre les entités.
Les entités peuvent être spécialisées ou
généralisées sous forme de Sub-Type et
Super-Type.
Les associations entre entités sont binaires ;
les cardinalités sont représentées
graphiquement.
Une association peut être définie comme non
transférable ; la non transférabilité est
représentée par un losange sur l’association.
Une association peut être définie comme
identifiante ; une association identifiante
permet de définir une entité dépendante. Une
occurrence d’entité dépendante ne peut avoir
d’existence que comme enfant de l’entité
parent de l’association. L’identification est
représentée par un trait perpendiculaire à
l’association. En conception, une association
identifiante est toujours non-transférable.
MCD /Eléments de notation
Oracle utilise la notion d’arc pour modéliser une restriction d’associations ; l’arc est paramétrable et permet,
entre autres, de représenter une exclusion mutuelle ou une contrainte de Ou-exclusif.
Les liens entre occurrences d’entité identique ou de même nature sont modélisables par une association
récursive.
Les associations ne sont pas nommées en tant que telles, et n’existent pas comme objets du référentiel ; elles
existent en tant que propriété des entités qui participent à l’association et sont identifiées par le nom donné à
chacun des rôles de l’association.
Article 2
- 3/15-
Août 2005
3.2
Associations
3.2.1 Modèle conceptuel de données (MCD)
L’exemple ci-dessus montre l’association existant entre un produit et la catégorie à laquelle il appartient ; nous
pouvons observer :
• les rôles joués par les 2 entités participant à l’association ;
• la cardinalité minimale de 0, représentée par un trait tillé, pour le rôle ComposeeDe de l’entité
CATEGORIE ;
• la cardinalité maximale de n, représentée par une patte d’oie sur le rôle opposé, pour le rôle
ComposeeDe de l’entité CATEGORIE ;
• la cardinalité minimale de 1, représentée par un trait plein, pour le rôle AppartientA de l’entité
PRODUIT ;
• la cardinalité maximale de 1, représentée par une absence de patte d’oie sur le rôle opposé, pour le rôle
AppartientA de l’entité PRODUIT.
Les cardinalités nous indiquent que :
• une catégorie peut exister sans être dotée de produits ;
• pour exister un produit doit impérativement être associé à une catégorie mais une seule.
Article 2
- 4/15-
Août 2005
3.2.2 Modèle logique de données (MLD)
Lors de la transformation de notre modèle conceptuel de données en objets de niveau logique,
Database Design Transformer a créé les 2 tables CATEGORIES et PRODUITS ; l’association a été
transformée en attribut et contraintes sur la table PRODUITS:
•
•
•
une clé étrangère CAT_NUMERO ;
une contrainte de clé étrangère PROD_CAT_FK
un index PROD_CAT_FK_I
Après inclusion de nos tables et de notre « association ou relation» dans un diagramme, Design Editor
nous montre la contrainte de clé étrangère sous forme d’un lien entre les 2 tables.
Ce lien est montré sous forme d’un trait plein lorsqu’une valeur de clé étrangère est obligatoire et sous
forme d’un trait tillé lorsqu’une valeur n’est pas obligatoirement requise ; cette propriété de la clé étrangère est
déterminée par la cardinalité minimale du modèle conceptuel créé précédemment.
Remarque
Contrairement à la représentation conceptuelle avec Entity Relationship Diagrammer :
• le trait perpendiculaire ne signifie pas un lien identifiant mais une application stricte de l’intégrité
référentielle;
• la patte d’oie ne signifie pas plusieurs liens mais indique le côté enfant de la relation entre les 2 tables.
Article 2
- 5/15-
Août 2005
3.2.3 Modèle logique de traitement (MLT)
Sur la base d’une relation entre 2 tables, il est possible de concevoir des modules de traitements de nature
différente ; dans ce chapitre, nous en présenterons deux qui nous semblent significatifs de la multitude de
modules de traitements concevables à partir d’une structure de données initiale.
3.2.3.1 Table de référence
Le module ci-contre est
constitué d’un composant qui
permet de manipuler la table
PRODUITS, dite, table de base;
par manipulation, nous
entendons lui appliquer les
opérations : Insert, Update, et
Delete.
La connaissance de la valeur de
la clé primaire de la catégorie
n’étant pas accessible à
l’utilisateur final, le composant
doit lui permettre de référer une
catégorie à associer à un produit
par l’intermédiaire d’une liste
des catégories existantes ; pour
ce faire, nous rajoutons la table
CATEGORIES dans le
Module avec table de référence
composant en tant que table de
référence. Naturellement, la table
de référence ne peut pas être manipulée par le composant ; elle ne peut être que lue ou consultée.
Remarque
Le lien PROD_CAT_FK entre la table de base PRODUITS et la table de référence CATEGORIES n’est pas
créé en modélisation des traitements mais, et c’est essentiel, il est repris, à partir de la contrainte de clé étrangère,
du modèle logique de données.
Le formulaire ci-contre correspond à notre
module, constitué d’un composant qui
permet, à l’utilisateur, de manipuler un
produit et de référencer la catégorie à
laquelle il appartient.
Ce formulaire permet à l’utilisateur de
changer la catégorie à laquelle appartient un
produit ce qui n’est pas possible avec le
formulaire maître et détails que nous
présenterons plus loin.
Le lien hypertexte LOV, en regard du code
de la catégorie, correspond à l’appel d’un
formulaire spécifique listant les catégories
disponibles. LOV est l’acronyme de List of
values.
Formulaire avec table de référence
Article 2
- 6/15-
Août 2005
3.2.3.2 Maître et détails
Le module ci-contre est constitué de deux composants.
Le composant maître placé en haut du module permet
de manipuler la table de base CATEGORIES.
Le composant de détails placé en bas du module permet
de manipuler la table de base PRODUITS.
Les deux composants sont reliés par l’intermédiaire du
lien PROD_CAT_FK existant entre leurs tables de
base.
Contrairement au module précédent utilisant la table
CATEGORIES en tant que table de référence, ce
module permet de manipuler autant la table
CATEGORIES dans le composant maître que la table
PRODUITS dans le composant de détails.
Remarque
Le lien PROD_CAT_FK entre les deux tables de base
PRODUITS et CATEGORIES n’est pas créé en
modélisation des traitements mais, et c’est essentiel, il
est repris du modèle logique de données.
Module maître et détails
L’extrait de formulaire ci-contre correspond à notre
module, constitué d’un composant maître et d’un
composant de détails. Lorsque l’utilisateur a
sélectionné une catégorie, la liste des produits qui
lui sont associés est affichée et l’utilisateur peut
manipuler les produits dépendants de la catégorie
sélectionnée.
L’ajout d’un nouveau produit se fait toujours pour
la catégorie sélectionnée.
Ce formulaire permet à l’utilisateur un parcours
aisé des catégories et de leurs produits.
Formulaire maître et détails
Article 2
- 7/15-
Août 2005
3.3
Associations non transférables et identifiantes
3.3.1 Modèle conceptuel de données (MCD))
L’exemple ci-dessus illustre les concepts de non transférabilités d’association et d’association identifiante ; nous
pouvons observer :
• la non transférabilité de l’association entre CLIENT et COMMANDE, représentée par un losange; cette non
transférabilité spécifie que lorsqu’une commande est créée et attribuée à un client, elle ne peut plus être
attribuée ou transférée à un autre client. Ceci implique que si un utilisateur se trompe de client lors de
l’établissement d’une commande, il devra détruire la commande erronée et en récréer une nouvelle en lui
attribuant le client correct.
• l’association identifiante entre COMMANDE et LIGNECOMMANDE, représentée par un trait
perpendiculaire à l’association ; l’association identifiante spécifie que les lignes de commandes seront
identifiées par l’identifiant de la commande et par un identifiant de ligne tout comme un enfant est identifié
par le nom de famille des parents et son prénom.
Remarques
Lorsqu’une association est identifiante, nous imposons de la rendre non transférable pour respecter la règle de
stabilité de clé primaire.
Nous avons choisi de nommer NUMERO l’attribut qui servira de clé primaire des entités indépendantes, entités
qui ont une existence propre, et NUMERODEP l’attribut qui servira de complément de clé primaire des entités
dépendantes ; les occurrences d’entités dépendantes n’existent que sous forme d’enfants de l’occurrence de
l’entité parent.
Nous avons mis une cardinalité minimale de 0, trait tillé, sur le rôle ComposéeDe de l’entité Commande.
Idéalement, nous devrions mettre une cardinalité minimale de 1, trait plein ; en effet, une commande n’a de sens
que si elle est composée d’au moins une ligne référant un produit ; nous ne pouvons le faire, car nous devrions
gérer une transaction insérant simultanément une commande et une ligne de commande ce que l’environnement
Oracle ne permet pas de mettre en œuvre.
Article 2
- 8/15-
Août 2005
3.3.2 Modèle logique de données (MLD)
Par rapport au modèle logique de données (MLD) décrit au chapitre Associations, nous pouvons observer
l’enrichissement suivant :
•
les contraintes de non transférabilité sont représentées graphiquement, comme pour le modèle
conceptuel de données, par un losange sur la relation ou contrainte de clé étrangère ;
• la clé primaire de la table LIGNESCOMMANDES est bien construite à partir de la concaténation de la
clé étrangère CDE_NUMERO, clé primaire de la table parent COMMANDES, et de l’attribut
NUMERODEP, auto-séquencé pour chaque commande.
Remarques
Les attributs de clés primaires de tables sont mis en évidence graphiquement avec le symbole #.
Comme déjà indiqué précédemment, et contrairement à la représentation conceptuelle avec Entity Relationship
Diagrammer le trait perpendiculaire ne signifie pas un lien identifiant mais une application stricte de l’intégrité
référentielle;
Article 2
- 9/15-
Août 2005
3.3.3 Modèle logique de traitement (MLT)
Le module ci-dessus, combine les concepts de tables de référence et de maître et détails décrits au chapitre
Associations et conforte la notion de multitude de modules de traitement concevables à partir d’une structure de
données initiale.
Remarque
Les associations non transférables et identifiantes n’ont pas d’incidence directe sur la conception des modules de
traitement.
L’extrait de formulaire ci-contre correspond à notre module ;
dans la partie supérieure, composant maître, nous voyons la
commande et la référence au client, dans la partie inférieure,
composant de détails, nous voyons les lignes de commandes avec
la référence des produits et la quantité commandée.
Remarque
Lors de la conception du module, la contrainte de non
transférabilité de la commande et des lignes de commandes sera
prise en charge par Design Editor. Ci-contre, nous pouvons
observer que la référence du client ne peut plus être éditée en
modification.
Article 2
- 10/15-
Août 2005
3.4
Entités associatives
3.4.1 Modèle conceptuel de données (MCD)
En modélisation conceptuelle des données, Entity relationship Diagrammer permet de créer des
associations de degré n:n ; toutefois, nous bannissons ces associations car il n’est pas possible de les
doter d’attributs ou de les faire participer à d’autres associations.
Pour remplacer les associations de degré n:n, nous utilisons des entités associatives ; les entités associatives
sont des entités dépendantes, identifiées par deux parents ou plus. Une entité associative peut être dotée
d’attributs et être, à son tour, associée à toute autre entité.
Dans l’exemple ci-dessus, l’entité associative DISTRIBUE représente le lien n:n qui existe entre un fournisseur
qui peut distribuer plusieurs catégories de produits et une catégorie qui peut être distribuée par plusieurs
fournisseurs. Par souci de concision, nous n’avons pas mis d’attributs à l’entité associative et ne l’avons non plus
associée à une autre entité.
Article 2
- 11/15-
Août 2005
3.4.2 Modèle logique de données (MLD)
Par rapport aux modèles logiques de données décrits aux chapitres précédents, nous pouvons observer la clé
primaire de la table associative DISTRIBUENT formée par la concaténation des clés étrangères des deux tables
parents CATEGORIES et FOURNISSEURS.
Remarque
Si nous avions modélisé notre entité associative sous forme d’une association n:n, l’outil de transformation
Database Design Transformer nous aurait créé une table associative comme ci-dessus, identifiée par les clés
étrangères des tables parents.
Article 2
- 12/15-
Août 2005
3.4.3 Modèle logique de traitement (MLT)
Tout comme une relation entre 2 tables peut déboucher sur la conception de modules de nature différente, une
table associée peut déboucher sur une multitude de modules de traitement; par analogie aux chapitres précédents,
nous présenterons un module sous forme de maître et détails et un module utilisant uniquement le concept de
table de référence.
3.4.3.1 Maître et détails
Le module ci-contre utilise la table
FOURNISSEURS pour le composant
maître et la table CATEGORIES
comme table de référence du
composant de détails qui manipule la
table associative DISTRIBUENT.
Mais, les rôles entre les
FOURNISSEURS et CATEGORIES
peuvent être inversés selon les besoins
des utilisateurs.
Module table associative « maître et détails »
Article 2
- 13/15-
Août 2005
3.4.3.2 Double tables de référence
Contrairement au module précédent,
le module ci-contre ne comporte
qu’un seul composant. Ce composant
manipule la table associative
DISTRIBUENT et réfère aux deux
tables parents FOURNISSEURS et
CATEGORIES.
Module table associative "Double référence"
Article 2
- 14/15-
Août 2005
4 Liens utiles
4.1
Plus d’informations
Si vous souhaitez plus d’informations, notre site consacré à Designer est à votre disposition. Le site Designer
contient plusieurs entrées ; nous n’avons pas encore publié de documents spécifiques à la version 9i, nos
documents les plus récents sont consacrés à la version 6i.
Le sous-site « Les bases » de la version 6i de Designer , et plus particulièrement les cahiers « 02 –
Enrichissement » et « 03 – Approfondissement des associations » traite des notion élémentaires présentées
succinctement dans cet article.
4.2
Mise en pratique
Les notions que nous avons présentées dans cet article peuvent être mises en œuvre en suivant la partie pratique
des cahier « 02 – Enrichissement » et « 03 – Approfondissement des associations » de notre sous-site « Les
bases » de la version 6i de Designer.
4.3
Références
L’auteur
Pierre-André Sunier
[email protected]
HES-SO
Haute Ecole Spécialisée de Suisse occidentale
www.hes-so.ch
HEG-NE
Haute Ecole de Gestion de Neuchâtel
www.hegne.ch
ISNet
Centre de compétences
http://www.is-net.ch/
Systèmes d’information et informatique de
gestion
Génie logiciel
Centres d’intérêt du laboratoire de génie logiciel
sous la rubrique « Génie logiciel »
http://doc.esnig.ch/
Site Designer
Notre site de formation consacré à Designer et
ses sous-sites
http://zuse.esnig.cifom.ch/analyse/inde
x_designer.htm
Projet ISNet-14
Projet de recherche appliquée ISNet-14
http://zuse.esnig.cifom.ch/analyse/isnet
Atelier de génie logiciel et génération Web 14/index.htm
1er article (*)
Notions élémentaires
http://www.soug.ch/objects/pdf/Design
er_2_2003.pdf
http://zuse.esnig.cifom.ch/analyse/publi
cations/soug/designer/Article001.pdf
(*) Les anciens articles sont accessibles en Intranet sur le site du SOUG, www.soug.ch, ou en Internet sur le site
de la HEG-NE, http://zuse.esnig.cifom.ch/analyse/publications/index.htm
Article 2
- 15/15-
Août 2005

Documents pareils