模型驱动架构是指一种用于应用系统开发的软件设计方法(信息系统开发的重点是应用软件的设计),它提供了一套软件设计的指导规范,这套指导规范是用模型来表示的。模型驱动架构是由一个名叫OMG(Object Management Group,即对象管理组织)的国际联盟于2001年颁布的。
简述
为了解决软件开发中出现的种种问题,全球最大的软件工业标准化组织国际对象管理组织(OMG,Object Management Group),在2001年7月提出了模型驱动架构(MDA,Model Driven Architecture)。MDA是一种基于诸如
统一建模语言(UML)、
可扩展标记语言(XML),和
公共对象请求代理体系结构(CORBA)等一系列业界开放标准的框架,因此,它具备软件设计和模型的可视化、存储和交换的功能。
MDA能够创建出机器可读和高度抽象的模型,这些模型独立于实现技术,以标准化的方式储存。MDA把建模语言用做一种编程语言而不仅仅是设计语言。MDA是为应对业务和技术的快速变化提出的一种开放、中立的系统开发方法和一组建模语言标准的集合,其最终目的是构建可执行模型,实现软件的工厂化生产。MDA是软件开发模式从以代码为中心向以模型为中心转变的里程碑,被面向对象技术界预言为未来最重要的方法学。
模型驱动架构是以模型为核心并由模型映射驱动开发的过程。MDA环境下的系统开发方式就是在开发活动中通过创建各种模型精确描述不同的问题域,并利用模型转换来驱动包括分析、设计和实现等在内的整个软件开发过程。
建模方法
MDA基于三种建模方法。
第一种建模方法就是著名的
统一建模语言(Unified ModelingLanguage,UML),它包括各种软件建模所需的子语言。UML主要的
子语言用于表达类图、活动图与状态图。
第二种建模方法是元对象工具(Meta Object Facility,MOF),它是作为UML构造的一个子集而建立的,具有足够的表达能力来表达重要的模型。
第三种建模技术是
公共仓库元模型(Common Warehouse Metamodel,CWM),它标准化了数据仓库应用程序的生命周期(例如,设计、构建和管理)。
建模层次
在MDA开发过程,可从三个不同的层次建立系统模型。
第一个层次模型是计算无关模型(Computational Independent Model,CIM),该模型关注于业务环境和需求,而不考虑计算环境。该模型通常由业务分析人员创建,展示了系统的业务模型,可以理解为系统需求。
第二个层次为平台无关模型(Platform Independent Model,PIM),该模型考虑在计算系统环境中的业务逻辑表示,但不关注具体的实现平台。该模型通常由系统架构师创建,关注系统功能,可以理解为分析模型。
第三个层次为平台相关模型(Platform Specific Model,PSM),该模型关注于如何在特定平台(如JavaEE)下如何实现业务逻辑;可以理解为设计模型。MDA的价值在于CIM可以通过简单的映射转换成PIM。同样,PIM也可以映射成不同平台的PSM,而PSM则可以最终转换成具体的实现代码。
基于MDA的开发过程,业务人员首先通过业务领域的分析和建模构造CIM以描述需求;之后结合相关的标准规范将CIM转换为PIM;在PIM基础上,针对不同的实现环境,可以构造出不同的PSM;最后将PSM转换成目标代码,完成开发过程。
相关规范
MDA主要包含以下4个规范:
1)元设施(Meta of Facility,MOF)。MOF提供了一个元数据的管理框架以及一组元数据服务,使得模型系统和元数据驱动系统的开发和互操作成为可能。在MOF中提出了4层模型的概念,分别是运行时层(MO层)、模型层(M1层)、元模型层(M2层)和元元模型层(M3层)。
2)UML。UML是一种通用的建模语言,得到了主要的面向对象和组件方法的广泛支持,并且能够被应用到所有的应用领域和实现平台。
3)元数据交换(Metadata Interchange,XMI)。XMI定义了XML标记如何表示序列化的MOF模型。其目的是为了便于UMI。建模工具之间的数据和元数据交换,并在多层分布式环境中提供元数据存储机制。
4)
公共仓库元模型(Common Warehouse Metamodel,CWM)。CWM的主要目的是允许在分布式异构环境中对仓库工具,仓库平台和仓库元数据知识库进行仓库和业务智能元数据的交换。
除了以上4个规范,MDA还有两个重要的子规范:
1)对象约束语言(Object Constraint Language,OCL)。OCL是UML的一个子规范。它是一种易于使用的形式化语言,其语义等同于一阶逻辑,其目的是为了描述UML模型中的约束。OCL是保证模型精确性的重要手段,被广泛用于MOF中的4层模型中,除了描述模型约束,还可以用来定义模型转换规则。
2)模型的查询、视图、转换(Query/View/Transformation,QVT)。QVT是模型转换的标准。它定义了两种描述性的模型转换语言:关系(Relations)和核心(Core),以及两种命令式的模型转换机制:操作映射(Operational Mappings)和黑盒(Black Box)。