80 likes | 199 Views
Sous titre. Titre. 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
E N D
Sous titre Titre Pied de page
Pied de page 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 inaspects // Contracts (OCL WFR) require “StaticSemantics.ocl” // Method bodies (Dynamic semantics) require “DynamicSemantics.kmt” // Transformations 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) Venez voir la démo en live sur le stand OpenEmbedd ! Logo Semantic in Kermeta Semantic mapping Static constraints in OCL AS VM Transformation written in Kermeta Input scenario Embedded source code inside the robot Simulator in Kermeta Interaction between the current simulation (Kermeta) and the GUI (Java) Result of a real execution Result of a simulation interpreted with Kermeta