Eclipse 模型设计工具链

本文从程序员和计算机科学的角度来简单讨论模型,基于模型的设计。并且介绍了基于Eclipse Modeling Framework 的模型设计工具链。

基于模型的设计(Model Based Design)

       接触了控制领域的专业人士多了之后就发现,他们整天在讨论模型(model),有时候感觉与他们交流时不谈模型都不好意思开口。不过,他们大多数时候都是使用现成的软件来构建模型的(比如Simulink)。由这些工具软件将模型转化成为计算机的程序,在计算机上完成仿真,控制。我并不想班门弄斧,讨论太多基于模型设计。只是从计算机科学的角度来讨论基于模型的设计。

何为模型(Model)?

       模型是对事物进行抽象后的形式化表达。所谓抽象就是去掉各种细节,提炼出关键的目标,数据和相互关系。而形式化就是以一个逻辑上十分缜密的形式来描述。最好的形式化语言就是数学,记得《数学的语言》一本书中就提到数学的定义-数学是关于模型的语言。 当然数学公式就是一种形式化语言。在计算机科学中,也有各种关于模型的形式化方式。巴科斯范式(BNF: Backus-Naur Form)用来描述计算机语言语法的符号集。所有的计算机高级语言也可以认为是一种形式化语言,特别是面向对象程序设计语言中的对象,实际上也是建立事物模型的重要方法。XML,JSON 等语言主要是用来形式化描述模型。

     一个好的模型的形式化语言更接近人类的理解和阅读。通常建立模型以及仿真都是其它学科的专家的事情。他们对计算机语言并不关心,而是专注于解决他们自己领域的问题。所以,模型的形式语言更接近自然语言。而计算机科学家关心的是如何高效率地将领域专家的模型描述转化为计算机程序。

模型设计软件

模型设计软件主要功能包括:

  1. 模型的建立
  2. 模型的转换

           模型和模型之间能够相互转换,模型和代码之间也能够相互转换。

    3   模型运行与仿真

软件工程师不仅关心基于模型的设计,而且要关心基于模型设计的工具链。下图是基于Eclipse Modeling framework 的工具链。

Eclipse

      Eclipse是一个由IBM公司牵头开发的一个开源的工具开发架构,我们能够在Eclipse 架构下开发 C/C++,java,javascript ,PHP ,HTML5等各种语言编写的程序,进一步地,可以使用它来开发UML,XML 等基于模型的应用。但是Eclipse 并不是编译器,它是通过其他语言工具来实现编译的。也不仅仅是程序开发环境,还发展到基于模型的开发

eclipse 有下面几个特点:

     与语言工具无关

         Eclipse 只是一个开发环境架构,具体语言的编译器是作为插件安装到Eclipse 的IDE 中的。现在连嵌入式程序编译器IAR都有了Eclipse插件。Go,python 语言都有Eclipse 的插件。我们可以使用统一的Eclipse IDE 开发各自计算机程序。

     java 语言开发,与OS 无关

     插件Plugin 结构

前面已经提到Eclipse 采用了插件的架构。插件可以通过New Software Install 安装到Eclipse IDE 中。

Eclipse 的运行时是一个的一些主要插件:

SWT/JFace

SWT(Standard Widget Toolkit)本身仅仅是Eclipse组织为了开发Eclipse IDE环境所编写的一组底层图形界面 API,它是Eclipse中的窗口小部件工具箱,它是一组窗口组件的实现,并能底层操作系统图形用户界面平台紧密集成。JFace用来在 SWT 库顶部提供常见的应用程序用户界面功能。JFace对SWT进行了扩展,把用户熟悉的一些组件进行了封装,在开发中用户可以尽可能地用JFace组件来开发自己的应用。

GEF (Graphical Editing Framework)

Eclipse 的图形编辑架构,使用它可以开发java 的图形应用程序。比如UML类图。

Eclipse Modeling Framework

好了,我们回到基于模型的设计主题上来。模型的建立,转换和运行需要工具来实现,对于软件工程师而言,这项工作就是基于模型的程序设计,系统工程师画一个状态图,或者描述一个流程图,软件工程师要将这些模型转化成为一种计算机程序。然后再计算机上运行。因此,模型可以看作是比高级程序设计语言还要高级的语言。这也属于软件自动化的范畴。目的编写更少的代码,提高软件开发的小效率。

Eclipse Modeling Framework (下面简称EMF) 是Eclipse 架构下的一个建模工具。Eclipse建模框架(EMF)是一组Eclipse插件构成。可以用EMF建立自己的UML模型,设计模型的XML格式或编写/自动生成模型的java代码。

 Xtext

基于模型的设计对于软件工程师而言,意味着能实现少代码的目的。 可以设计一些特定的模型描述语言,人们称为特定领域语言(DSL),然后将DSL描述的模型转换成为某一种高级语言。这也是软件自动化的方法,提高了软件的生产效率。

Xtext 是Eclipse 的另一个开源项目。它是用于开发编程语言和特定领域语言(DSL)的框架。使用Xtext,您可以使用功能强大的语法语言来定义描述模型的语言。 Xtext 使用EMF 的模型来表示语法分析的文本文件,也就是所谓的抽象语法树abstract syntax tree (AST).所以,Xtext 是基于EMF 架构实现的。

小结

          本博文介绍了基于Eclipse的模型设计的工具。以及基于Eclipse Modeling framework,Xtext,的工具链。

          如果将我们的内容倒过来,发现下面的次序:Xtext->Eclipse Modeling framework->eclipse->java。 目前工业软件中,普遍使用XML 来描述各自工业控制的模型。人工编辑XML 文档是比较繁琐和容易出错的。需要更接近自然语言的DSL 来描述模型,而且不同的行业也有不同的特点。所以我们需要具有设计模型描述语言的工具。

        顺便说一句,IEC61499 开源项目4DIAC强烈地基于Eclipse平台的多种技术(例如EMF,GEF,CDT,Xtext)。

猜你喜欢

转载自blog.csdn.net/yaojiawan/article/details/115749702