Vous êtes sur la page 1sur 3

Master 1 RSD

Exercices des examens des années précédentes avec solution


Questions de cours : (7 points)

a) Quel est le but de la méta-modélisation ? (2 points)


b) Donner les 4 niveaux de méta-modélisation de l’Architecture MOF de l'OMG
(2 points)
c) Quels sont les avantages de la combinaison de l’ingénierie dirigée par les modèles
avec les méthodes formelles. (3 points)

Exercice No 1 (6 points)
Soit le diagramme de classe suivant.

Questions:

Modéliser les contraintes suivantes en OCL.


1. Le nom (Lastname) d’une personne doit avoir au moins 20 caractères.
Solution :
Context Person
Self.lastname.size() >= 20

2. Deux étudiants ne doivent pas avoir le même numéro de matricule (matNr).


Solution :

context Student
inv: Student.allInstances()->forAll(b1, b2 | b1 <> b2 implies
b1.matNr <> b2.matNr)

3. Le grade académique du superviseur d'une personne doit être supérieur


au grade académique de la personne supervisée

Solution :

context Person
inv : self.supervisor.grade.value > self.grade.value

Exercice No 2 (5 points)
a) Cet exemple concerne la définition d'un livre.
Un livre est composé d'un nombre de parties, qui sont à leur tour composées d'un
certain nombre de chapitres. Les chapitres sont constitués de sections.

Question : Modéliser ce problème par un diagramme de classe UML.

Solution :

b) Tous les jours, le facteur distribue des recommandés dans uns zone géographique
qui lui est affectée. Les habitants sont aussi associés à une zone géographique. Les
recommandés sont de deux sortes : lettres ou colis. Comme plusieurs facteurs peuvent
intervenir sur la même zone, on souhaite, pour chaque recommandé, le facteur qui l’a
distribué, en plus du destinataire.

Question : Modéliser ce problème par un diagramme de classe UML.

Solution :
Exercice No 3 (5 points)
Soit le diagramme de classe suivant:

Question:
Donner des expressions OCL modélisant les contraintes suivantes :

 L'attribut somme ne peut pas être négatif.


context Order
inv: sum >= 0
 L'attribut somme sera nul si aucun livre n'est commandé.
context Order
inv: orderedBooks->isEmpty() implies sum = 0
 L'attribut somme décrit réellement le prix (price) des livres commandés.
context Order
inv: sum = orderedBooks->collect(price)->sum()

 Les différentes instances de livre ont différents idNumbers.


context Book
inv: Book.allInstances()->forAll(b1, b2 | b1 <> b2 implies
b1.idNumber <> b2.idNumber)

ou
context Book
inv: Book.allInstances()->forAll(b1, b2 | b1.idNumber = b2.idNumber implies
b1 = b2)

ou
context Book
inv: Book.allInstances()->forAll(b | b <> self implies

Remarque: AllInstances( ) est une opération qui retourne un ensemble contenant toutes les
instances existantes de la collection actuelle (avec les instances de toutes ses collections héritées)

Vous aimerez peut-être aussi