Voisin de Droite: Voisin de Gauche: Voisin de Derrière: Voisin de Devant: Test d Ingénierie Dirigée par les Modèles Test en 1:45. Les réponses sont à donner sur ce document exclusivement. Les documents de cours sont autorisés. Votre nom est à indiquer sur chaque page. Partie Théorique (1/3 de la note). 1. Quelles métaclasses peut-on typiquement trouver dans le métamodèle d'un langage de transformation de modèles déclaratif? Give examples of metaclasses that might appear in the metamodel of a declarative transformation language. 2. Peut-on placer EBNF au niveau M3? Pourquoi? Peut-on placer UML au niveau M3? Pourquoi? Is it possible to use EBNF at the M3 level? Why? Is it possible to use UML at the M3 level? Why? Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 1
3. Peut-on exprimer une sémantique à l'aide d'un générateur de code? Justifiez. Is it possible to state semantics for a language by mean of a code generator? Why? 4. Quel est l'intérêt de décrire plusieurs syntaxes concrètes pour un même langage? Donnez des exemples. What s the purpose of describing different concrete syntaxes for the same language? Give examples. 5. Donnez les avantages et les inconvénients d'un analyseur de texte réversible comme Sintaks par rapport à un couple générateur de code / compilateur de compilateur (comme le couple AndroMDA/ANTLR) dans le cadre de la définition de la syntaxe textuelle d un langage. Give advantages and drawbacks of using a reversible text processor (like Sintaks) over using a code generator (like AndroMDA) together with a compiler compiler (like ANTLR) to supply a textual concrete syntax for a language. Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 2
6. Une transformation de modèle est un modèle. Donnez un cas où il est intéressant de transformer une transformation de modèles. A model transformation is a model. Give an example where it is interesting to transform of a model transformation. 7. Afin de tester le bon fonctionnement d'une transformation de modèles, donnez une méthode tirant parti d'un générateur aléatoire de modèles (prenant en entrée un métamodèle et fournissant un modèle qui y est conforme) et d'un comparateur de modèles (indiquant si deux modèles donnés son similaires). In order to test behavior of a model transformation, propose a method to model transformation testing based on a random model generator (inputting a metamodel and outputting a model that conforms to the inputted metamodel), and on a model comparison tool (stating whether two models are similar). Préliminaire aux questions 8 à 10: Vous avez conçu et supporté un langage de modélisation en le décrivant par un métamodèle en ECore, et en lui donnant une syntaxe concrète avec XText et une sémantique à l'aide d'une transformation de modèle ATL vers le langage C. Ce langage a eu beaucoup de succès, il est en effet utilisé par un nombre important de personnes. Il est donc particulièrement important que les nombreux modèles décrits à l'aide de ce langage restent valides. Your are the author of a modeling language that you have described by an ECore metamodel, with an XText-supported textual concrete syntax, and semantics provided by an ATL model transformation towards the C language. Your modeling language is quite successful in that it is used by many people. As such, it is of paramount importance that models described by mean of your modeling language keep valid. Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 3
8. Est-il possible, sans altérer les modèles existants, de changer la syntaxe concrète de ce langage? Si oui, sous quelles conditions? Si non, pourquoi? Is it possible to change the concrete syntax of this modeling language such that existing models are not broken? Explain why and give possible limitations in case it is possible. 9. Est-il possible, sans altérer les modèles existants, de changer la syntaxe abstraite de ce langage? Si oui, sous quelles conditions? Si non, pourquoi? Is it possible to change the abstract syntax of this modeling language such that existing models are not broken? Explain why and give possible limitations in case it is possible. 10. Est-il possible, sans altérer les modèles existants, de changer la sémantique de ce langage? Si oui, sous quelles conditions? Si non, pourquoi? Is it possible to change semantics for this modeling language such that existing models are not broken? Explain why and give possible limitations in case it is possible. Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 4
Partie Pratique (2/3 de la note). On souhaite contrôler une mélangeuse médicale destinée à la réalisation de produits obtenus par mélange d échantillons sous forme liquide. Les aspects matériels de cette machine sont modélisés par la Figure 1. Les échantillons à mélanger sont placés dans les récipients 1 à 3. Le mélange se fait dans des récipients vibrants entre les positions 6 et 10. Le mélange, une fois finalisé, est déposé dans le récipient 11. Pour déplacer les échantillons, une seringue mobile est capable de se déplacer entre les différents récipients où elle peut retirer et déposer une certaine quantité d échantillon. Cette seringue peut être nettoyée en retirant du liquide nettoyant du récipient 4 ensuite déposé dans le récipient 5. Deux volets obturateurs, situés entre les récipients 3 et 4, ainsi que 10 et 11, sécurisent l utilisation du système en empêchant de possibles projections. Ces volets peuvent s ouvrir et se fermer. Bien sûr, la seringue ne peut se déplacer à travers un volet obturateur en position fermée. needle transport belt safety shutters filters dangerous needle closed open input samples cleaning fluid 1 2 3 O vibrating internal cups drain FIGURE 1. Le mélangeur. output sample The purpose is to control a medical mixing machine that intended to make products from samples. Schema for the mixing machine is given by Figure 1. The samples are solutions inputted into the system from cups 1, 2, and 3. The actual mixing is performed in vibrating cups 6 to 10. Once finished, the sample melange is outputted into cup 11. In order to move samples from cup to cup, a syringe can be placed over cups, where a given amount of solution can be sucked or blown. The syringe can be cleaned by sucking some cleaning solution from cup 4; the cleaning solution is thereafter blown into cup 5. Two safety shutters, placed between cups 3 and 4, and between cups 10 and 11, can be opened and closed in order to protect from possible sample projections. Of course, the syringe cannot move across a closed shutter. Cette machine est pilotée par un programme devant d écrire en Java. Des API sont fournies pour: déplacer la seringue de N récipients vers la gauche ou vers la droite, retirer ou déposer une quantité donnée de produit du récipient sur lequel est arrêtée la seringue, ouvrir et fermer les volets. The machine is controlled by a program made in Java. APIs are defined for: moving the syringe by an offset of N cups to the left or to the right, Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 5
sucking or blowing a given amount of sample from / to the cup above which the syringe is stopped, opening and shutting the shutters. Bien que cette API soit simple, il s est avéré que les programmes décrivant des processus de production utilisant cette machine peuvent devenir rapidement complexes, et donc hors de portée des compétences en programmation des laborantins. On souhaite donc développer un langage simplifiant la programmation de cette machine. Un exemple de phrase de ce langage sous une forme graphique est données en Figure 2. La même phrase sous forme textuelle est donné en Figure 3. Even though this API looks simple, software for producing mixed samples with such machine can rapidly become complex in practice. As such, laboratory technicians lack programming skills to produce such control software. Hence the idea to create a new language so that programming the mixing machine is made easier. An example sentence of such new language is given in Figure 2 using a graphical notation. The same sentence is represented textually in Figure 3. cup 2 cup 6 cup 7 left FIGURE 2. Une phrase exprimée suivant une syntaxe graphique. Take 5 units from cup 2 Put 2 units to cup 6 once left shutter closed Put 3 units to cup 7 Clean the needle FIGURE 3. Phrase de la Figure 2 exprimée suivant une syntaxe textuelle. Il vous est demandé de produire le métamodèle d un tel langage complété par les contraintes nécessaire en OCL. Vous produirez ensuite un modèle conforme à ce métamodèle représentant les phrases des figures 2 et 3 sous la forme d un diagramme d objets. You are asked to produce the metamodel for the language together with constraints written in OCL. You will then write down the model conforming to the metamodel represented in figures 2 and 3 as an object diagram. Il est toutefois possible de calculer automatiquement les moments où les volets obturateurs doivent se fermer et s ouvrir. En effet, un volet doit être fermé sauf quand la seringue mobile se déplace d un récipient d un côté du volet vers un récipient de l autre côté du volet. Vous produirez une transformation de modèle en ATL permettant d insérer automatiquement les directives d ouverture et de fermeture des volets. Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 6
It is possible to compute the exact moment where shutters should be opened or closed. Indeed, a shutter must be closed unless the syringe moves from a cup at one side of the shutter to a cup at the other side of the shutter. You are asked to write a model transformation in ATL that automatically inserts shutters opening and closing requests. Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 7
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 8
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 9
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 10
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 11
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 12
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 13
Test d Ingénierie Dirigée par les Modèles - Session 2010-2011 14