论文部分内容阅读
【摘 要】本文在研究元建模理论的基础上,分析了基于元建模的模型转换方法,给出了基于MOF的元建模的相关理论知识,探讨了模型转换规则的定义和表示,并利用MOF标准来构建不同平台的元模型。
【关键词】模型转换;元建模;MOF标准
1 MOF标准的目标
在使用面向对象的理论分析和设计一个应用系统的过程中,系统的分析和建模是创建成功的应用关键的第一步。为了支持种类繁多的系统的建模,软件研究人员创建了各种各样的建模语言和工具。一种可能的方法是把现有重要的不同语言中的模型构件经过选择,合并成一个新的集合,而采用统一方式来描述组成模型的建模结构属性以及建模结构间的关系。另外一种方法是提供尽量少的基本模型构件,定义一个开放的层次结构,通过继承和实例化机制构造更丰富的模型构件,以支持各种领域的应用的开发。OMG的设计人员正是采纳了后面的一种方法。MOF规范就是在这样的环境下被开发。
MOF的强大在于:首先它是一个开放的建模的框架,在这个框架的支持下,可以很容易定义领域特定的建模语言(元模型);而且,由于基本的MOF模型的构件是统一的,使得不同的元模型可以很容易实现互操作。MOF已经在软件系统设计,系统整合,遗留系统的迁移等方面发挥着越来越大的作用。
2 MOF的元建模构件
MOF的元建模主要是为元数据定义信息模型。主要使用七种建模概念:类、关联、聚合、引用、数据类型、包和约束。软件过程模型是对软件过程的抽象描述这种抽象描述可以是形式化的也可以是非形式化的。进行这种抽象描述的工程活动就称为软件过程建模。软件过程建模(或称过程建模)的目的极为广泛,主要有:使人们易于理解软件过程并在此基础上进行交流;支持软件过程中各参与人员之间的通信与协调;支持对软件过程的分析与改以支持对软件过程的实施与管理支持过程重用;提供对过程的指导与自动执行支持等。研究过程建模与过程实施对于软件生产工程化、自动化和过程重用有重要意义,可以使软件项目具有更好的可预见性;使软件产品具有更高的质量;从根本上改善软件生产过程和提高软件组织的过程成熟级别,以适应各行各业对软件产品需要的日益加剧。
以过程中所涉及的各种成分(如活动、角色、产品、资源和约束等)为出发点来考虑过程建模,主要有以下四种不同的建模方法:
(1)以活动为中心的建模方法:这种方法以活动为中心构造过程模型。具体方法是先确定这些活动以及它们之间的执行顺序,再收集与各个活动相关的其它数据,如活动涉及的角色、产品、资源和约束等。这种方法能够直观地反映实际过程的工作流程,无二义性,使人们容易理解和分析软件过程,也易于计划、管理过程和控制过程的执行。
(2)以角色为中心的建模方法:这种方法以過程中各活动所涉及的角色为中心建模。角色是组织结构中的基本构成成分,是一个易于接受和相对稳定的抽象实体,并且一个项目的任务通常是按照角色来分解的。因此以角色为中心建模显得比较自然。建模步骤是先确定各个角色的任务以及角色之间的耦合关系,再以角色为中心收集过程的其它数据,如活动、产品、资源和约束等。由于角色是过程的一个不变的实体,因此构造的过程模型具有较好的稳定性。它的缺点是不能对过程的工作流程有一个显式的描述和定义,人们难以从整体上了解一个过程和他们在过程中的位置。
(3)以产品为中心的建模方法:这种方法以过程中另一类主要成分,即以产品为中心建模。建模步骤首先是确定产品及产品之间的关系,然后再根据不同产品收集其它过程信息如创建产品的活动、涉及的角色和所需资源等。这种方法的优点是简单、易理解具有良好的稳定性;缺点是不能描述软件过程中的动态变化情况,也不能描述与产品相关的活动及角色信息。
(4)基于过程模板的建模方法:这种方法不是以某一类过程成分为中心,而是平等地对待它们。建模步骤是先确定过程的各类成分,如活动、角色、产品等,然后把它们定义成模板。再针对每一个模板在不同的抽象层次上构造该模板的具体对象,最后定义同一抽象层次中所有对象之间的各种关系,从而构成一个完整的过程模型。这种方法的优点是具有较全面的建模能力,容易实现,具有较强的实用性。它的缺点是使人们对整个模型难以全面地了解。
3 基于元模型的建模方法
元模型建模(Metamodeling)是一种创建元模型的活动,它和一般的建模很相似,都是对特定信息和对象建立模型,但它们是针对于不同特性的建模。元模型建模是一种模型集成化的工程分析方法,它允许在特定领域内创建多种模型的集成集合,这种集合也就是元模型(Metamodel)。
元模型是关于模型的模型,是关于如何建立模型、模型的语义或模型之间如何集成和互操作等信息的描述,是对某一特定领域建模环境的规范定义,它定义了该领域的语法和语义,能够表示该领域内的所有或全部系统。元模型比模型的抽象程度高,因此能够较好地解决模型集成中的问题。同理,元元模型是对给定元模型建模环境中的语法和语义的规范定义。
元模型经常使用一种简单信息或对象建模的技术来开发,这些技术和信息提供(元)关系(relations)/联系(associations)、(元)属性和一些其它概念。元模型的主要用途是:
(1)作为数据仓库的概念范例,数据仓库用于存储软件工程和相关数据;
(2)作为建模工具(例如CASE)的概念范例;
(3)用来定义建模语言,例如对象分析和设计;
(4)是构成建模工具互操作技术领域的重要部分;
(5)是一种工具,帮助理解不同建模语言概念之间的关系。
实际上,建模和元模型建模是一致的活动,不同之处在于对它们的解释,模型是对真实世界系统和过程的抽象描述,元模型是对模型的抽象描述。因此,用于建模的概念也同样可以用于元模型建模。这个逻辑也能够扩展出元元模型建模的过程。但是,建模、元模型建模和元元模型建模的目的是截然不同的,通常所用的元模型建模的四层概念框架如下表所示。它说明了元元模型、元模型、模型和“用户数据”之间的关系,它们一层在另一层之上,构成了四层结构,如下表所示。一些应用实际上使用超过四层的结构,但是,这种体系结构很容易扩充到超过四层。 元建模和建模一样,也是为了特定目的,对现实世界进行的一种描述。元元建模层构成了元建模体系结构的基础结构。这一层的主要责任是定义描述元模型的语言。一个元元模型能够定义多个元模型,而每个元模型也可以与多个元元模型相关联。使用元建模的好处主要在于以下几个方面:
(1)进行元建模能够定义一个从特定领域中抽象出来的具有丰富语义的语言,让开发者把精力集中在当前的问题领域,而不是某種特定技术。这样就大大提高了软件的生产效率。这里以下一代网络运营支撑系统(NGOSS)来进行举例说明。NGOSS是电信管理论坛 (TMF: TeleManagement Forum)提出的针对下一代电信网络的OSS体系。NGOSS从系统(即插即用)、过程(eTOM)、信息(SID)、产品四个方面保证OSS体系具备标准化、能够逐步演化、保证户联户操作(开放)、实现端到端的管理和高度自动化的特点。NGOSS提出一系列文档、信息模型和代码,分析研究企业核心业务流程和信息技术,提出一套指导OSS建设的系统框架和设计即插即用的OSS组建方法,其目的是帮助开发商迅速开发支撑系统,满足电信运营商对OSS系统建设的需要。但是NGOSS体系太过庞大,以至研究人员无法结合到实际应用中去。采用元建模的方法就可以针对NGOSS进行抽象,根据企业本身的需要建立元模型和模型,在此基础上专注于解决本地电信领域内的问题,这样才能真正的将NGOSS融入现有系统,并且大大提高了软件的生产效率。
(2)使用元建模创建的各个元模型以及模型之间都是以元建模语言为基础,系统之间的互操作性就可以大大增强,从而减少信息孤岛的产生。以宽带公司为例,它的综合业务运营支撑系统主要包括计费系统、客户服务系统、业务管理系统、综合账务系统及数据采集系统等。每个分系统都很庞大复杂,并且有海量的数据。现在的开发方法本上还是每个分系统进行烟囱式的开发,系统之间几乎没有什么横向的联系,仅仅依赖各分系统之间的数据接口进行交互。再加上数据的格式和对象之间的关系不能统一设计,造成一个个的信息孤岛。这些信息孤岛使企业开发新的应用在时间和成本上都非常困难,对电信行业的进一步发展造成了严重的障碍。如果采用元建模的方法进行开发,先建立一个各个系统都必须遵从的元模型(M2层),每个系统都根据这个元模型来构造本系统的模型(M1层),最基本的数据的格式和对象之间的关系都在元模型这个级别进行定义,则系统之间的互操作性就可以大大增强,进而减少信息孤岛的程度。
(3)它能够对语言用统一的方式进行描述。也就是说通过元建模能够对基于元建模语言建立的各种建模语言进行统一的管理和操作,从而能处理其语言的多样性问题。只要使用同一种元建模语言,这样就可以建立起基于此元建模语言建立的不同语言之间的映射关系。元建模技术中的核心是元建模语言,这是整个元建模体系中的基础。要建立一种开放性的元建模环境,则需要使用一种通用的元建模语言,而MOF标准正适用于这种情况。
4 基于MOF的建模方法
OMG所提出的MDA是一种开发软件系统的方式。首先,一个系统的规范以模型的形式使用一种特定的建模语言来表达。然后,使用一个生成器将这个模型映射到系统在一个特定可执行平台的实现。开发者在为规范选择建模语言的时候有四种不同的选择,这些选择正好可以用OMG的四层元模型架构来描述。
(1)第一种实现方式:使用标准的建模语言。在这种情况下,建模语言是一种现有的标准OMG建模语言如UML和CWM。
(2)第二种实现方式:使用轻量级语言扩展。一些建模语言允许开发者通过定义一种新的语言结构来供自己使用。最典型的例子是UML Profiles,这是UML语言内建的扩展机制。一个UML Profile通常会定义许多原型类型,这样开发者可以用来表示他们模型中的元素。通过这种方式,元素能够在已定义的UML元模型基础上获得附加语义。
(3)第三种实现方式:使用重量级语言扩展。这是相对于实现方式二的一种方式,新语言结构同样也能扩展建模语言的元模型。例如,可以使用附加类型,通过泛化和关联标准元模型类型的方式来加强UML元模型。
(4)第四种实现方式:创建一个新的建模语言。在使用方式二和方式三进行元建模的时候,由于建模语言元模型中的类型定义并不一定适用于自身的问题领域,开发者经常会被这些类型定义搞糊涂。对于这两种方式,对建模语言的的扩展都只是基于现有语言结构做一些附加的操作,而不能更改现有结构。
在方式二、三和四中所定义的新结构能真正代表在特定领域建模语言的应用。像DSL-DIA这样的实现途径是为了便于开发自定义的生成器,同时能满足使用方式四定义的新建模语言。方式二中使用UML Profile的方法己经取得了UML建模工具的广泛支持,而方式三和四则需要一个特定的建模环境。有很多的CAME(Computer-Aided Method Engineering)工具如MetaEdit+,都具有基于问题建模环境,以供新建模语言使用。
参考文献
[1]刘辉,麻志毅,邵维忠.元建模技术研究进展[J].软件学报,2008,19(6):1364-1367.
[2]王学斌,王怀民,吴泉源,史殿习.一种模型转换的编织框架[J].软件学报,2006,17(6):1423?1435.
【关键词】模型转换;元建模;MOF标准
1 MOF标准的目标
在使用面向对象的理论分析和设计一个应用系统的过程中,系统的分析和建模是创建成功的应用关键的第一步。为了支持种类繁多的系统的建模,软件研究人员创建了各种各样的建模语言和工具。一种可能的方法是把现有重要的不同语言中的模型构件经过选择,合并成一个新的集合,而采用统一方式来描述组成模型的建模结构属性以及建模结构间的关系。另外一种方法是提供尽量少的基本模型构件,定义一个开放的层次结构,通过继承和实例化机制构造更丰富的模型构件,以支持各种领域的应用的开发。OMG的设计人员正是采纳了后面的一种方法。MOF规范就是在这样的环境下被开发。
MOF的强大在于:首先它是一个开放的建模的框架,在这个框架的支持下,可以很容易定义领域特定的建模语言(元模型);而且,由于基本的MOF模型的构件是统一的,使得不同的元模型可以很容易实现互操作。MOF已经在软件系统设计,系统整合,遗留系统的迁移等方面发挥着越来越大的作用。
2 MOF的元建模构件
MOF的元建模主要是为元数据定义信息模型。主要使用七种建模概念:类、关联、聚合、引用、数据类型、包和约束。软件过程模型是对软件过程的抽象描述这种抽象描述可以是形式化的也可以是非形式化的。进行这种抽象描述的工程活动就称为软件过程建模。软件过程建模(或称过程建模)的目的极为广泛,主要有:使人们易于理解软件过程并在此基础上进行交流;支持软件过程中各参与人员之间的通信与协调;支持对软件过程的分析与改以支持对软件过程的实施与管理支持过程重用;提供对过程的指导与自动执行支持等。研究过程建模与过程实施对于软件生产工程化、自动化和过程重用有重要意义,可以使软件项目具有更好的可预见性;使软件产品具有更高的质量;从根本上改善软件生产过程和提高软件组织的过程成熟级别,以适应各行各业对软件产品需要的日益加剧。
以过程中所涉及的各种成分(如活动、角色、产品、资源和约束等)为出发点来考虑过程建模,主要有以下四种不同的建模方法:
(1)以活动为中心的建模方法:这种方法以活动为中心构造过程模型。具体方法是先确定这些活动以及它们之间的执行顺序,再收集与各个活动相关的其它数据,如活动涉及的角色、产品、资源和约束等。这种方法能够直观地反映实际过程的工作流程,无二义性,使人们容易理解和分析软件过程,也易于计划、管理过程和控制过程的执行。
(2)以角色为中心的建模方法:这种方法以過程中各活动所涉及的角色为中心建模。角色是组织结构中的基本构成成分,是一个易于接受和相对稳定的抽象实体,并且一个项目的任务通常是按照角色来分解的。因此以角色为中心建模显得比较自然。建模步骤是先确定各个角色的任务以及角色之间的耦合关系,再以角色为中心收集过程的其它数据,如活动、产品、资源和约束等。由于角色是过程的一个不变的实体,因此构造的过程模型具有较好的稳定性。它的缺点是不能对过程的工作流程有一个显式的描述和定义,人们难以从整体上了解一个过程和他们在过程中的位置。
(3)以产品为中心的建模方法:这种方法以过程中另一类主要成分,即以产品为中心建模。建模步骤首先是确定产品及产品之间的关系,然后再根据不同产品收集其它过程信息如创建产品的活动、涉及的角色和所需资源等。这种方法的优点是简单、易理解具有良好的稳定性;缺点是不能描述软件过程中的动态变化情况,也不能描述与产品相关的活动及角色信息。
(4)基于过程模板的建模方法:这种方法不是以某一类过程成分为中心,而是平等地对待它们。建模步骤是先确定过程的各类成分,如活动、角色、产品等,然后把它们定义成模板。再针对每一个模板在不同的抽象层次上构造该模板的具体对象,最后定义同一抽象层次中所有对象之间的各种关系,从而构成一个完整的过程模型。这种方法的优点是具有较全面的建模能力,容易实现,具有较强的实用性。它的缺点是使人们对整个模型难以全面地了解。
3 基于元模型的建模方法
元模型建模(Metamodeling)是一种创建元模型的活动,它和一般的建模很相似,都是对特定信息和对象建立模型,但它们是针对于不同特性的建模。元模型建模是一种模型集成化的工程分析方法,它允许在特定领域内创建多种模型的集成集合,这种集合也就是元模型(Metamodel)。
元模型是关于模型的模型,是关于如何建立模型、模型的语义或模型之间如何集成和互操作等信息的描述,是对某一特定领域建模环境的规范定义,它定义了该领域的语法和语义,能够表示该领域内的所有或全部系统。元模型比模型的抽象程度高,因此能够较好地解决模型集成中的问题。同理,元元模型是对给定元模型建模环境中的语法和语义的规范定义。
元模型经常使用一种简单信息或对象建模的技术来开发,这些技术和信息提供(元)关系(relations)/联系(associations)、(元)属性和一些其它概念。元模型的主要用途是:
(1)作为数据仓库的概念范例,数据仓库用于存储软件工程和相关数据;
(2)作为建模工具(例如CASE)的概念范例;
(3)用来定义建模语言,例如对象分析和设计;
(4)是构成建模工具互操作技术领域的重要部分;
(5)是一种工具,帮助理解不同建模语言概念之间的关系。
实际上,建模和元模型建模是一致的活动,不同之处在于对它们的解释,模型是对真实世界系统和过程的抽象描述,元模型是对模型的抽象描述。因此,用于建模的概念也同样可以用于元模型建模。这个逻辑也能够扩展出元元模型建模的过程。但是,建模、元模型建模和元元模型建模的目的是截然不同的,通常所用的元模型建模的四层概念框架如下表所示。它说明了元元模型、元模型、模型和“用户数据”之间的关系,它们一层在另一层之上,构成了四层结构,如下表所示。一些应用实际上使用超过四层的结构,但是,这种体系结构很容易扩充到超过四层。 元建模和建模一样,也是为了特定目的,对现实世界进行的一种描述。元元建模层构成了元建模体系结构的基础结构。这一层的主要责任是定义描述元模型的语言。一个元元模型能够定义多个元模型,而每个元模型也可以与多个元元模型相关联。使用元建模的好处主要在于以下几个方面:
(1)进行元建模能够定义一个从特定领域中抽象出来的具有丰富语义的语言,让开发者把精力集中在当前的问题领域,而不是某種特定技术。这样就大大提高了软件的生产效率。这里以下一代网络运营支撑系统(NGOSS)来进行举例说明。NGOSS是电信管理论坛 (TMF: TeleManagement Forum)提出的针对下一代电信网络的OSS体系。NGOSS从系统(即插即用)、过程(eTOM)、信息(SID)、产品四个方面保证OSS体系具备标准化、能够逐步演化、保证户联户操作(开放)、实现端到端的管理和高度自动化的特点。NGOSS提出一系列文档、信息模型和代码,分析研究企业核心业务流程和信息技术,提出一套指导OSS建设的系统框架和设计即插即用的OSS组建方法,其目的是帮助开发商迅速开发支撑系统,满足电信运营商对OSS系统建设的需要。但是NGOSS体系太过庞大,以至研究人员无法结合到实际应用中去。采用元建模的方法就可以针对NGOSS进行抽象,根据企业本身的需要建立元模型和模型,在此基础上专注于解决本地电信领域内的问题,这样才能真正的将NGOSS融入现有系统,并且大大提高了软件的生产效率。
(2)使用元建模创建的各个元模型以及模型之间都是以元建模语言为基础,系统之间的互操作性就可以大大增强,从而减少信息孤岛的产生。以宽带公司为例,它的综合业务运营支撑系统主要包括计费系统、客户服务系统、业务管理系统、综合账务系统及数据采集系统等。每个分系统都很庞大复杂,并且有海量的数据。现在的开发方法本上还是每个分系统进行烟囱式的开发,系统之间几乎没有什么横向的联系,仅仅依赖各分系统之间的数据接口进行交互。再加上数据的格式和对象之间的关系不能统一设计,造成一个个的信息孤岛。这些信息孤岛使企业开发新的应用在时间和成本上都非常困难,对电信行业的进一步发展造成了严重的障碍。如果采用元建模的方法进行开发,先建立一个各个系统都必须遵从的元模型(M2层),每个系统都根据这个元模型来构造本系统的模型(M1层),最基本的数据的格式和对象之间的关系都在元模型这个级别进行定义,则系统之间的互操作性就可以大大增强,进而减少信息孤岛的程度。
(3)它能够对语言用统一的方式进行描述。也就是说通过元建模能够对基于元建模语言建立的各种建模语言进行统一的管理和操作,从而能处理其语言的多样性问题。只要使用同一种元建模语言,这样就可以建立起基于此元建模语言建立的不同语言之间的映射关系。元建模技术中的核心是元建模语言,这是整个元建模体系中的基础。要建立一种开放性的元建模环境,则需要使用一种通用的元建模语言,而MOF标准正适用于这种情况。
4 基于MOF的建模方法
OMG所提出的MDA是一种开发软件系统的方式。首先,一个系统的规范以模型的形式使用一种特定的建模语言来表达。然后,使用一个生成器将这个模型映射到系统在一个特定可执行平台的实现。开发者在为规范选择建模语言的时候有四种不同的选择,这些选择正好可以用OMG的四层元模型架构来描述。
(1)第一种实现方式:使用标准的建模语言。在这种情况下,建模语言是一种现有的标准OMG建模语言如UML和CWM。
(2)第二种实现方式:使用轻量级语言扩展。一些建模语言允许开发者通过定义一种新的语言结构来供自己使用。最典型的例子是UML Profiles,这是UML语言内建的扩展机制。一个UML Profile通常会定义许多原型类型,这样开发者可以用来表示他们模型中的元素。通过这种方式,元素能够在已定义的UML元模型基础上获得附加语义。
(3)第三种实现方式:使用重量级语言扩展。这是相对于实现方式二的一种方式,新语言结构同样也能扩展建模语言的元模型。例如,可以使用附加类型,通过泛化和关联标准元模型类型的方式来加强UML元模型。
(4)第四种实现方式:创建一个新的建模语言。在使用方式二和方式三进行元建模的时候,由于建模语言元模型中的类型定义并不一定适用于自身的问题领域,开发者经常会被这些类型定义搞糊涂。对于这两种方式,对建模语言的的扩展都只是基于现有语言结构做一些附加的操作,而不能更改现有结构。
在方式二、三和四中所定义的新结构能真正代表在特定领域建模语言的应用。像DSL-DIA这样的实现途径是为了便于开发自定义的生成器,同时能满足使用方式四定义的新建模语言。方式二中使用UML Profile的方法己经取得了UML建模工具的广泛支持,而方式三和四则需要一个特定的建模环境。有很多的CAME(Computer-Aided Method Engineering)工具如MetaEdit+,都具有基于问题建模环境,以供新建模语言使用。
参考文献
[1]刘辉,麻志毅,邵维忠.元建模技术研究进展[J].软件学报,2008,19(6):1364-1367.
[2]王学斌,王怀民,吴泉源,史殿习.一种模型转换的编织框架[J].软件学报,2006,17(6):1423?1435.