{"id":584,"date":"2012-09-13T16:12:39","date_gmt":"2012-09-13T14:12:39","guid":{"rendered":"http:\/\/www.hpi.uni-potsdam.de\/giese\/gforge\/mdelab\/?page_id=584"},"modified":"2021-09-01T09:53:34","modified_gmt":"2021-09-01T07:53:34","slug":"eurema","status":"publish","type":"page","link":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/mdelab-projects\/software-engineering-for-self-adaptive-systems\/eurema\/","title":{"rendered":"Executable Runtime Megamodels"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1118 alignright\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2013\/12\/eurema_235x85.png\" alt=\"eurema_235x85\" width=\"165\" height=\"59\" \/><\/p>\n<p style=\"text-align: justify\">With this project, we propose the seamless model-driven engineering approach, called EUREMA (<strong>E<\/strong>xec<strong>u<\/strong>table <strong>R<\/strong>untim<strong>e<\/strong> <strong>M<\/strong>eg<strong>a<\/strong>models), for modeling, executing, adapting, and evolving self-adaptive software.<\/p>\n<p style=\"text-align: justify\"><\/p>\n<h3 style=\"text-align: justify\"><strong>Overview<\/strong><\/h3>\n<p style=\"text-align: justify\">Self-adaptive software is often split into two parts: an adaptation engine implementing a feedback loop to control the underlying adaptable software. EUREMA aims at the engineering of adaptation engines with multiple feedback loops. Individual feedback loops may address different concerns such as self-optimization or self-healing or they may even operate on top of each other in a layered architecture. Such layered architectures are required for realizing adaptive or hierarchical control schemes, in which a higher-layer feedback loop controls a lower-layer feedback loop. Moreover, EUREMA supports off-line adaptation by means of changes induced and controlled by humans to enable the long-term evolution of the self-adaptive software.<\/p>\n<p style=\"text-align: justify\">Therefore, EUREMA provides a modeling language for feedback loops, the coordination of feedback loops, and the adaptation engine, as well as an interpreter for EUREMA models to execute the feedback loops.<\/p>\n<h3 style=\"text-align: justify\"><strong>Modeling Language<\/strong><\/h3>\n<p style=\"text-align: justify\">The EUREMA modeling language provides two types of diagrams. A <em>Feedback Loop Diagramm (FLD)<\/em> to specify feedback loops and a <em>Layer Diagram (LD)<\/em> to specify the structuring of feedback loops in the adaptation engine.<\/p>\n<h4 style=\"text-align: justify\"><strong>Feedback Loop Diagramms (FLD)<\/strong><\/h4>\n<p style=\"text-align: justify\">Using FLDs, <a title=\"Models at Runtime for Self-Adaptive Software\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=197\">feedback loops employing runtime models<\/a> can be explicitly specified by capturing the flow of adaptation activities, such as MAPE, that operate on runtime models. Thus, EUREMA considers adaptation activities as model <strong>Operations\u00a0<\/strong>that are linked with each other by <strong>Control flow<\/strong> relationships. Such operation take <strong>Models<\/strong> as input or output, which is made explicit by <strong>Model usage<\/strong> relationships. These main concepts are reflected in the concrete syntax for FLDs:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1157 aligncenter\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/09\/FLD-syntax.png\" alt=\"FLD Syntax\" width=\"300\" height=\"254\" \/><\/p>\n<p style=\"text-align: justify\"><em>Initial<\/em> and <em>final states<\/em> are special\u00a0operations that define the entry and exit points for executing a feedback loop instance.\u00a0A <em>destruction state<\/em> is a final state that destroys the feedback loop instance when this state is reached.\u00a0Adaptation activities are specified as <em>model operations<\/em> represented by hexagon block\u00a0arrows labeled with their names. A model operation has at least one named exit compartment, one for each return status of the operation. At runtime, the implementation\u00a0of the operation determines the return status and therefore, which compartment is\u00a0activated to continue the control flow. Complex model operations abstract from and\u00a0invoke adaptation activities modeled in other FLDs. The control flow between operations is specified by solid arrows and can be exclusively branched by a decision node (diamond element) and conditions. Such conditions\u00a0use generic information about EUREMA concepts to branch the control flow while\u00a0the different exit compartments of operations may depend on information only known\u00a0internally to user-defined runtime models and operation implementations. Model operations work on runtime <em>models<\/em> represented by rectangles and the <em>usage<\/em> of models\u00a0as input or output is depicted by dotted arrows. Finally, an FLD model can be used as\u00a0a runtime model within another FLD, which is relevant for layering feedback loops in layered architectures.<\/p>\n<p style=\"text-align: justify\">The following figures show example FLDs that specify the analysis activities of a self-repair feedback loop (left hand side) and a self-repair feedback loop invoking the analysis activities by a complex model operation (right hand side):<\/p>\n<p><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/09\/FLD.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1160\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/09\/FLD.png\" alt=\"FLD\" width=\"1311\" height=\"368\" \/><\/a><\/p>\n<h4><strong>Layer Diagrams (LD)<\/strong><\/h4>\n<p style=\"text-align: justify\">Having modeled individual feedback loops, these feedback loops are placed in an adaptation engine.\u00a0Therefore, EUREMA proposes the layer diagram\u00a0that provide an architectural view of the self-adaptive software. This view refers to an instance situation of the software and it captures the employed feedback loops, their relationships to each other and to the adaptable software,\u00a0and their triggering conditions. Therefore, an LD structures the self-adaptive software into <strong>layers\u00a0<\/strong>containing <strong>modules <\/strong>and <strong>relationships<\/strong> among modules. \u00a0The detailed concepts are reflected by the concrete syntax for LDs:<\/p>\n<p style=\"text-align: center\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-1161 aligncenter\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/09\/LD-syntax.png\" alt=\"LD Syntax\" width=\"283\" height=\"116\" \/><\/p>\n<p style=\"text-align: justify\">The partitions in an LD\u00a0represent the <em>layers<\/em> of the self-adaptive software, which contain <em>modules<\/em>. An instance\u00a0of an FLD constitutes a <em>megamodel module<\/em> that encapsulates the details of a concrete\u00a0feedback loop or adaptation activities. Such a module is depicted as a package with a\u00a0white tab in an LD since EUREMA provides white-box views of megamodel modules by\u00a0means of the FLDs. In contrast, a package with a black tab represents <em>software modules<\/em>\u00a0that are not specified by EUREMA, like an instance of the adaptable software.\u00a0<em>Sense<\/em> and <em>effect<\/em> relationships between modules are reflected by dotted arrows, either\u00a0labeled with r (for reading the sensed module) or w\/a (for writing\/annotating the effected\u00a0module), respectively. A sense relationship is labeled with a triggering condition\u00a0for the sensing module, which specifies <em>when\u00a0<\/em>an instance of the feedback loop should be executed.<br \/>\n<em>Usage<\/em> relationships between megamodel modules are modeled in LDs to make the\u00a0dependencies between FLDs explicit.\u00a0A use relationship is reflected by a solid arrow and it\u00a0is labeled with the name of an FLD element\u00a0to bind this element to another FLD.<\/p>\n<p style=\"text-align: justify\">The following figure shows an example LD on the right hand side while the left hand side illustrates how an LD refers to an FLD:<\/p>\n<p style=\"text-align: justify\"><a href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/09\/LD.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1162\" src=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-content\/uploads\/sites\/3\/2012\/09\/LD.png\" alt=\"LD\" width=\"1255\" height=\"335\" \/><\/a><\/p>\n<p style=\"text-align: justify\">More details on the EUREMA language such as the triggering conditions and its application to multiple, interacting feedback loops, layered feedback loops, and off-line adaptation can be found in [1,2].<\/p>\n<h3 style=\"text-align: justify\"><strong>Modeling Editor<\/strong><\/h3>\n<p style=\"text-align: justify\">The EUREMA modeling language has been developed for the <em>Eclipse Modeling Framework<\/em> (EMF) and the modeling editors provided by EMF are used to create and modify EUREMA models. Additionally, we are currently working on a graphical editor supporting all concepts of the EUREMA language.<\/p>\n<h3><strong>Interpreter<\/strong><\/h3>\n<p style=\"text-align: justify\">For the EUREMA language we have developed an interpreter to execute the adaptation engine of a self-adaptive software. On the one hand, the interpreter executes feedback loops as they are specified by FLDs. On the other hand, it maintains the LD as a reflection model of the self-adaptive software, particularly to adjust the adaptation engine such as adding or removing feedback loops from the adaptation engine. The interpreter supports the execution of multiple and layered feedback loops and it leverages off-line adaptation by providing an interface for changes induced and controlled by humans.<\/p>\n<p style=\"text-align: justify\">Keeping FLDs and the LD alive at runtime, they become runtime models, which provides the flexibility to adjust the adaptation engine at runtime. The interpreter is able to cope with dynamic changes of the EUREMA models.<\/p>\n<p style=\"text-align: justify\">The interpreter implementation is based on EMF though the interpreter works in a standalone mode. Thus, it is not required having the complete Eclipse workbench available in order to execute EUREMA models. This supports embedding the interpreter into a self-adaptive system for using the interpreter on-line.<\/p>\n<h3 style=\"text-align: justify\"><strong>Status and Availability of the Language, Editor, and Interpreter<\/strong><\/h3>\n<p style=\"text-align: justify\">The EUREMA language, editor, and interpreter have been employed to academic case studies for self-adaptive software, e.g., to <a title=\"RUBiS-EJB3\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=942\">mRUBiS<\/a> as the adaptable software. They are currently enhanced and elaborated to cover further concepts of self-adaptive software, like incrementally making a system self-adaptive. Thus, they are available on request. Please contact us for further information.<\/p>\n<h3 style=\"text-align: justify\"><strong>References<\/strong><\/h3>\n<ol>\n<li>Thomas Vogel and Holger Giese.\u00a0<i>Model-Driven Engineering of Self-Adaptive Software with EUREMA<\/i>. ACM Trans. Auton. Adapt. Syst.\u00a08(4):18:1-18:33,\u00a01 2014.<br \/>\n<strong>(Up-to-date discussion of EUREMA)<\/strong><\/li>\n<li>Thomas Vogel and Holger Giese.\u00a0<i>Model-Driven Engineering of Adaptation Engines for Self-Adaptive Software: Executable Runtime Megamodels<\/i>.\u00a0Technical Report 66,\u00a0Hasso Plattner Institute for Software Systems Engineering, University of Potsdam, Germany,\u00a04 2013.<br \/>\n<strong>(Comprehensive discussion of EUREMA, partially superseded by [1])<\/strong><\/li>\n<li>Thomas Vogel and Holger Giese.\u00a0<i>A Language for Feedback Loops in Self-Adaptive Systems: Executable Runtime Megamodels<\/i>.\u00a0In\u00a0Proceedings of the 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS 2012),\u00a0pages 129-138,\u00a06 2012.\u00a0IEEE Computer Society.<br \/>\n<strong>(Initial proposal of EUREMA)<\/strong><\/li>\n<li>Thomas Vogel and Andreas Seibel and Holger Giese.\u00a0<i>The Role of Models and Megamodels at Runtime<\/i>. In\u00a0Juergen Dingel and Arnor Solberg, ed.,\u00a0Models in Software Engineering, Workshops and Symposia at MODELS 2010, Oslo, Norway, October 3-8, 2010, Reports and Revised Selected Papers,\u00a0vol. 6627of Lecture Notes in Computer Science (LNCS), pages 224-238.\u00a0Springer-Verlag,\u00a05 2011.<br \/>\n<strong>(Motivates and discusses the use of megamodels at runtime; extends [5])<\/strong><\/li>\n<li>Thomas Vogel and Andreas Seibel and Holger Giese.\u00a0<i>Toward Megamodels at Runtime<\/i>. In\u00a0Nelly Bencomo and Gordon Blair and Franck Fleurey and Cedric Jeanneret, ed., Proceedings of the 5th International Workshop on Models@run.time at the 13th IEEE\/ACM International Conference on Model Driven Engineering Languages and Systems (MoDELS 2010), Oslo, Norway,\u00a0volume 641\u00a0of CEUR Workshop Proceedings, pages 13-24,\u00a010 2010.\u00a0CEUR-WS.org.\u00a0(best paper)<br \/>\n<strong>(Motivates and discusses the use of megamodels at runtime)<\/strong><\/li>\n<\/ol>\n<h3><strong>Project Team<\/strong><\/h3>\n<ul>\n<li><a href=\"https:\/\/hpi.de\/en\/giese\/staff\/thomas-vogel.html\" target=\"_blank\" rel=\"noopener\">Thomas Vogel<\/a> (contact person)<\/li>\n<li><a href=\"https:\/\/hpi.de\/en\/giese\/people\/prof-dr-holger-giese.html\" target=\"_blank\" rel=\"noopener\">Holger Giese<\/a><\/li>\n<\/ul>\n<h3><strong>Related MDELab Tools<\/strong><\/h3>\n<ul>\n<li><a title=\"A Framework for Engineering Self-Adaptive Software Systems with Runtime Models\" href=\"http:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/?page_id=197\">Models at Runtime for Self-Adaptive Software<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>With this project, we propose the seamless model-driven engineering approach, called EUREMA (Executable Runtime Megamodels), for modeling, executing, adapting, and evolving self-adaptive software. Overview Self-adaptive software is often split into two parts: an adaptation engine implementing a feedback loop to &hellip; <a href=\"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/mdelab-projects\/software-engineering-for-self-adaptive-systems\/eurema\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":5,"featured_media":1118,"parent":1111,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-584","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/comments?post=584"}],"version-history":[{"count":7,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/584\/revisions"}],"predecessor-version":[{"id":1419,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/584\/revisions\/1419"}],"up":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/pages\/1111"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/media\/1118"}],"wp:attachment":[{"href":"https:\/\/www.hpi.uni-potsdam.de\/giese\/public\/mdelab\/wp-json\/wp\/v2\/media?parent=584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}