119:
standard. It is designed to write programs which are also models, to write transformations of models (programs that transform a model into another), to write constraints on these models, and to execute them. The goal of this model approach is to bring an additional level of abstraction on top of
177:: integrate a simple but powerful weaver for simple meta-modeling tasks. Arbitrary complex weaving is achieved using a dedicated composer written in Kermeta. This allows programmers to extend existing metamodels. Especially in order to add behavior to them by weaving behavioral
77:, but also from BasicMTL, a model transformation language implemented in 2004 in the Triskell team by D. Vojtisek and F. Fondement. It is also inspired by the previous experience on MTL, the first transformation language created by Triskell, and by the Xion action language for
120:
the "object" level and thus to see a given system like a set of concepts (and instances of concepts) that form an explicitly coherent whole, which one will call a model.
55:
1097:
178:
84:
The name
Kermeta is an abbreviation for "Kernel Metamodeling" and reflects the fact that the language is conceived as a core for (meta-)modeling. The
1018:
1082:
1087:
972:
112:
967:
70:
952:
78:
947:
942:
1092:
190:
156:
100:
977:
116:
66:
59:
168:
957:
96:
88:
consonance of this name is an intentional reflection of the
Triskell team's location in Brittany.
1024:
200:
184:
92:
1014:
1006:
140:
174:
162:
85:
1043:
1076:
962:
1028:
196:
statically typed: genericity for the classes and the operations, function types...
23:
998:
1010:
1005:. Lecture Notes in Computer Science. Vol. 3713. pp. 264–278.
95:
is currently available under its version 2.0.4 released in 2012. It is
187:: operations support pre and post conditions, classes use invariants.
997:
Muller, Pierre-Alain; Fleurey, Franck; Jézéquel, Jean-Marc (2005).
203:: the complete model of the program is available during execution.
130:
a real concept of model, more precisely of model type (Jim Steel).
47:
43:
133:
a concrete syntax that fits well to model and metamodel writing.
127:
all the concepts of EMOF used for the specifications of a model.
51:
39:
74:
65:
The
Kermeta language borrows concepts from languages such as
152:
The main characteristics of the
Kermeta language are :
38:
language was initiated by Franck
Fleurey in 2005 within the
999:"Weaving Executability into Object-Oriented Meta-languages"
1067:
213:
212:
The curious reader will find further information on the
709:// Check if there is one and only one valid transition
171:: first-class concepts of associations and composition
115:
language. Its underlying metamodel conforms to the
193:: functions and first class lambda-expressions
1003:Model Driven Engineering Languages and Systems
8:
22:is a modeling and programming language for
136:two paradigms: the object, and the model.
91:Kermeta, and its execution platform under
989:
310:* Print the FSM on the standard output
7:
165:: multiple inheritance, late binding
159:: traditional structures of control
1098:Software using the Eclipse license
1044:"Version 2.0.4 is released !"
14:
16:Modeling and programming language
421:" Transition : "
181:(operational or translational).
46:(gathering researchers of the
1:
973:Model Transformation Language
139:a bridge towards the Eclipse
631:// Get the valid transitions
889:// update FSM current state
760:"Non Determinism"
113:aspect oriented programming
1114:
730:"No Transition!"
111:Kermeta is a modeling and
1083:Unified Modeling Language
953:Domain Specific Modelling
367:"State : "
1068:Kermeta official website
948:Domain Specific Language
943:Model Driven Engineering
223:
1088:Java platform software
766:// fire the transition
101:Eclipse Public License
220:Example (Kermeta 1.4)
123:Kermeta thus brings:
978:Meta-Object Facility
60:University of Rennes
1011:10.1007/11557432_19
958:Model-Based Testing
1042:Vojtisek, Didier.
841:incomingTransition
823:outgoingTransition
664:outgoingTransition
580:incomingTransition
559:outgoingTransition
481:")->"
391:outgoingTransition
185:design by contract
1020:978-3-540-29010-0
1105:
1055:
1054:
1052:
1050:
1039:
1033:
1032:
994:
932:
929:
926:
923:
920:
917:
914:
911:
908:
905:
902:
899:
896:
893:
890:
887:
884:
881:
878:
875:
872:
869:
866:
863:
860:
857:
854:
851:
848:
845:
842:
839:
836:
833:
830:
827:
824:
821:
818:
815:
812:
809:
806:
803:
800:
797:
794:
791:
788:
785:
782:
779:
778:validTransitions
776:
773:
770:
767:
764:
761:
758:
755:
752:
749:
746:
743:
740:
739:validTransitions
737:
734:
731:
728:
725:
722:
719:
716:
715:validTransitions
713:
710:
707:
704:
701:
698:
695:
692:
689:
686:
683:
680:
677:
674:
671:
668:
665:
662:
659:
656:
655:validTransitions
653:
650:
647:
644:
641:
638:
637:validTransitions
635:
632:
629:
626:
623:
620:
617:
614:
611:
608:
605:
602:
599:
596:
593:
590:
587:
584:
581:
578:
575:
572:
569:
566:
563:
560:
557:
554:
551:
548:
545:
542:
539:
536:
533:
530:
527:
524:
521:
518:
515:
512:
509:
506:
503:
500:
497:
494:
491:
488:
485:
482:
479:
476:
473:
470:
467:
464:
461:
458:
455:
452:
449:
446:
443:
440:
437:
434:
431:
428:
425:
422:
419:
416:
413:
410:
407:
404:
401:
398:
395:
392:
389:
386:
383:
380:
377:
374:
371:
368:
365:
362:
359:
356:
353:
350:
347:
344:
341:
338:
335:
332:
329:
326:
323:
320:
317:
314:
311:
308:
305:
302:
299:
296:
293:
290:
287:
284:
281:
278:
275:
272:
269:
266:
263:
260:
257:
254:
251:
248:
245:
242:
239:
236:
233:
230:
227:
1113:
1112:
1108:
1107:
1106:
1104:
1103:
1102:
1073:
1072:
1064:
1059:
1058:
1048:
1046:
1041:
1040:
1036:
1021:
996:
995:
991:
986:
939:
934:
933:
930:
927:
924:
921:
918:
915:
912:
909:
906:
903:
900:
897:
894:
891:
888:
885:
882:
879:
876:
873:
870:
867:
864:
861:
858:
855:
852:
849:
846:
843:
840:
837:
834:
831:
828:
825:
822:
819:
816:
813:
810:
807:
804:
801:
798:
795:
792:
789:
786:
783:
780:
777:
774:
771:
768:
765:
762:
759:
756:
753:
750:
747:
744:
741:
738:
735:
732:
729:
726:
723:
720:
717:
714:
711:
708:
705:
702:
699:
696:
693:
690:
687:
684:
681:
678:
675:
672:
669:
666:
663:
660:
657:
654:
651:
648:
645:
642:
639:
636:
633:
630:
627:
624:
621:
618:
615:
612:
609:
606:
603:
600:
597:
594:
591:
588:
585:
582:
579:
576:
573:
570:
567:
564:
561:
558:
555:
552:
549:
546:
543:
540:
537:
534:
531:
528:
525:
522:
519:
516:
513:
510:
507:
504:
501:
498:
495:
492:
489:
486:
483:
480:
477:
474:
471:
468:
465:
462:
459:
456:
453:
450:
447:
444:
441:
438:
435:
432:
429:
426:
423:
420:
417:
414:
411:
408:
405:
402:
399:
396:
393:
390:
387:
384:
381:
378:
375:
372:
369:
366:
363:
360:
357:
354:
351:
348:
345:
342:
339:
336:
333:
330:
327:
324:
321:
318:
315:
312:
309:
306:
303:
300:
297:
294:
291:
288:
285:
282:
279:
276:
273:
270:
267:
264:
261:
258:
255:
252:
249:
246:
243:
240:
237:
234:
231:
228:
225:
222:
214:Kermeta website
210:
175:aspect-oriented
163:object-oriented
150:
148:Characteristics
109:
86:Breton language
32:
17:
12:
11:
5:
1111:
1109:
1101:
1100:
1095:
1093:Free UML tools
1090:
1085:
1075:
1074:
1071:
1070:
1063:
1062:External links
1060:
1057:
1056:
1034:
1019:
988:
987:
985:
982:
981:
980:
975:
970:
965:
960:
955:
950:
945:
938:
935:
445:"-("
224:
221:
218:
209:
206:
205:
204:
197:
194:
188:
182:
172:
169:model-oriented
166:
160:
149:
146:
145:
144:
137:
134:
131:
128:
108:
105:
31:
28:
15:
13:
10:
9:
6:
4:
3:
2:
1110:
1099:
1096:
1094:
1091:
1089:
1086:
1084:
1081:
1080:
1078:
1069:
1066:
1065:
1061:
1045:
1038:
1035:
1030:
1026:
1022:
1016:
1012:
1008:
1004:
1000:
993:
990:
983:
979:
976:
974:
971:
969:
966:
964:
961:
959:
956:
954:
951:
949:
946:
944:
941:
940:
936:
463:"/"
219:
217:
215:
207:
202:
201:introspection
198:
195:
192:
189:
186:
183:
180:
176:
173:
170:
167:
164:
161:
158:
155:
154:
153:
147:
142:
138:
135:
132:
129:
126:
125:
124:
121:
118:
114:
106:
104:
102:
98:
94:
89:
87:
82:
80:
76:
72:
68:
63:
61:
57:
53:
49:
45:
41:
37:
29:
27:
26:engineering.
25:
21:
1047:. Retrieved
1037:
1002:
992:
963:Metamodeling
904:currentState
298:currentState
286:initialState
211:
151:
122:
110:
99:, under the
90:
83:
64:
35:
33:
19:
18:
97:open-source
1077:Categories
1049:3 December
984:References
802:Transition
649:Transition
643:Collection
589:Transition
568:Transition
553:ownedState
337:ownedState
265:ownedState
191:functional
157:imperative
107:Philosophy
898:owningFSM
868:operation
856:attribute
844:attribute
826:reference
808:reference
598:operation
577:reference
556:attribute
541:owningFSM
538:reference
526:attribute
316:operation
295:reference
283:reference
280:owningFSM
262:attribute
199:complete
179:semantics
143:formalism
24:metamodel
937:See also
319:printFSM
250:standard
58:and the
42:team of
40:Triskell
1029:2824834
415:writeln
361:writeln
244:kermeta
238:kermeta
235:require
226:package
93:Eclipse
36:Kermeta
30:History
20:Kermeta
1027:
1017:
925:output
916:result
913:target
892:source
880:String
865:String
853:String
847:output
829:target
811:source
769:result
694:equals
670:select
622:String
613:String
595:target
574:source
535:String
493:target
475:output
433:source
208:Syntax
1025:S2CID
859:input
835:State
817:State
799:class
757:raise
727:raise
721:empty
688:input
520:State
517:class
457:input
409:stdio
355:stdio
304:State
292:State
274:State
253:class
241:using
141:ECore
48:INRIA
44:IRISA
1051:2012
1015:ISBN
871:fire
790:fire
754:then
748:>
745:size
724:then
652:>
646:<
601:step
529:name
499:name
439:name
397:each
379:name
343:each
331:self
117:EMOF
73:and
62:1).
56:INSA
52:CNRS
34:The
1007:doi
968:OCL
928:end
793:end
784:one
763:end
733:end
634:var
586:set
565:set
547:FSM
511:end
307:/**
271:set
256:FSM
229:fsm
79:UML
75:QVT
71:OCL
67:MOF
1079::
1023:.
1013:.
1001:.
886:do
883:is
874:()
736:if
712:if
628:do
625:is
328:do
325:is
322:()
313:*/
247:::
216:.
103:.
81:.
69:,
54:,
50:,
1053:.
1031:.
1009::
931:}
922:=
919::
910:=
907::
901:.
895:.
877::
862::
850::
838:#
832::
820:#
814::
805:{
796:}
787:.
781:.
775:=
772::
751:1
742:.
718:.
706:}
703:)
700:c
697:(
691:.
685:.
682:t
679:|
676:t
673:{
667:.
661:=
658::
640::
619::
616:)
610::
607:c
604:(
592:#
583::
571:#
562::
550:#
544::
532::
523:{
514:}
508:}
505:}
502:)
496:.
490:.
487:t
484:+
478:+
472:.
469:t
466:+
460:+
454:.
451:t
448:+
442:+
436:.
430:.
427:t
424:+
418:(
412:.
406:|
403:t
400:{
394:.
388:.
385:s
382:)
376:.
373:s
370:+
364:(
358:.
352:|
349:s
346:{
340:.
334:.
301::
289::
277:#
268::
259:{
232:;
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.