12 Cas d'utilisation détaillés et processus d'élaboration du modèle conceptuel de données
Analyse : Quoi développer ?
– Spécification indépendante de la technologie
Cas d'utilisation détaillés
Modèle conceptuel de données
– concepts du domaine
d ’application
12.1 Cas d'utilisation détaillés
AutoriserUtilisateur
Commis au prêt
GérerMembres
ProduireRapportRetards EnregistrerRetours EnregistrerPrêts AutoriserCommis
GérerPrêts
<<inclut>>
<<inclut>>
<<inclut>>
<<inclut>>
<<inclut>>
Membre
AutoriserMembre
ConsulterCollections
ConsulterPrêts
<<inclut>>
Consulter
<<inclut>>
<<inclut>>
ProduireStatistiquesPrêts
ProduireStatistiquesCollections ProduireRapportActivités
<<inclut>>
<<inclut>>
SystèmeAcquisition Bibliothécaire
AutoriserBibliothécaire
<<inclut>>
AjouterCatégorieDocumentaire InclureAcquisitions
<<inclut>>
<<étend>>
GererSystème Administrateur
Séquence d ’interaction GérerPrêts
Commis au prêt Système
1. Le commis invoque l'application de gestion des prêts.
2. Le système déclenche le cas AutoriserCommis
3. Si le commis est autorisé à poursuivre, un menu incluant les choix suivants est affiché : EnregistrerPrêt, EnregistrerRetour, ConsulterPrêt, GérerMembres, ProduireRapportRetards ou Quitter
4. Le commis effectue une sélection dans le menu.
5. Le cas choisi est déclenché. Ensuite, retour en 3.
Si le commis choisit de quitter, l'application est interrompue.
Exceptions :
Ligne 3 : si le commis n'est pas autorisé à poursuivre, l'application est interrompue.
Spécification détaillée du cas
d'utilisation GérerPrêts
Séquence normale d'interaction de
GérerPrêts
Commis au prêt Système
1. Le commis invoque l'application de gestion des prêts.
2. Le système déclenche le cas AutoriserCommis
3. Si le commis est autorisé à poursuivre, un menu incluant les choix suivants est
affiché : EnregistrerPrêt,
EnregistrerRetour, ConsulterPrêt, GérerMembres,
ProduireRapportRetards ou Quitter 4. Le commis effectue une sélection dans le
menu.
5. Le cas choisi est déclenché. Ensuite, retour en 3. Si le commis choisit de quitter, l'application est interrompue.
Spécification détaillée du cas
d'utilisation EnregistrerPrêts
27/02/22 © Robert Godin. Tous droits réservés 7
Séquence d'interaction (scénario) normale
Commis au prêt Système
1. Le commis invoque l'écran d'enregistrement du prêt
2. Le système demande la saisie de l'identificateur de l'utilisateur 3. Le commis saisit l'identificateur
de l'utilisateur à l'aide de la
carte de membre ou
manuellement
4. Le système affiche le nombre de prêts en cours et demande de saisir l'identificateur de l'exemplaire.
5. Le commis entre l'identificateur de l'exemplaire à l'aide du
lecteur optique ou
manuellement
6. Le système enregistre le prêt,
Diagramme de séquence système de EnregistrerPrêts
: Commis au prêt :Système
1: créerNouveauPrêt() 2: demanderIdUtilisateur
3: entrer(idUtilisateur)
4: affiche nbPrêts, demanderIdExemplaire
5: entrer(idExemplaire) 6: messageAcquiescement
12.1.1 Paquetages (« Packages »)
PackageCasServicePrêt
PackageCasAdministration
PackageCasAutorisation
PackageCasServicePrêt
Membre
Commis au prêt
Consulter
ConsulterCollections
<<inclut>>
AutoriserMembre (from PackageCasAutorisation)
<<inclut>>
ConsulterPrêts
<<inclut>>
AutoriserCommis (from PackageCasAutorisation)
EnregistrerPrêts
EnregistrerRetours GérerPrêts
<<inclut>>
<<inclut>>
<<inclut>>
<<inclut>>
<<inclut>>
<<inclut>>
PackageCasAdministration
ProduireStatistiquesCollections
ProduireStatistiquesPrêts ProduireRapportActivités
<<inclut>>
<<inclut>>
Système Acquisition
AutoriserBibliothécaire (from PackageCasAutorisation)
<<inclut>>
Bibliothécaire
InclureNouvellesAcquisitions
<<inclut>>
Administrateur Système
GérerSystème
PackageCasAutorisation
AutoriserBibliothécaire AutoriserCommis AutoriserMembre
AutoriserUtilisateur
12.2Concepts avancés des
diagrammes de classes UML
12.2.1 Associations n-aires
Athlète nom : String
Epreuve nom : String
JeuxOlympiques
année : Integer ville : String
*
* *
unAthlète:Athlète nom : String = Myriam Bédard
uneEpreuve:Epreuve nom : String = Biathlon 7,5 km
unJO:JeuxOlpympiques année : Integer = 1994 ville : String = Lillehamer
Lien ternaire
Association
ternaire
Exemple de données
a1:Athlète nom : String = Myriam Bédard
e2:Epreuve nom : String = Biathlon 7,5 km
j1:JeuxOlpympiques année : Integer = 1998 ville : String = Nagano
e1:Epreuve nom : String = Patin 5000m
j2:JeuxOlpympiques année : Integer = 2002 ville : String = Salt Lake City
a2:Athlète nom : String = Annie Perreault
Attention !
Modèle non équivalent :
Athlète nom : String
Epreuve nom : String
JeuxOlpympiques année : Integer ville : String
*
*
Compétitionne *
* Participe
*
* Est admise
Explication de la non équivalence
Myriam Bédard figure au “ Patin 5000m
” à Nagano ?
a 1 : A t h l è t en o m : S t r in g = M y r ia m B é d a r d
e 2 : E p r e u v e
n o m : S t r in g = B ia t h l o n 7 , 5 k m
j 1 : J e u x O l p y m p i q u e s a n n é e : I n t e g e r = 1 9 9 8 v ill e : S t r in g = N a g a n o
e 1 : E p r e u v e
n o m : S t r in g = P a t in 5 0 0 0 m
j 2 : J e u x O l p y m p i q u e s a n n é e : I n t e g e r = 2 0 0 2 v ill e : S t r in g = S a lt L a k e C i t y
a 2 : A t h l è t e
n o m : S t r in g = A n n i e P e r r e a u lt
F ig u r e
F i g u r e
F i g u r e
P a r t ic ip e P a r t ic ip e
E s t a d m is e P a r t ic ip e
E s t a d m is e
E s t a d m is e
Utilisation incorrecte d ’une association ternaire
Livre
ISBN : String titre : String
annéeParution : Integer
Editeur
nomEditeur : String ville : String
Auteur
nom : String prénom : String
*
1 *
Exemple de multiplicité maximale 1
Politicien nom : String
Parti nom : String
Election année : Integer
*
* 0..1
Politicien nom : String
Parti nom : String
Election année : Integer
1..*
* CandidatDéputé CandidatDéputé
1
Représente 1..*
12.2.1.1 Réification d ’une association n-aire
Athlète nom : String
Epreuve nom : String
JeuxOlpympiques année : Integer ville : String Figuration
* 1
1
* *
1
Nécessaire si les
associations n-aires ne
sont pas supportées !
12.2.2OCL (Object Constraint Langage)
Invariants de classe
Pré et post-conditions sur les opérations
Conditions de déclenchement (Guards)
Langage de navigation
Contraintes sur les opérations
12.2.2.1 Contexte d'une contrainte
L'année de parution d'un livre est supérieure à 0
Livre
self. annéeParution > 0 l : Livre
l. annéeParution > 0
12.2.2.2 Spécification d'une propriété d'un objet
Livre
self. annéeParution > 0
Cadre
self.salaire() > 50000
opération
Spécification d ’une propriété (suite)
Utilisateur
self.prêt -> size <= 1000 Catégorie
self.enfant->size < 1000
retourne une collection !
nom de classe (première lettre en
minuscule) pour naviguer association
12.2.2.3 Expression de chemin
Prêt datePrêt : Date
1
**
1
Exemplaire {UNIQUE: idExemplaire}
idExemplaire : String dateAchat : Date
statut : enum(prêté, disponible, retiré) 1 1..*
Livre {UNIQUE: ISBN}
ISBN : String titre : String
annéeParution : TypeDonnéesAge 1 1..*
1 * Catégorie {UNIQUE: code}
code : String descripteur : String
1 *
Prêt
self.exemplaire.livre.catégorie.descripteur <> 'Référence'
12.2.2.4 Types et expressions OCL
Opérations pour types de base
– ex: +, -, *, /,… pour Integer
Opérations pour Collections
– Collection, Set, Bag et Sequence
– -> pour opération de collection
Exemples d ’opérations de collection
Utilisateur
self.prêt->select(p|p.datePrêt>'1/1/2000')
Membre
self.prêt->forAll(p1, p2 |p1 <> p2 implies p1.exemplaire <> p2.exemplaire)
Employé.allInstances->exists(e|e.catégorieEmployé = bibliothécaire) Livre
(self.ISBN = '0-13-123829-9') implies (self.Auteur->at(2).nom = 'Premerlani')
12.3 Processus d'élaboration du modèle conceptuel de données
Modèle conceptuel du domaine
Modèle conceptuel des données
persistantes (ou modèle conceptuel des données)
– stéréotype « entité »
– valeur étiquetée {persistent}
Modèle conceptuel de la base de données
– données persistantes dans la BD
Processus d ’élaboration du modèle conceptuel
Clé : comprendre le domaine d ’application
Intrants
– cas d ’utilisation détaillés
– ...
Un processus simple
– 1. Déterminer les classes et leurs attributs
– 2. Déterminer les associations
– 3. Chercher les généralisations
– 4. Ajouter les types et les contraintes
manquantes
12.3.1 Identifier les classes et leurs attributs
Candidats
– groupes nominaux
Exemple : GérérPrêts
Description: Ce cas d'utilisation est déclenché par le commis au prêt suite
à une requête d'un membre ou d'un employé . Il lui permet d'enregistrer un
prêt ou un retour , de consulter les prêts , de gérer les données d'identification
des membres, i.e. l' identificateur d'utilisateur de sa carte de membre , le mot de
passe du membre , son nom , prénom et le numéro de téléphone de sa résidence . Il
permet aussi de produire un rapport des retards . Lors d'un prêt ou d'un
retour , l' identificateur d'utilisateur et l' identificateur de l'exemplaire peuvent être
saisis en utilisant un lecteur optique ou manuellement.
12.3.1.1 Identification des concepts
significatifs du domaine d ’application du système
Non pertinent au domaine
–
cas d ’utilisation
Pertinent
–
prêt, retour, retard, membre, exemplaire, ...
Description: Ce cas d'utilisation est déclenché par le commis au prêt suite
à une requête d'un membre ou d'un employé . Il lui permet d'enregistrer un
prêt ou un retour , de consulter les prêts , de gérer les données d'identification
des membres, i.e. l' identificateur d'utilisateur de sa carte de membre , le mot de
passe du membre , son nom , prénom et le numéro de téléphone de sa résidence . Il
permet aussi de produire un rapport des retards . Lors d'un prêt ou d'un
retour , l' identificateur d'utilisateur et l' identificateur de l'exemplaire peuvent être
saisis en utilisant un lecteur optique ou manuellement.
12.3.1.2 Persistance du concept
Modèle conceptuel des données persistantes
– nécessaires aux traitements
– persistantes
Acteurs ?
Documents externes ?
Unités périphériques ?
12.3.1.3 Classe ou attribut ?
Attribut : décision de conception ?
– pas d ’attributs dans les graphes conceptuels !
Critères pour attributs
– caractéristique propre aux objets de la classe
– pas d ’identité propre
– valeur (immuable)
pas une référence
– type complexe ?
Membre idUtilisateur
motPasse nom
prénom
téléphoneRésidence
12.3.1.3.1 Application de la théorie de la normalisation
Classe d ’appartenance d ’un attribut ?
Table = attributs de classe + OID
(OIDPrêt, idUtilisateur, motPasse, nom, prénom, téléphoneRésidence)
–
idUtilisateur motPasse, nom, prénom, téléphoneRésidence
–
OIDPrêt idUtilisateur
–
pas en 3FN
(OIDPrêt, nom, prénom, téléphoneRésidence)
–
est en 3FN mais...
12.3.1.3.2 Conversion entre attribut et classe
Membre TéléphoneRésidence
numéro 1
1 1
1
Membre idUtilisateur motPasse nom
prénom
téléphoneRésidence
m 1 : M e m b r e
t é lé p h o n e R é s id e n c e : S t r i n g = ( 5 5 5 ) 5 5 5 - 5 5 5 5
m 2 : M e m b r e
t é lé p h o n e R é s id e n c e : S t r i n g = ( 5 5 5 ) 5 5 5 - 5 5 5 5
m 1 : M e m b r e
m 2 : M e m b r e t 2 : T é l é p h o n e R é s i d e n c e
n u m é r o : S t r in g = ( 5 5 5 ) 5 5 5 - 5 5 5 5 t 1 : T é l é p h o n e R é s i d e n c e n u m é r o : S t r in g = ( 5 5 5 ) 5 5 5 - 5 5 5 5
~ composition
Partage du même téléphone ?
Membre TéléphoneRésidence
numéro
1..* 1 1
1..*
m 1 : M e m b r e
m 2 : M e m b r e
t 1 : T é l é p h o n e R é s i d e n c e n u m é r o : S t r in g = ( 5 5 5 ) 5 5 5 - 5 5 5 5
12.3.1.3.3 Types de données complexes
Membre adresse : String
Membre
adresse : typeDonnéesAdresse
typeDonnéesAdresse numéroCivique
numéroAppartement nomRue
nomVille nomProvince nomPays codePostal
<<datatype>>
Expliciter la structure ?
~ composition
Variante
Membre numéroCivique
numéroAppartement nomRue
nomVille nomProvince nomPays codePostal Membre
adresse : typeDonnéesAdresse
typeDonnéesAdresse numéroCivique
numéroAppartement nomRue
nomVille nomProvince nomPays codePostal
<<datatype>>
Partage de la même Adresse
Membre
Adresse numéroCivique
numéroAppartement nomRue
nomVille
nomProvince nomPays codePostal 1
1..*
1..* 1
Modélisation fine des adresses pour éviter toute redondance ?
Membre
Adresse numéroCivique numéroAppartement
1 1..*
1 1..*
Rue nomRue codePostal 1
1..* 1 1..*
Ville nomVille 1
1..*
Pays nomPays Province
nomProvince
1..* 1 1..* 1
1..* 1 1..* 1 1..* 1
12.3.1.3.4 Représentation des types de données énumérés
Type du statut de l ’Exemplaire
– enum(prêté, disponible, retiré)
– classe stéréotypée « datatype »
– classe stéréotypée « extensible
datatype »
12.3.1.4 Attribut de classe
Partagé par tous les objets
– ~variable globale à la classe
Membre
téléphoneRésidence
$ nbMaxPrêts = 5
$ duréeMaxPrêts = 7
12.3.1.4.1 Classe pour un seul objet ?
Bibliothèque nom : String = LeRat
téléphone : String = (999)999-9999
...
12.3.1.5 Première ébauche de modèle pour SyLeRat
Membre téléphoneRésidence nbMaxPrêts = 5 duréeMaxPrêts = 7
Retour Employé
nom prénom codeMatricule catégorieEmployé
Catégorie code descripteur Auteur
nom prénom
Editeur nomEditeur ville
Livre ISBN titre
annéeParution
Exemplaire idExemplaire dateAchat statut Retard
Utilisateur idUtilisateur motPasse nom prénom
Prêt datePrêt
Membre téléphoneRésidence nbMaxPrêts = 5 duréeMaxPrêts = 7
Retour dateRetour Employé
nom prénom codeMatricule catégorieEmployé
Catégorie code descripteur Auteur
nom prénom
Editeur nomEditeur ville
Livre ISBN titre
annéeParution
Exemplaire idExemplaire dateAchat statut Retard
Utilisateur idUtilisateur motPasse nom prénom
Prêt datePrêt
12.3.1.6 Eviter les concepts dérivables
Pour dériver
durée moyenne
Clarté conceptuelle et linguistique
12.3.1.7 SYNONYMIE ET POLYSÉMIE
12.3.1.8 NOMS
REPRÉSENTATIFS
– répertoire des concepts (dictionnaire
de données, glossaire)
12.3.2 Identification des associations
Lors d'un prêt ou d'un retour, l'identificateur d'utilisateur et l'identificateur de l'exemplaire peuvent être saisis ...
Utilisateur idUtilisateur motPasse nom
prénom 1
emprunteur Prêt
datePrêt
*
1 *
Éviter les associations dérivables
Exemplaire idExemplaire dateAchat statut Utilisateur
idUtilisateur motPasse nom
prénom
Prêt datePrêt
1 *
emprunteur
1 * ** 11
Retour dateRetour
1
*
1
* * 1
* 1
0..1 11
0..1
Associations dérivables à éviter
Ebauche des associations pour SyLeRat
Employé nom
prénom codeMatricule catégorieEmployé
Membre téléphoneRésidence nbMaxPrêts = 5 duréeMaxPrêts = 7
Catégorie code descripteur
0..1 n parent0..1
enfant n Auteur
nom prénom
Livre ISBN titre
annéeParution
1 n 1
n
1..n 1..n
1..n 1..n
Editeur nomEditeur ville
1..n
1
1..n
1
Utilisateur idUtilisateur motPasse nom prénom
Exemplaire idExemplaire dateAchat statut Retour
dateRetour Prêt datePrêt
1 n
emprunteur
1 n
n
1 n
1 0..1
1 0..1
1
12.3.2.1 Classe, association ou classe associative
Prêt datePrêt Utilisateur
idUtilisateur motPasse nom prénom
Exemplaire idExemplaire dateAchat statut
*
0..1 *
0..1
PrêtEnCours datePrêt
PrêtArchivé datePrêt dateRetour Utilisateur
idUtilisateur motPasse nom
prénom
* 1
* 1
Exemplaire idExemplaire dateAchat statut
* 11
*
* 0..1
0..1
*
Utilisateur idUtilisateur motPasse nom prénom
Retour dateRetour
Prêt datePrêt
1 *
emprunteur
1 *
* 0..1
1 0..1
1 *
11
Exemplaire idExemplaire dateAchat statut
12.3.2.2 Spécification des qualificateurs
Membre
Adresse numéroCivique numéroAppartement
1 1..*
1 1..*
Rue nomRue codePostal 1
1..* 1 1..*
Ville nomVille 1
1..*
Pays nomPays Province
nomProvince
1..* 1 1..* 1
1..* 1 1..* 1 1..* 1
Membre
Adresse 1 1..*
1 1..*
Rue codePostal numéroCivique
numéroAppartement 1 0..1
1 numéroCivique numéroAppartement 0..1
Ville nomRue
0..1 11
nomRue 0..1
Province 0..1
nomVille
0..1 11
nomVille Pays
nomPays 0..1
nomProvince
0..1 11
nomProvince
12.3.2.3 Degré approprié d ’association
12.3.2.4 Éviter les clés étrangères
Utilisateur idUtilisateur motPasse nom
prénom
Prêt
idUtilisateur
datePrêt
12.3.3 Identification des généralisations
Principe de génie logiciel
– isoler chaque chose à sa place
Mettre en facteur propriétés communes
– attention synonymie/polysémie
– généralisation ou délégation ?
« est un » ou « fait partie de »
Méthode systématique: treillis de Galois
(analyse formelle de concepts)
Ajout d ’un lien de généralisation entre classes
Utilisateur idUtilisateur motPasse nom
prénom
Employé nom
prénom
codeMatricule catégorieEmployé
Membre
téléphoneRésidence
$ nbMaxPrêts = 5
$ duréeMaxPrêts = 7
Utilisateur idUtilisateur motPasse nom
prénom catégorieUtilisateur
{disjointe, complète}
Employé codeMatricule catégorieEmployé
Membre
téléphoneRésidence nbMaxPrêts = 5
duréeMaxPrêts = 7
Découverte d ’une nouvelle classe de généralisation
Auteur nom prénom
Utilisateur idUtilisateur motPasse nom
prénom
Auteur
Personne nom
prénom
Utilisateur idUtilisateur motPasse
{non disjointe, complète}
Autre exemple
PrêtEnCours datePrêt
PrêtArchivé datePrêt dateRetour Utilisateur
idUtilisateur motPasse nom prénom
* 1
* 1
Exemplaire idExemplaire dateAchat statut
* 11
*
* 0..1
0..1
*
Utilisateur {UNIQUE :idUtilisateur}
idUtilisateur
motPasse 11 **
Prêt datePrêt
{disjointe, complète}
PrêtArchivé dateRetour
PrêtEnCours
*
11
*
Exemplaire {UNIQUE: idExemplaire}
idExemplaire dateAchat statut
{Il ne peut y avoir plus d'un PrêtEnCours pour un même Exemplaire}
12.3.4 Types de données des attributs et autres contraintes d'intégrité
Personne nom : String prénom : String
Membre téléphoneRésidence : String nbMaxPrêts : Integer = 5 duréeMaxPrêts : Integer = 7
PrêtEnCours PrêtArchivé
dateRetour : Date
{dateRetour >= datePrêt}
{statut = "prêté" ssi PrêtEnCours de
l'Exemplaire est non vide}
{Le nombre de PrêtEnCours d'un Membre <= nbMaxPrêts}
Employé {UNIQUE : codeMatricule}
codeMatricule : String
catégorieEmployé : enum(bibliothécaire, commis) catégorieUtilisateur
Catégorie {UNIQUE: code}
code : String descripteur : String
0..1
* parent 0..1
enfant
* Auteur
Editeur {UNIQUE: nomEditeur}
nomEditeur : String ville : String
Livre {UNIQUE: ISBN}
ISBN : String titre : String
annéeParution : TypeDonnéesAnnée 10..*0..*
1 1..*
1..* 1..*
1..*
1 1..*
1 1..*
Exemplaire {UNIQUE: idExemplaire}
idExemplaire : String dateAchat : Date
statut : enum(prêté, disponible, retiré)
1 1..*1..*
1
Prêt datePrêt : Date
1
*
1
* Utilisateur
{UNIQUE :idUtilisateur}
idUtilisateur : String
motPasse : String 11 **
{ordonné}
{Il ne peut y avoir plus d'un PrêtEnCours pour un même Exemplaire}
{disjointe, complète}
{disjointe, complète}
{chevauchante, complète}
TypeDonnéesAnnée {Integer > 0 }
<<datatype>>
12.3.5 Conservation de l'historique des données
Pour prise de décision (OLAP)
– entrepôt de données
– traitements difficiles à prévoir
Historique complet ou sommaire ?
Historique des mises à jour ?
Plus facile de supprimer des
données que de les retrouver ...
12.3.6 Modularisation du modèle conceptuel
PackageCLassesPrêts
PackageClassesDescriptionBibliographique PackageHiérarchiePersonne
PackageHiérarchiePersonne
Personne nom : String prénom : String
Membre
téléphoneRésidence : String nbMaxPrêts : Integer = 5 duréeMaxPrêts : Integer = 7 Employé
{UNIQUE : codeMatricule}
codeMatricule : String
catégorieEmployé : enum(bibliothécaire, commis) catégorieUtilisateur
Auteur Utilisateur
{UNIQUE :idUtilisateur}
idUtilisateur : String motPasse : String
{disjointe, complète}
{chevauchante, complète}
PackageClassesPrêts
PrêtEnCours PrêtArchivé
dateRetour : Date
{dateRetour >= datePrêt}
{statut = "prêté" ssi PrêtEn Cours de l'Exemplaire est non vide}
{Le nombre de PrêtEnCours d'un Membre <= nbMaxPrêts}
{Il ne peut y avoir plus d'un PrêtEnCours pour un même Exemplaire}
{disjointe, complète}
Exemplaire {UNIQUE: idExemplaire}
idExemplaire : String dateAchat : Date
statut : enum(prêté, disponible, retiré) Utilisateur
(from PackageHiérarchiePersonne)
Prêt datePrêt : Date
1
*
1
1 * *
1 *
Membre
(from PackageHiérarchiePersonne)
PackageClassesDescriptionBibliographique
{ordonné}
TypeDonnéesAnnée {Integer > 0 }
<<datatype>>
Catégorie {UNIQUE: code}
code : String
descripteur : String 0..1
* parent
0..1
enfant
* Auteur
(from PackageHiérarchiePersonne)
Editeur
{UNIQUE: nomEditeur}
nomEditeur : String ville : String
Livre {UNIQUE: ISBN}
ISBN : String titre : String
annéeParution : TypeDonnéesAnnée 1 **
1 1..*
1..* 1..*
1..*
1
1..*
1
1..*
Exemplaire
(from PackageCLassesPrêts)
1 1..*
1 1..*
12.3.7 Métamodélisation
Méta-donnée (metadata)
– décrit un aspect de la structure d'autres données
Méta-modèle (metamodel)
– modèle de données des méta-
données
Exemple : méta-modèle de UML
Element
GeneralizableElement isRoot : Boolean isLeaf : Boolean isAbstract : Boolean
Attribute
initialValue : Expression Method
body : ProcedureExpression Operation
concurrency : CallConcurrencyKind isRoot : Boolean
isLeaf : Boolean isAbstract : Boolean
1 **
+specification 1
ElementOwnership visibility : VisibilityKind
Namespace
ModelElement name : Name
0..1
*
+namespac 0..1
+ownedElement
*
BehavioralFeature isQuery : Boolean Feature
ownerScope : ScopeKind visibility : VisibilityKind
StructuralFeature multiplicity : Multiplicity
changeability : ChangeableKind targetScope : ScopeKind Classifier
*
1
+feature {ordered} *
+owner 1
1 +typ **
1
Class isActive : Boolean
DataType Interface
12.3.7.1 Classe générique (template class)
IndexSecondaire<Livre,{ISBN}>
Livre
<<table>>
nomTable, listeColonnes IndexSecondaire