建模及EMF

来源:互联网 发布:javascript有继承吗 编辑:程序博客网 时间:2024/05/14 02:14
     

建模是软件开发的一项重要内容。在做任何一个软件的时候,我们都是先根据需求抽象出这个软件的模型,然后在依照这个模型进行实际的开发。事实上,不仅是软件,对于任何的自然科学甚至社会科学来说,我们抽象出来的理论等等都是用来对这些领域进行建模处理的。我个人认为建模的实质就是用我们已知或者容易理解的东西去模拟抽象我们不容易理解的东西。在这个过程中,需要提取有用的元素,并建立它们之间的关系。

比如,在软件开发中常用的UML就是一种建模语言,或者说是一种建模工具。使用UML,我们可以建立一个与语言无关的面向对象的模型。UML还可以对硬件等模型进行描述。如果没有认真了解UML可能并没有注意到UML本身也是一种模型。比如当中的类,对象,用例等都是已经定义好的概念。我们所做的只是用这些已存在的元素去构建我们希望的面向对象的软件模型。因此,应该有一种更高级的方式来描述UML模型,这就是OMG所定义的MOFMeta Object Facility)。MOF是用来描述通用元模型的工具,它可以对任何领域建模(包括工程领域等)。UML就是建立在MOF上的。

例如,假如我们要对电脑建模,那么可以先考虑一下电脑的元模型。电脑包括显示器,主机,键盘等,进一步可以将主机分解为主板,显卡,内存,芯片等。对于每一个元素,都要定义一些属性来描述。比如显示器有尺寸,芯片有速度等。另外,它们之间的连接关系也需要描述清楚。注意,这里的关系不一定是完全描述的,我们可以在两个元素之间定义多种可选择的关系,而把具体的描述放在实际建模时。比如,鼠标和主机的连接可以有USBPS2方式,我们仅仅定义了这两种关系,而不需要立即使用某一种关系。这一模型基本适用与我们通常使用的电脑,因此,我们把它称为电脑的元模型。有了这个模型以后,对某一台或一类具体的电脑建模的时候就很容易了。我们只需要加入这些以定义好的元素(可能是一部分),对其属性赋值,然后用已定义的关系将它们连接起来就可以了。元模型是某个领域通用的模型,它不仅简化了我们建模的过程,还使我们专注于这个领域而不会带来一些额外的元素。

那么有没有MOF的具体实现呢?答案当然是肯定的。在流行的开发工具Eclipse中就有一个叫做EMFEclipse Modeling Framework)的工具,它就是MOFEclipse上的实现。EMF是一套插件,所以在使用之前必须先去下载。

EMF的具体使用可以参考IBM网站上的一篇文章,其地址为http://www-900.cn.ibm.com/developerWorks/cn/linux/opensource/os-ecemf1/index.shtml。该文介绍了EMF的概况并例举了一个论坛的建模过程。EMF提供了多种对元模型的描述方式,比如UMLJAVAXSD等。对于所产生的模型还可以生成Eclipse插件以供以后实际建模使用。

以上是我个人对于建模的一些理解,还有很多片面甚至有误之处,希望大家指正。由软件开发的总体趋势来看,从机器语言,汇编,高级语言等等一步一步都是对于问题的更高的抽象,因此,建模尤其是元模型是非常有意义的,因为它让我们站在一个更高的高度来观察和思考问题。

原创粉丝点击