Titre
-
Upload
kasimir-buckley -
Category
Documents
-
view
22 -
download
0
description
Transcript of Titre
Pied de page fixe Pied de page 2
Plan
• Topcased• ATL• Kermeta
Qu'est ce que Kermeta Cas d'utilisation Un aperçu du fonctionnement Exemple de développement
(robot tortue logo) Breathe life into your metamodels
Qu'est ce que Kermeta• Un langage pour construire et spécifier des métamodèles• Un environnement pour toutes les étapes de
développement basées sur l'utilisation de métamodèles De la production des MM jusqu'à leur exploitation Intégration et/ou interopérabilité avec les autres outils du
domaine Adapté pour construire des DSL (Domain Specific Language)
(Ingénierie des langages)• Approche OO permettant de simplifier les tâches des
développeurs de DSL grâce à des mécanismes dédiés: Manipulation intuitive des éléments de modèle Tissage, patron de conception, Clôtures lexicales, Type modèle, généricité, …
• Opensource (http://www.kermeta.org)
Cas d'utilisation
• Pour définir la structure, le comportement et les contraintes d'un métamodèle (compatible avec EMOF et Ecore), Spécification de la sémantique abstraite, des
contraintes statiques ( OCL) et de la sémantique dynamique (comportement)
Conserve une liaison avec la syntaxe concrète• Pour vérifier des modèles• Pour animer/simuler des modèles
Prototypage de métamodèle et simulation des modèles qu'ils définissent
• Pour manipuler/transformer/tisser des modèles Modulable et expressif grace à une approche Orientée
Objet étendue
Un aperçu du fonctionnementBreathing life into Meta-Models
// MyKermetaProgram.kmt// An E-MOF metamodel is an OO program that does nothing
require "StateMachine.ecore" // to import it in Kermeta// Kermeta lets you weave in aspects
// Contracts (OCL WFR)require “StaticSemantics.ocl”// Method bodies (Dynamic semantics)require “DynamicSemantics.kmt”// Transformations
run()
reset()
FSM
name: EString
step()
State input: EString
output: EString
fire()
Transition
initialState
1
owningFSM 1 ownedState*currentState
0..1
source
1
outgoingTransition
*target
1
incomingTransition
0..1
Context FSM inv: ownedState->forAll(s1,s2|s1.name=s2.name implies s1=s2)
aspect class FSM { operation reset() : Void {
currentState := initialState}}class Minimizer {
operation minimize (source: FSM):FSM {…}}
Aperçu du tissage interne
Par exemple pour bien séparer la syntaxe abstraite du domaine sémantique
require "FSM.ecore"
aspect class FSM{ reference currentState : State operation run() : Void is do … end operation reset() : Void is do … end}…aspect class Transition { operation fire() : String is do // update FSM current state source.owningFSM.currentState := target result := output end}
Exemple de développement (Robot tortue logo)
Static constraints in OCL
Simulator in Kermeta
Result of a simulation interpreted with Kermeta
Input scenario
Embedded source code inside the robot
Result of a real execution
Transformation written in Kermeta
Interaction between the current simulation (Kermeta) and the GUI (Java)
Logo Semantic in Kermeta
AS VMSemantic mapping
Venez voir la démo en live
sur le stand OpenEmbedd !