Gemoc创建特定领域建模语言步骤(简略版)

起步

该文用于使用Gemoc这一基于Eclipse的特定领域语言(Domain Specific Language,dsl)创建平台进行创建dsl的操作步骤,参考了使用Gemoc创建一个fsm。使用的Gemoc版本是2.4.0-SNAPSHOT. 由于步骤繁琐,本文仅用于提醒自己以及同学在遗忘之际回忆之用,不会提供过多细节讲解,还望周知。

语言工作台步骤

1.首先创建Ecore元模型,同时也称作是dsl的抽象语法

 2.在编辑好ecore文件后,即定义好dsl中的必要元素后,右键点击model.genmodel,并Generate All。系统会自动生成edit editor tests 三个项目。

Gemoc创建特定领域建模语言步骤(简略版)_第1张图片

3.新建一个Viewpoint Specification Project项目,并修改description下的odesign文件,在这里定义dsl的具体语法。

4.新建一个GEMOC Sequential xDSML Project项目,叫做ecnu.cslGemoc创建特定领域建模语言步骤(简略版)_第2张图片

注意在创建过程中,在最后步骤中,要选择Ecore file location,这里选择我们刚刚定义好的Ecore项目中的model.ecore文件,K3 DSA Project name此时可以不选择。

Gemoc创建特定领域建模语言步骤(简略版)_第3张图片

创建完成后,打开src目录下的.elange文件,为了使该组装语言能够被其他项目继承,在language 之前加上external 关键字。并右键点击Melange,进行clean All, Generate All。

Gemoc创建特定领域建模语言步骤(简略版)_第4张图片

5.接下来创建第二个GEMOC Sequential xDSML Project项目ecnu.xcsl,第一步与4类似。然后添加对上一个xDSML ProjectMelange文件的依赖,如下图所示。

Gemoc创建特定领域建模语言步骤(简略版)_第5张图片

此时项目会报错,因为没有添加对ecnu.csl的依赖,现在添加,方法是通过META-INF文件下的MANIFEST.MF添加eclipse插件依赖。

Gemoc创建特定领域建模语言步骤(简略版)_第6张图片

之后,我们创建DSA项目,即dsl的操作语义。右键Xcsl.melange,添加DSA project,如下图所示。(注意在创建过程中,要选择正确的Ecore model文件)

Gemoc创建特定领域建模语言步骤(简略版)_第7张图片

在新建的DSL项目中,编写操作语义。并根据需要添加外部的插件依赖。(因为该项目是作为eclipse的插件进行运行的,不能通过传统的classpath添加jar包依赖,而应该通过META-INF文件下的MANIFEST.MF添加eclipse插件依赖<把想依赖的jar包发布为eclipse插件>)

Gemoc创建特定领域建模语言步骤(简略版)_第8张图片

6.回到ecnu.xcsl项目,选择.melange文件,通过alt+/快捷键添加对DSA的依赖,如下图所示

Gemoc创建特定领域建模语言步骤(简略版)_第9张图片

最后,我们对ecnu.xcsl右键melange,并clean all,generate all。

Gemoc创建特定领域建模语言步骤(简略版)_第10张图片

 

7.至此,整个语言工作台的建模工作就完成了。此时可以启动另一个eclipse平台,试试添加使用dsl建模的模型。

Gemoc创建特定领域建模语言步骤(简略版)_第11张图片

建模工作台步骤

1.新建一个Modeling Project

Gemoc创建特定领域建模语言步骤(简略版)_第12张图片

2.在该项目中新建一个Model Model,如下图所示。Model Model是我们在创建ecore modeling project时指定的。

Gemoc创建特定领域建模语言步骤(简略版)_第13张图片

注意在Model Object选择步骤,要选择ecore 元模型的根结点,在我们的元模型中,Cosimulation System是根结点。

Gemoc创建特定领域建模语言步骤(简略版)_第14张图片

4.右键项目,添加Viewpoints Selection

Gemoc创建特定领域建模语言步骤(简略版)_第15张图片

5.右键项目,添加Representation Wizard

Gemoc创建特定领域建模语言步骤(简略版)_第16张图片

 

6.然后就可以在自动心打开的.aird文件进行模型编辑了。

 

总结

以上就是本文内容,dsl能够对领域内的知识进行高度抽象,简化了建模人员的操作,提高了建模效率,对于一切想要脱离底层实现并进行高级抽象,以便让更多的领域专家能够参与模型设计、开发的工作人员来说,都是一个不错的选择。

你可能感兴趣的:(工具使用,特定领域建模,DSL,Gemoc)