第七课 MDA方法介绍
Model Driven Architecture
模型驱动体系结构
主要内容
? MDA概述
? MDA模型
? MDA的思想
? 基于 MDA的开发
? MDA与中间件和 UML
MDA是什么?
? Model Driven Architecture( MDA)是
对象管理组织 OMG提出的一个新的程序设
计方法学。
? 它是一种基于 UML以及其他工业标准的框
架,支持软件设计和模型的可视化、存储
和交换。
? MDA把建模语言用作一种编程语言而不仅
仅是设计语言
MDA包括?
? MDA以一种全新的方式将 IT技术的一系列新的趋势性
技术整合到一起。包括:
? 基于组件的开发( component- based
development)
? 设计模式( design patterns)
? 中间件( middleware)
? 说明性规约( declarative specification)
? 抽象( abstraction)
? 多层系统( multi-tiered systems)
? 企业应用整合( Enterprise Application
Integration)
? 契约式设计( design by contract)
MDA的产生
? MDA 的概念通过 OMG 构建模型的标准对系统
的交互性提供了一种开放的、供应商中立的方法:
? UML( Unified Modeling Language,统一
建模语言)
? CWM( Common Warehouse Meta-model,
公共仓库元模型)
? MOF( Meta-Object Facility,元对象设施)
? XMI( XML Metadata Interchange,XML
元数据交换)
MDA的作用
? MDA的出现,为提高软件开发效率,增强软件的
可移植性、协同工作能力和可维护性,以及文档
编制的便利性指明了解决之道。
? 企业可以使用所选的中间件构建新的基于 MDA
的应用程序
? 保持公司业务正常运转的遗留应用程序
? 将新的中间件平台合并到 MDA 中
? ……
MDA原则
OMG 组织对于 MDA 的观点下有四个原则:
? 以一种定义良好的符号表示的模型是理解企业级方案系
统的基础。
? 系统的构建能够围绕着一系列模型通过使用在模型之间
的一系列转换被组织的,并且能被组织到一个分层的和
转换的体系架构框架中。
? 以一系列元模型来描述模型的一种正式的支持能够使在
模型中有意义的集成和转换变得容易,并且是通过工具
实现自动化的基础。
? 接受和广泛采纳基于模型的方法需要工业的标准提供开
放性个客户,并鼓励供应商之间的竞争。
MDA模型
? MDA的核心建立在 UML( Unified
Modeling Language,统一建模语
言),CWM( Common
Warehouse Meta-model,公共仓
库元模型),MOF( Meta-Object
Facility,元对象设施) 上。
? 目前已开发了多个核心模型,如:企
业计算(包括组件结构和事务交互 )、
实时计算(包括资源控制的特殊要求 )
等。
? 每个核心模型都独立于任何中间件平
台,表示所属类别中所有平台的共同
特性 。
MDA模型和驱动
? 模型在软件开发过程中扮演了非常重要的角色。在
MDA中,软件开发过程是由对软件系统的建模行为驱
动的
? MDA的 3种核心模型:
? 平台独立模型( PIM):具有高抽象层次、独立于
任何实现技术的模型。
? 平台相关模型( PSM):为某种特定实现技术量身
定做,让你用这种技术中可用的实现构造来描述系
统的模型。 PIM会被变换成一个或多个 PSM。
? 代码 Code:用源代码对系统的描述(规约)。每个
PSM都将被变换成代码。
MDA模型和驱动
PIM
PSM
Platform Independent Models
Platform Specific Models (PSM)
Mappings(映射), PIM <=> PSM
Code
MDA模型间的转换
? 右图指出
了三个特
定的被定
义的映射,
或者转换,
和一些用
来表示这
些映射的
标准来创
建 PSM 。
MDA的根本思想
—— 分离模型和实现
软件活动包含根本任务和次要任务
—— Frederick Brooks
? 分离模型与实现就是分离软件活动中的根
本任务与次要任务这两个关注面。分离后
使得分别关注根本任务和次要任务成为可
能。
MDA的根本思想
—— 分离模型和实现
? 将软件系统分成模型和实现两部分:模型是对系统
的描述,实现是利用特定技术在特定平台或环境中
对模型的解释。模型仅仅负责对系统的描述,与实
现技术无关。这是模型的实现技术无关性。
? 模型实现的两种方式
? 直接执行 — 就是使用动态执行引擎直接执行
? 模型变换 — 就是把模型变换为更容易执行的目
标语言表达的模型
模型与实现分离
—— 适应技术易变性
? 模型与实现分离后,能够很好的适应技术
易变性。由于实现往往高度依赖特定技术
和特定平台,当技术发生迁移时,只需针
对这种技术作相应的实现,编写相应的运
行平台或变换工具。所以,能够比较好的
应对实现技术发展带来的挑战。
模型与实现分离
—— 适应需求易变性
? 模型与实现分离后,应对需求的变更,就是调
整模型,然后重新实现即可。而重新实现的代
价:如果模型的实现是采用直接执行方式,则
不需做任何事情;如果采用模型变换方式,也
只需重新变换,然后发布实施即可。
? 模型分离后,能否适应需求易变性,关键是看
模型本身是否比较容易随需求而变。如果模型
本身不容易改变,则适应需求易变性就是空话。
MDA思想的合理性
MDA的核心思想是以模型为中心,将模型表达和运行实现
相分离。这种思想与软件的“根本任务和次要任务,是 一致。
根本任务:模型描述PIM
PSM
次要任务:运行实现
MDA软件开发生命周期
MDA开发实例( 1)
? 从 PIM开始,通
过准确无误的技
术细节,来描述
功能和行为
MDA开发实例( 2)
? 使用 MDA工具产
生 PIM到 PSM的
标准映射。部分
代码自动生成,
部分需要手写
MDA开发实例( 3)
? 使用 MDA工具
产生 PIM到 PSM
的标准映射。
部分代码需要
手写
MDA开发实例( 4)
? MDA工具为开
发者所选择的
调度技术生成
全部或大部分
代码
MDA开发实例( 5)
? MDA工具自动
发现在新平台
上重新集成的
模型
MDA开发实例( 6)
? 在企业内部及
企业之间,通
过公共应用模
型生成, 桥,
和集成应用
模型驱动开发 MDD
? 模型驱动开发的基础是模型和表达模型的
语言
? 模型的一个主要用途是消除开发过程中各
参与方之间的隔阂
? 对于模型驱动开发,建模语言代替了编程
语言,用建模语言来实现系统
? 模型驱动开发的现代工具提供了运行一个
(或部分)模型的能力
MDA与 CORBA
? OMG采用多种中间件平台的规范 。 CORBA技术具
有平台和语言的独立性, 经过检验的事务和安全的
天性, 这使得它仍然是从嵌入式系统到桌面系统,
再到 Internet应用的最佳选择 。 MDA的方向是使得
它与其他中间件平台更容易交互, 而且更加廉价 。
? CORBA 是 MDA新体系结构的基础 。 作为唯一的独
立于供应商和语言的中间件, 它是 MDA 上层结构
必不可少的重要组成部分 。 为了赋于这种上层结构
最大的灵活性, 在更高一层上实现重用, 我们必须
考虑完全按照建模的概念表达这种体系结构 。
MDA与中间件
? 每当一个新的 MDA规范或者应用程序被创建, 和其他
规范以及服务的互操作性已经包含在设计当中 。 在
MDA中, 每个服务, 工具和应用程序的的基本描述都
是一个平台无关的模型 。 在平台无关的模型环境中,
架构师可以指定应用程序到需要的服务, 工具以及其
他应用程序之间的连接, 并且将其作为模型的一部分 。
根据这些模型, MDA工具自动生成, 桥, 用于连接不
同中间平台的程序实现 。
? MDA将继续定义跨中间件的互操作工作, 而且将提供
工具以加速和自动化这一过程 。 这将会给用户带来好
处, 因为应用程序可以支持多种中间件平台 。
MDA与 UML
UML是使用 MDA技术的一把钥匙:
? 使用 MDA技术创建的所有应用程序都基于标准化
的, 平台独立的 UML模型 。 通过将这一通用的, 被
普遍接受的建模标准作为杠杆, MDA使得开发人
员可以创建能被轻便地访问, 天生具有良好的互
操作性的应用程序 。 而且这些应用程序能被嵌入
式系统, 桌面应用系统, 服务器, 大型机等广阔
领域的应用程序所访问, 也能够被跨 Internet访问,
具有广阔的应用前景 。
内容结束!