|
MDA关注的问题和解决之道
MDA 提供了统一的元数据管理框架
商业利益的驱使使得软件行业的发展中经常出现各厂商之间产品不兼容的情况,这
对于软件相互集成和互操作都形成了障碍,直接导致了软件成本的提高、应用及开发的复杂度。MDA旨在统一不同的商业产品和标准之间的数据交换及互操作,从而改善各厂商的软件产品之间不兼容的情况。
良好的集成性、互操作性的关键是如何智能地使用和管理元数据,这些元数据普遍存在于应用程序、平台、工具和数据库当中。MDA的一个重要贡献正在于提供了一个管理不同元数据的统一框架,元数据的管理和集成可以使用MDA的一系列标准来完成:CWM, MOF, UML和XMI。其中最重要的是MOF,它是MDA的核心部分。和以往进行数据格式统一管理的思路不同,MDA 允许使用不同格式(不同元数据描述)的数据同时存在,并为描述这些数据的语言提供了统一的定义语言,即MOF。下面我们来看看MDA的各个标准在统一元数据方面所起的作用:
CWM
CWM是用来对数据仓库(包括关系型、非关系型、多层系统等)中的元数据进行建模的规范,它为数据仓库、数据挖掘领域内的元数据定义了对应的元模型,它同时也是多层系统、异构系统间元数据实例交换的基础。理解CWM元模型的系统可以使用与其元模型对应的格式进行元数据的交换。CWM包含一系列的元模型,它们分别代表data resources、analysis、warehouse management和典型的数据仓库/数据挖掘环境中的功能组件。Data resource元模型支持对遗产(legacy)和非遗产(non-legacy)的数据源的建模,包括关系型数据库、面向记录(record-oriented)的数据库、基于XML和基于对象的数据源。analysis层定义了data transformations、OLAP、information visualization/reporting、business nomenclature和数据挖掘(data mining)。仓库管理层(warehouse management)定义了标准的warehouse processes、activity tracking和scheduling。foundation元模型支持不同的通用元素和服务,例如数据类型(data types)、类型系统映射(type system mappings) 、抽象关键字和索引(abstract keys and indexes)、表达式(expressions),商业信息(business information)和基于组件的部署(component-based software deployment)。
每种产品表示元数据的方式不尽相同,它们都有自己的内部格式,因此它们之间元数据的共享就必然存在障碍。现在我们可以使用CWM来解决这一问题,CWM代表了基于模型的在软件系统间交换元数据的一种新途径。在多种产品间共享的元数据将会使用数据模型来表示,而这些数据模型则使用CWM元模型来精确描述。某种产品将自己的元数据(使用内部格式表示)导出为使用CWM描述的元数据,另一种产品将其导入,构造出CWM兼容的模型并映射到自己的内部格式,这样就达到了元数据共享的目的。现在CWM提供的元模型集合已经足以用来对整个数据仓库领域进行建模。使用支持CWM的工具,我们可以从数据仓库模型中直接创建数据仓库实例。不同的工具组件将会处理模型的不同部分,比如,关系数据库服务器将会处理模型中的关系型部分以创建它的分类(catalog);OLAP服务器将会在模型中搜索OLAP元数据,用它来定义它的多层模式(multidimensional schema);ETL(extract-transform-load)工具处理的部分可能会跨越多个CWM元模型,例如关系型、OLAP、transformation、data type、type mapping和expression元模型。CWM模型主要是用来定义高度通用的、用于外部表示和共享元数据的模型。对于那些不适合CWM格式的元数据(例如,和工具高度耦合的元数据),可以通过CWM的扩展机制来处理它,也可以通过扩展核心的CWM元模型来处理它,或者通过其它工具相关的方法来处理。
2.1.2 UML
UML是定义CWM的符号基础(不光是CWM,这里只谈论UML对于统一元数据所做的努力),但是CWM同时也扩展了核心的UML元模型的子集来支持数据仓库等。使用CWM来构建数据仓库模型的时候,可视化的建模工具是我们的首选。一方面包含复杂的元数据结构的可视化模型对于人来说,易于管理和理解。另一方面,由于UML语言被精确地定义(通过UML元模型),可视化的UML模型能够被自动地转换到其它格式。这就给交换与平台、工具无关的CWM模型,以及从CWM模型中构造工具相关的元数据都带来了便利性。
2.1.3 MOF
不同的功能需要不同的建模结构集:关系数据建模所需的建模结构包括表、列、键等等。工作流建模所需的建模结构集包括活动、执行者、变化、分割、连接等等。UML类建模所需的建模结构集包括类、属性、操作、关联等等。定义CORBA接口的建模结构集包括接口、值类型等等。
所以,为了描述某一特定类型的模型,我们必须描述组成该类模型的建模结构集。能有一种一致的方法来描述语言结构是非常有用的。业界正在使用全然不同的方法来描述不同类型建模结构的本质。MOF放弃了把这些不同的建模结构集都合并成一个集合的想法,因为这意味着把所有语言合并为一种,而采用统一方式来描述组成某类模型的建模结构属性以及建模结构间的关系。
MOF被用来描述关系数据模型的建模结构,也被用来描述UML类模型的建模结构;它还被用来描述其他种类的建模所用到的结构。MOF是通用的、抽象的,用于定义元模型的语言,它可以被称为metametamodel或者定义元模型的模型。MOF天生就是面向对象的,它定义了基本的元素、语法、元模型的结构。MOF可以作为定义CWM和UML元模型的更通用的模型。
MOF标准提供了:
•抽象模型:定义MOF对象和他们之间的关联
•规则的集合:将基于MOF的元模型映射到语言无关的接口(使用CORBA IDL来定义)。对这些接口的实现可以被用来访问和修改任何基于这个元模型的模型。
•定义元模型元素的生命周期、复合、和关闭语义的规则。
•层级的反射接口(reflective interfaces):定义了通用的操作,用于发现(discover)和操纵基于MOF元模型的模型,但是对于映射后的接口的属主是未知的。
MOF的强大在于它使得不同的元模型可以互操作,能够理解MOF的应用程序可以在不了解特定领域模型实例接口的情况下,仍然能够使用反射接口提供的通用操作来读取和更新模型。MOF语义还定义了元数据仓库服务(metadata repository services),它支持模型构建(construction)、发现(discovery)、移动(traversal)、更新(update)。前提条件是此模型必须是可被理解的某种元模型的实例。MOF支持模型生命周期语义,意味着MOF的实现提供了一种有效的元数据授权和分发工具。例如,新开发的元模型可以保存在MOF仓库中,根据MOF生命周期语义和复合语义(继承inheritance、集群clustering、嵌套nesting等),它能够和现存的元模型组合。随后,模型接口和默认的实现可以被生成,并对环境可用。模式实现可以通过手工或者工具来附加其它编程逻辑被增强(例如使用OCL约束)。一个完全兼容MOF的仓库可以提供众多的元数据服务,比如持久性(persistence)、版本(versioning)和目录服务(directory services)等。 |
|