MDA模型驱动架构
模型驱动的体系架构MDA

模型驱动的体系架构MDA模型驱动的体系架构(Model-Driven Architecture,MDA)是一种软件开发方法论,旨在实现使用模型来驱动软件系统设计和开发的过程。
它提供了一种将系统的关注点从实现细节转移到概念模型层面的方法,从而提高了系统的可维护性、可扩展性和可重用性。
MDA的体系架构包括三个核心层次:计算独立(CIM)、平台独立(PIM)和平台相关(PSM)。
2. 平台独立模型(Platform Independent Model,PIM)是MDA的中间层模型,用于描述系统的业务逻辑和功能。
PIM是通过将CIM转化为与具体平台无关的模型,以便能够在不同平台上进行重用和扩展。
PIM通常使用统一建模语言(UML)或其他领域特定语言(DSL)进行描述,包括类图、时序图等。
PIM的设计重点是在保持系统功能的不变的同时,将业务逻辑和实现细节分离。
3. 平台相关模型(Platform Specific Model,PSM)是MDA的底层模型,用于描述系统在具体平台上的实现细节。
PSM是通过将PIM转化为特定平台的模型,以便具体实现系统。
PSM可以是特定编程语言、框架或平台的规范,如Java、NET、Eclipse等。
PSM的设计重点是在满足系统需求的同时,考虑特定平台的约束和限制。
MDA的核心思想是通过模型的转换和转化过程,实现从业务需求到具体实现的自动化生成。
MDA使用模型转换技术将CIM转化为PIM,然后将PIM转化为PSM,最终生成可执行的代码。
MDA的优势在于提高了系统的可维护性和可重用性。
通过将业务逻辑和实现细节分离,在需求变更或平台切换时可以更快地进行适应和修改。
同时,MDA的模型驱动方法使得可以在不同项目间共享和重用已验证的模型和模型库。
然而,MDA也存在一些挑战。
首先,准确和完整地捕捉业务需求和领域知识是一项复杂的任务,需要专业的分析和建模技能。
其次,模型转换过程可能会引入一些不一致和错误,导致最终系统的质量问题。
什么是MDA

1
MDA的优势3
0011 0010 1010 1101 0001 0100 1011
• 互操作性 PIM中生成的多个PSM之间可能存在一定的关系,在MDA中, 它们被称为桥接器(bridges)。由于PSM针对一个特定的目标平台 ,所以它们相互之间不能够直接通信。无论如何,我们需要将一 个平台的概念转换到另一个平台的相关概念,这就是我们常说的 互操作性。MDA解决这一问题的方法是,不光从PIM生成PSM,还生 成连接PSM的桥接器。
• 以一中定义良好的符号表示的模型是理解企业级方案 系统的基础。 • 系统的构建能够围绕着一系列模型通过使用在模型之 间的一系列转换被组织的,并且能被组织到一个分层 的和转换的体系架构框架中。 • 以一系列元模型来描述模型的一种正式的支持能够使 在模型中有意义的集成和转换变得容易,并且是通过 工具实现自动化的基础。 • 接受和广泛采纳基于模型的方法需要工业的标准提供 开放性给客户,并鼓励l-driven Architecture
0011 0010 1010 1101 0001 0100 1011
学号:MG0933025 姓名: 沈达宇
1
什么是MDA?
0011 0010 1010 1101 0001 0100 1011
• 模型驱动架构(Model Drive Architecture MDA)是 一个软件开发架构,是由对象管理组织OMG(Object Manage Group)提出的基于模型驱动的新方法学。 • MDA 帮助公司应付软件开发中层出不穷的新标准、新 技术带来的快速变化。MDA是OMG发起的,目的是通过 把系统描述背后的逻辑与它的具体实现相分离,保证 组织机构的信息系统能够适应新的硬件和软件平台。 MDA改进了应用程序的可移植性、互操作性和平台独立 性,提高了开发人员的工作效率。
软件架构师(20)-MDA与可执行UML

**********************************第1章引论*************************************◆模型驱动架构(Model Driven Architecture, MDA)通过下面二种方式改变了软件的重点:模型比代码更有价值—有关业务本质的知识资产被表示为模型,这些模型使得企业能够在适当的时候使用适当的技术平台来实现它。
模型将更精确,而不是高高在上的—所有业务相关的重要的知识都被获以并表达为模型。
模型不会随意分隔分析和设计。
◆当前的软件技术发展水平来看,它有那些多年的使用和考验的关键原则:根据主题(域)的划分,可以产生大的高内聚低耦合的“实质性的”组件。
将平台无关的行为与平台相关的行为分开,通过将“本质”模型和“实现”模型分开可以在一定程度上做到这一点。
基于模式的映射定义使得人们可以从平台无关模型(Platform Inependent Model, PIM)系统化地创建任意平台的平台相关模型。
这些映射既可以手工实现,也可以自动实现。
使用了抽象但语义严格的表示方法以后,xUML能够使模型可以被完整地精确地表达,从而实现可执行化。
这种可执行化的特点充许建模者客观地评价他们所建立的系统的正确性。
◆什么是可执行UML(xUML)?尽管UML规范在MDA过程中是必要的,但它不足以进行可执行建模。
认识到这一点后,UML中又是加入了动作语义进行增强,解决了UML很多歧义的问题,同时也为适当的UML模型元素增强了可执行为定义。
核心UML加上动作语义就称为xUML,和它就足够建立可执行的平台无关模型(Platform Inependent Model, PIM)了。
xUML=UML-语义较弱的元素+精确定义的动作语义。
◆UML与xUML的差别:UML规定了一个图形语言,使得系统可以通过一组不同类型的图式系统化地定义。
但是UML在这此图形的使用方法上很不正规。
MDA模型驱动介绍

MDA模型驱动介绍模型驱动体系架构(Model Driven Architecture, MDA)是由OMG 提出的新的软件方法学,被面向对象技术界预言为未来几年里最重要的软件方法学。
模型驱动体系架构(MDA)把建模语言用作一种编程语言而不仅仅是设计语言,并以一种全新的方式将IT技术的一系列新的趋势性技术整合到一起。
这些技术包括基于组件的开发、设计模式、中间件、说明性约束、抽象、多层系统、企业应用整合以及契约式设计等。
模型驱动体系架构(MDA)的出现,为如何提高软件开发效率,如何增强软件的可移植性、协同工作能力、可维护性,以及如何提高文档编制的便利性指明了解决之道。
MDA概述MDA是“模型驱动体系架构”(Model Driven Architecture)的缩写。
它是由OMG定义的一个软件开发框架。
其关键之处是,模型在软件开发过程中扮演了非常重要的角色。
在MDA中,软件开发过程是由对软件系统的建模行为驱动的。
MDA开发生命周期和传统的生命周期并没有很大的不同。
MDA的工件是形式化模型,也就是可以被计算机理解的模型。
下面列出的3种模型位于MDA的核心:· 平台独立模型(PIM):具有高抽象层次、独立于任何实现技术的模型。
· 平台相关模型(PSM):为某种特定实现技术量身定做,让你用这种技术中可用的实现构造来描述系统的模型。
PIM会被变换成一个或多个PSM。
· 代码:用源代码对系统的描述(规约)。
每个PSM都将被变换成代码。
传统上,从模型到模型的变换,或者从模型到代码的变换,主要是手工完成的。
与此相反,MDA变换总是由工具执行的,许多工具可以把PSM变换成代码,这并不令人惊奇。
MDA的创新之处是把PIM到PSM的变换也自动化了。
软件开发是什么Alistair Cockburn在他的Agile Software Development一书中归纳了业界对软件开发的看法:以C.A.R Hoare为代表的数学观、以Bertrand Meyer为代表的工程观、以很多程序员为代表的手工艺观,还有一些程序员则认为软件开发是神秘的创造行为。
MDA简介

PSM Code
传统软件开发过程
需求 • 文字 分析 • 图表和文字 底层 • 图表和文字 设计
理论上的迭代过程
编码
• 代码
程序员捷径
测试 • 代码
部署
传统开发过程带来的问题
生产效率问题:重视代码、维护软件时有问题 可移植性:技术更新换代快 互操作性问题:前端系统和后端系统 维护与文档问题:后期补文档
构成系统的部件、连接件及其约 束的规约 – MDA的主要目标:
计、构建、部署、维护等各开 发活动
– MDA起源于分离系统规约和 平台实现的思想
Portability(可移植性), interoperability(互通性), Reusability(可重用性)
什么是MDA?
Model Driven Architecture(MDA)是对象管理组织OMG提出的一个 新的程序设计方法学。 它是一种基于Unified Modeling Language(UML)以及其他工业标准 的框架,支持软件设计和模型的可视化、存储和交换。 MDA把建模语言用作一种编程语言而不仅仅是设计语言。 MDA是一种新的用于编写规范(specifications)和开发应用程序的途径, 它基于平台无关的模型(PIM:platform-independent model)。
MDA模型
MDA的核心建立在 UML(Unified Modeling Language,统一建 模语言)、CWM(Common Warehouse Meta-model,公共仓 库元模型)、MOF(Meta-Object Facility,元对象设施) 上。 目前已开发了多个核心模型,如:企业计算(包括组件结构和事务 交互 )、实时计算(包括资源控制的特殊要求 )等。 每个核心模型都独立于任何中间件平台,表示所属类别中所有平台 的共同特性 。
MDA模型驱动架构

MDA模型驱动架构MDA(Model-Driven Architecture)是一种软件开发的方法或者框架,它将系统开发的焦点从代码编写转移到了模型的创建和转换上。
MDA的核心思想是将系统的抽象描述转换为具体实现代码的过程自动化,并且强调在不同开发阶段中的模型转换和模型分析。
在MDA中,开发者首先创建CIM,它是对问题域进行抽象,以便更好地理解和定义系统需求。
这个模型与具体实现无关,它只关注问题域的概念和规则。
接下来,开发者使用模型转换器将CIM转换为PIM。
PIM是CIM的具体实现,通常用于描述系统的功能、业务流程等。
PIM与实际的技术和平台无关,因此可以用于多个平台上的开发。
最后,开发者使用另一个模型转换器将PIM转换为PSM,PSM是与特定平台相关的模型,它描述了如何将PIM映射到实际的技术平台上。
PSM通常是使用特定的编程语言、框架或技术进行描述的,因此它是与特定平台的实现相关的。
使用MDA的好处在于解耦开发过程和具体实现。
通过将系统开发分为不同的模型层次,可以实现问题域和技术实现之间的分离,从而降低了系统的复杂性和维护成本。
此外,MDA还提供了模型转换和重用的机制,可以减少重复劳动,并促进在不同平台上的代码重用。
然而,MDA也存在一些挑战和限制。
首先,建立和维护模型需要额外的开发成本和时间。
其次,模型转换可能会引入错误和缺陷,因为在转换过程中可能会丢失一些信息或者忽略一些细节。
此外,MDA一般用于大型系统的开发,对于小规模项目来说,可能过于复杂和冗余。
总的来说,MDA是一种具有潜力的软件开发方法,它通过模型的创建和转换来实现系统的开发。
它可以提高系统的可维护性和复用性,并促进在不同平台上的代码重用。
然而,MDA也面临着一些挑战和限制,需要开发者在实践中权衡其利弊,并根据具体项目的需求来决定是否使用MDA。
mda建库原理

标题:MDA建库原理引言:MDA(Model Driven Architecture,模型驱动架构)是一种软件开发方法论,它提倡以模型为核心驱动软件系统的开发过程。
在软件开发领域,建库(Code Generation)是MDA的核心概念之一,本文将详细介绍MDA建库原理。
一、MDA概述1.1 MDA的定义MDA是由OMG(Object Management Group)提出的一种软件开发方法论,它将软件开发过程从代码层面抽象到模型层面。
MDA通过使用模型来描述问题域和解决方案,实现了从模型生成代码的自动化过程。
1.2 MDA的核心概念- 平台无关性(Platform Independence):模型应该与特定的技术平台无关,以便可以在不同的平台上重用。
- 可追溯性(Traceability):模型应该能够和源代码之间建立起双向的关联,从而可以跟踪模型和代码之间的变化。
- 自动化构建(Automation):通过模型生成代码的自动化过程,减少了手工编写代码的工作量,提高了开发效率。
二、MDA建库的基本原理2.1 建库的概念建库是将模型转换为可执行代码的过程,也称为模型到代码的转换。
它是MDA的核心环节之一,通过自动化的方式将抽象的模型转化为具体的代码。
2.2 建库的基本过程- 模型定义(Model Definition):首先需要定义模型,包括问题域模型和解决方案模型。
问题域模型描述了实际问题的概念和关系,解决方案模型描述了如何解决这些问题。
- 模型转换(Model Transformation):将模型转换为中间表示形式,通常是一种称为PIM(Platform Independent Model)的模型。
- 平台特定模型转换(Platform Specific Model Transformation):根据目标平台的要求,将PIM模型转换为PSM(Platform Specific Model)模型。
MDA白皮书-模型驱动开发和UML+2.0

白皮书模型驱动开发和UML 2.0传统编程方式的终结?本文档包含Telelogic AB专有信息。
未经Telelogic AB书面许可,不得使用本文档内的任何信息,不得复印、影印本文档的任何部分。
前言“模型驱动开发”——体会一下这几个词。
它们说出了这个不断变化的工业中一个新的改变。
这里不是说一种革命,而是一种缓慢的变化,但是肯定会渗透到我们开发系统的方式中。
这种推动将降低代码的重要性,并且专注于一些开发中的真正事情:最终的应用程序被期望怎样工作,并确保你能够根据客户的需求可靠地建立起它来。
模型驱动开发是更伟大视景MDA中的一部分。
MDA是模型驱动体系架构(Model-Dri ven Architecture)的简称,由对象管理组织OMG(Object Management Group)所驱动。
M DA表示了一种模型驱动开发方法的概念框架。
然而,尽管完整的MDA还没有成为现实,模型驱动开发现在已成为可能。
实际上,它已以较低级的形式存在了较长一段时间,所以我们并不是在做某种新的东西(当然,除非你在听某些市场人员的宣传)。
没有魔法如果模型驱动开发这么好的话,为什么不是每个人立刻加入到这个潮流中来呢?首先,模型驱动开发不是一个银子弹,能神奇地解决你所有的问题。
总有某人需要去实现系统的功能,并且还找不到任何工具来完成这一点。
所有你能发现的工具只是使这项工作更容易和直接一些。
第二,采用模型驱动开发,并不只是在开发项目的过程中更换一种工具。
它还必须和已根深蒂固的开发过程结合起来(如果没有的话,你就可以开始使用模型驱动开发了;否则你就只能改善当前的情况),但实际上更重要的是,你还会担心它对现有应用程序的影响。
决定改用基于模型的方法前确实需要有一些仔细的考虑,并且,一般说来,为了不影响当前的工作,你只会在新项目中改变开发方法。
第三,你还需要获得那些使用工具的人们的支持(你需要一些工具来应用模型驱动开发)。
开发人员常会认为“模型驱动开发不是编程”而回避它,并且当心他们的工作难于被接受。
模型驱动架构MDA浅述

模型驱动架构MDA浅述模型驱动架构(MDA,Model Driven Architecture)浅述袁峰 2007年7月10日前言西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止。
前言西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止。
在《应用MDA》一书中,作者Frankel将IT人比作现代版的西西弗斯,面对日新月异层出不穷的技术平台,不可避免地不断重复一些工作。
理想的MDAer,试图阻止这一悲剧的继续发生。
今天,我们通过分析MDA的概念,了解其内涵,看看MDA是否有希望完成这个艰巨的任务。
定义MDA是由OMG(Object Management Group,国际对象管理集团)[1]于2001年提出来的。
其核心思想是抽象出与实现技术无关、完整描述业务功能的核心平台无关模型(PIM,Platform Independent Model),然后针对不同实现技术制定多个转换规则,通过这些转换规则及辅助工具将PIM 转换成与具体实现技术相关的平台相关模型(PSM,Platform Specific Model),最后将经过充实的PSM 转换成代码。
通过PIM和PSM,MDA的目的是分离业务建模与底层平台技术,以保护建模的成果不受技术变迁的影响。
图1 MDA结构示意图[1]图1为MDA的结构示意图。
最内环是MDA的核心技术:MOF(Meta Object Facility,元对象设施)、CWM(Common Warehouse Metamodel,公共数据仓库元模型)和UML。
MDA的主要工作就是要把基于这些技术建立的PIM转换到不同的中间件平台上,得到对应的PSM。
中间环上给出的是目前主要针对的实现平台:CORBA、XML、JAVA、Web Services和.NET。
mda-模型驱动体系结构 PPT

MDA应用案例
内容
MDA简介 MDA开发过程 简单的MDA框架 MDA应用案例 完整的MDA框架 OMG相关标准
MDA开发过程
MDA开发过程
传统开发过程带来的问题
– – – – 生产效率问题:重视代码,维护软件时有问题 可移植性:技术更新换代快 互操作性问题:前端系统和后端系统 维护与文档问题:后期补文档
基本概念
Computation Independent Model: 使用计算无关视 点建立的系统模型
– 被称为领域模型或业务人员的词汇表 – 其用户是业务人员,不了解用以实现需求的建模技术 – 在业务专家和技术专家,业务需求和设计,构建方法 之间建立桥梁
Platform Independent Model: 使用平台无关视点建 立的系统模型
MDA简介
标准化领域模型
– OMG认识到领域模型的重要性,成立了 Domain TaskForce,对特定领域市场所提供的 服务和设施进行标准化 – 包括面向领域的平台独立模型,至少一个平台 相关模型,接口描述文件
MDA简介
MDA对企业计算的主要影响
再次提升编程环境的抽象级别 使用形式化模型驱动代码生成器 基于不同规约语言的元数据集成 在生成器中封装了设计模式的知识 形成按需生产构件的方式 使用DBC来驱动断言检测,异常处理和测试框 架的生成 – 形成了"The Global Information Appliance" – – – – – –
模型变换
基于元模型的变换 基于类型的模型变换
模型变换
基于标记的模型变换 使用模式的模型变换
模型变换
模型合并 使用附加信息的模型变换
模型变换
对平台的理解
模型驱动的体系架构MDA

模型驱动的体系架构MDA很多组织已经开始对模型驱动的体系架构(MDA)进行关注,MDA 是一种应用系统设计和实现的方法。
对于几个原因来说这都是非常积极的发展。
MDA 鼓励在软件的开发过程中有效的使用系统的模型,并且它支持创建类似系统的最佳实践的重用。
所谓由对象管理组织(OMG)定义的标准,MDA 是一种组织和管理被自动化工具支持的企业体系架构和用于定义模型和推动不同模型类型之间的转换的服务的方法。
当被 OMG 定义的 MDA 标准和用于创建和进化企业级软件系统的术语在业界被广泛的引用时,仅仅到目前为止, OMG 和它的成员,包括 IBM Rational ,已经能够在 MDA 意味着什么、MDA 将向哪里发展、MDA 的哪些方面对于今天的技术是可能的和如何在实践中利用 MDA 上提供清晰的指导。
有效的企业软件开发今天开发企业级的应用要求一种软件架构的方法,这种方法应该能够以一种灵活的方式帮助架构师来发展他们的架构。
这种方法应该允许在及时的实现业务功能的新的能力的情况下重用已有的劳动成果,甚至是当目标基础架构本身在一直的演进。
两个重要的思想现在被认为是应对这种挑战的中心:• 面向服务的体系架构(SOA)。
企业解决方案能够被视作通过良好的说明定义了他们的服务接口契约连接的服务联合。
结果的系统设计通常被称作面向服务的体系架构(SOAs)。
通过将一个系统组织成为被封装好的服务集合,这些服务可以通过他们定义的服务接口被操作,系统的灵活性被大大的增强了。
现在很多组织用一系列的服务和服务之间的相互连接表示他们的解决方案。
• 软件的产品线。
通常,在一个组织开发和维护的系统中,存在着大量的可公用的部分。
从捕获核心业务过程和领域概念的标准领域模型,到开发人员在代码中使用的实现设计的实现细节方案,我们在企业的软件项目的每一个级别上看到了重用的方法。
当模式能够被经验丰富的从业者开发出来并在跨越组织的范围内传播时,软件开发组织将获得大量的效率。
DSM领域定义建模和MDA模型驱动架构分析

DSM领域定义建模和MDA模型驱动架构分析Domain-Specific ModelingandModel Driven Architecture DSM(领域定义建模)和MDA(模型驱动架构)模型在软件开发中的角色当今信息系统的开发越来越复杂,而且所涉及到的领域也越来越广,开发者必须掌握许多不同的技术,包括流行的面向对象技术,XML,脚本语言,接口定义语言,过程定义语言,数据库定义和查询等等。
要把来自于问题领域的需求转换成解决方案需要对许多架构和协议的深刻理解。
再者,最终用户常常期望结果是高运行效率的,易用的,易扩展的,而且对于不可知且不可靠的网络连接是安全的,这可是件苦差事。
在软件开发之外的一些领域,例如电子产品(电视机,HiFi音响,照相机)等等,我们可以看到低成本和高可靠性的情况。
在过去的几十年里,制造行业一直采用这样的流程:通过一连串复杂的步骤来制造一台电视机或汽车,其中有很多步骤是完全自动化的。
我们会喜欢使用相同的原理来构筑软件,不同的是我们没有开发出能够允许有效分离软件中关注点的软件说明语言。
尽管我们使用不同的程序开发语言来书写应用逻辑,来完成不同的开发任务。
例如:使用XML在应用组件中传递数据,使用SQL存取数据,使用WSDL 来说明面向Web应用的组件的接口等等,但是它们中没有一个直接针对最终用户所面对的业务问题。
本文将要介绍的软件构筑技术是domain-specific languages(领域定义语言,简称DSL)的开发。
DSL被设计为直接面向它所要解决的问题领域。
在某种程度上,它能够代替编码,数据交换,配置等工作,我们常把这类语言称为建模语言。
我们使用这些语言来针对问题领域进行建模。
模型里的每个元素都映射到现实领域中的一个概念,很多年以来,模型对于定义IT系统如何来保存数据一直是很重要的,现在,模型的应用更广泛,例如对业务过程建模,服务的部署,数据中心等等。
模型受欢迎是因为它能够很好地表述问题从而避免陷入技术细节中。
mda综述文档

MDA新一代软件开发方法的发展研究SC11023006 贾格 jg4012@1 MDA综述1.1 OMG/MDA体系结构简介MDA指模型驱动的架构(Model Driven Arichitecture),它是一种对业务逻辑建立抽象模型,然后从抽象模型自动产生最终的完备的应用程序的方法论。
MDA 致力于提高软件开发行为的抽象级别,倡导将业务逻辑定义为精确的高层抽象模型,让开发人员从繁琐的重复的低级劳动中解脱出来,去更多的关注业务逻辑层面。
它代表了OMG组织定义的互操作性规范的一个革命性进步。
MDA将软件系统的模型分为平台无关模型PIM(plat-form-independent model)和平台相关模型PSM(platform-specific model),同时又能通过转换规则将他们统一起来,以这样的方式来解决需求变更所带来的问题。
平台无关模型PIM是对工作流程的高层次抽象,其中不包括与实现技术相关的信息;平台相关模型PSM 是跟特定平台相关的模型。
业务逻辑PIMPSMCode自然语言MDA模型遵循MDA的开发过程如上图所示,最上层的是业务逻辑,首先要使用平台无关的建模语言,来针对业务过程中搭建平台无关的模型PIM,然后自动将PIM 转换生成平台相关的模型PSM,之后根据特定平台和实现语言的映射规则,自动生成应用程序代码和测试框架。
MDA的体系架构,其核心是OMG的一些列标准:a.UML(Unified Modeling Language)---统一建模语言:UML被MDA用来对应用建模,它是MDA的基础。
b.MOF(Meta Object Facility)---元对象设施:它是MDA的核心部分。
和以往进行数据格式统一管理的思路不同,MDA允许使用不同格式(不同数据描述)的数据同时存在,并为这些描述这些数据的语言提供了统一的定义语言(即MOF)。
它是比UML更高层次的抽象,可以描述UML的扩展或者其他未来可能出现的类UML的建模语言,这体现了OMG的长远眼光。
DSM领域定义建模和MDA模型驱动架构分析

DSM领域定义建模和MDA模型驱动架构分析使用DSM领域定义建模的好处是能够将软件系统的开发过程与特定领域的领域专家紧密结合,使得开发人员能够更好地理解和满足特定领域的需求。
此外,DSM还能够提高开发效率,减少错误,并且能够更容易地维护和演化系统。
MDA模型驱动架构是一种基于模型的软件开发方法,其核心思想是通过建立和使用各种级别的模型来指导软件系统的开发过程。
MDA的核心概念包括平台无关模型(PIM),平台特定模型(PSM)和模型转换。
在MDA中,PIM是一个与特定平台无关的高级模型,它描述了软件系统的功能,性能和约束等方面的需求。
PIM通常使用领域特定语言(DSL)表示。
而PSM是一个与特定平台相关的模型,它描述了将PIM转化为可以在具体平台上实现的执行代码的方式。
MDA的模型转换是指将PIM转换为一种或多种PSM的过程。
模型转换可以通过机器可读的转换规则或者手工转换来实现。
模型转换的目标是根据特定平台的规范和要求,生成可执行代码,以实现软件系统。
MDA的优势在于能够将系统需求和设计的详细描述与实际代码的实现解耦。
通过使用模型来指导开发过程,可以提高开发效率,减少错误,并促进系统的可维护性和可演化性。
综上所述,DSM领域定义建模和MDA模型驱动架构是两种重要的软件工程方法。
DSM通过建立特定领域的建模语言和工具,来解决特定领域的问题。
而MDA则通过建立和使用各种级别的模型,来指导软件系统的开发过程。
它们都能够提高软件开发的效率和质量,并且能够更好地满足特定领域的需求。
软件开发中的模型驱动架构研究与应用分析

软件开发中的模型驱动架构研究与应用分析引言随着信息技术的快速发展,软件开发正逐渐成为推动经济社会发展的重要力量。
在软件开发过程中,模型驱动架构(Model-Driven Architecture,简称MDA)作为一种重要的开发模式出现并得到广泛应用。
本文将对软件开发中的模型驱动架构进行深入研究与应用分析。
一、模型驱动架构概述1.1 MDA的概念与特点模型驱动架构是一种基于模型的软件开发方法,它将软件系统的设计、实现和部署过程分为不同的层次,并以模型作为开发的核心。
MDA的特点包括:模型可重用性高、开发过程易于管理、能够提高开发效率、支持需求变更。
1.2 MDA的基本框架MDA的基本框架包括三层:CIM(Computational-Independent Model)、PIM(Platform-Independent Model)和PSM(Platform-Specific Model)。
CIM层描述了软件系统的业务需求和功能,PIM层描述了系统独立于任何特定平台的逻辑模型,PSM层描述了系统在特定平台上的实现方式。
二、模型驱动架构的研究与发展2.1 模型驱动架构的起源MDA起源于OMG(Object Management Group)于2001年提出的一种软件开发方法,之后得到了广泛的关注和应用。
MDA的核心思想是将系统的抽象模型与具体实现相隔离,从而提高系统的可维护性和可扩展性。
2.2 模型驱动架构的核心技术MDA的核心技术包括模型的定义与描述语言、模型的变换与转换技术、模型的验证与验证技术。
其中,模型的定义与描述语言是MDA的基础,例如UML(Unified Modeling Language)是一种常用的模型描述语言。
2.3 模型驱动架构的研究热点目前,对于模型驱动架构的研究主要集中在以下几个方面:模型的自动化生成、模型的持续化演化、模型的仿真与验证、模型的复用与协作等。
这些研究热点将进一步推动MDA的发展与应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MDA百科内容来自于:中科永联高级技术培训中心()MDA(Model Driven Architecture)是模型驱动架构,它是由OMG定义的一个软件开发框架。
它是一种基于UML以及其他工业标准的框架,支持软件设计和模型的可视化、存储和交换。
和UML相比,MDA能够创建出机器可读和高度抽象的模型,这些模型独立于实现技术,以标准化的方式储存。
MDA把建模语言用作一种编程语言而不仅仅是设计语言。
MDA的关键之处是模型在软件开发中扮演了非常重要的角色。
MDA源自于众所周知的把系统操作的规范从系统利用底层平台能力的方式细节中分离出来的思想,MDA提供了一种途径(通过相关的工具)来规范化一个平台独立的系统、规范化平台、为系统选择一个特定的实现平台,并且把系统规范转换到特定的实现平台。
MDA的三个主要目标是:通过架构性的分离来实现轻便性、互操作性和可重用性。
模型驱动架构(MDA)是OMG组织近年来一直热炒的一个新的技术体系,同时也是众多搞软件模型研究人员的一个新热点。
MDA(模型驱动)核心的思路是希望通过对商业模型(比如企业信息化或建筑领域的解决方案)的领域研究。
进而提炼出一个相对核心的领域模型,同时抽象出一个PIM(平台无关模型)。
之后根据不同的开发平台(例如.net或J2EE),应用平台(windows或unix)形成相应的PSM(平台相关模型)。
依照相应的工具,例如ArcStyler可以完整地生成相应的代码和软件系统。
当然这里只是罗列出一个大致的思路和方法。
1 MDA理论还处在一个探索期,很多理论和方法并不成熟,当然无从谈起有成熟的工具,从目前的趋势而言,从理论到实际的工具都离OMG组织所提出的预想有较大距离,至少还需要数年的努力才能成型。
2目前无论是国外的开源组织还是国内的一些组织对MDA都只是处在一个草创阶段,很多人所谓的应用MDA 其实都只是在MDA的体系中作一个最初的探索和尝试。
例如ORM就是在一定层次上实现MDA 在数据库应用方面的探索,但也只是解决了一个实体模型映射的问题。
前几天一个面试人员用ArcStyler4.X 做了一个银行POS系统的应用模型,生成了一点还需要修改的框架代码。
就告诉我说他已经掌握了MDA,斯等水准真是让我汗颜!佩服!3 MDA的第一个热点可能是桥接器,而在MDA领域中,映射是个很重要的点,而转换和交互都只是在这个点上的延伸。
4 目前而言,最有可能在MDA体系中得以实现的语言是JAVA。
5 MDA的核心是PIM,因为他是最抽象和协同性最高的。
同时就当前形势而言,PIM 也是一个瓶颈!同时就目前的UML2.0(从OMG那里得到最新的)而言,还不足以作为建立整个MDA体系的语言。
同时对于MOF中的一些定义似乎还有提升的必要。
因为对于整个体系而言,MOF应该更多的作为一个标准,只有在标准成熟的前提下,才有可能产生正确的映射规则。
6 等到MDA风光无限的那天,会使一部分程序员失业,但不会是全部,起码MDA工具要有人做,因为一个MDA工具不足以应付所有的领域。
这就好比没有一个财务系统能适应所有的企业一样。
因为各个领域的标准化不同。
一、MDA(模型驱动架构)背景MDA目前在以下领域得到了应用:*银行业*保险业*公共企业(特别在金融管理领域)*嵌入式系统*后勤保障系统您将会看到,MDA确在其中起到了作用。
MDA的流程MDA的实现主要集中在以下3个步骤:1 首先,您用UML对您的应用领域进行高度抽象的建模,这个模型和实现它的技术(或者底层技术)完全没有关系。
这个模型我们称之为平台无关模型(PIM)。
2 然后,PIM将被转换为一个或多个平台相关模型(PSM)。
这个翻译的过程一般是自动实现的。
PSM将用一个特定的实现技术来描述您的系统。
它将用到这种技术所提供的种种架构,比如EJB, 数据库模型,COM组件等等。
3 最后,PSM将被翻译成源代码。
因为每个PSM已经完全依靠某种特定的技术,这个步骤一般是比较简单的。
MDA流程中最难的一步,是从PIM生成一个PSM。
它要求您对您要应用的基础技术具有丰富且巩固的知识,另一方面,源模型(PIM)必须具备自动生成PSM所要求的足够信息量。
通过模板生成:MDA-light?!在MDA的实际应用当中,一个较容易的实现是通过模板(我们称之为MDA-light)。
这样,平台相关模型这一步可以说是被跳过了,您可以直接从高度抽象的PIM生成源代码。
您将继续在MDA-light的基础上进行真正意义的编程:您必须在源代码,而不是UML,编写细致的应用逻辑。
使用MDA的前提* 业界(甚至是整个世界)一个被广泛接受的事实是:只有变化是永恒的。
技术永远在革新。
这在中间件领域尤其明显,当然还有数据库技术,操作系统,甚至是编程语言都经常变化。
这些技术明显比应用领域的基本概念要变化的快。
* 如果您在某一特定的应用领域工作,在这个领域中的项目都具有一定的相似性。
整个应用程序族或者不同的项目都属于同一个应用领域,那么,MDA或者生成流程将特别适合于您。
MDA的优点* 您对建模的投资将更加持久的有效--远长于您目前实现它所应用的技术。
这将更有利于保护您的投资。
* 您具有了技术上的灵活性。
* 您将不再受技术或应用所具有的不同变化周期的影响--在MDA的帮助下,您可以中立的保持两方面的多样性。
MDA的缺点* MDA意味着更多的"组装"而不是"开发"--在为一个应用建立PIM的时候,您基本上没有技术上的周旋空间。
这对于今天的很多开发人员来说,还是难以想象的。
* 软件开发的创造性在一定程度上减弱了。
开发人员常常觉得,就一种新技术展开争论,在技术的前沿工作,是十分吸引人的。
可是在MDA流程下,大量的工作是建立模型,这和具体的技术相距甚远,但符合OMG的建议。
* 潜在的不成熟性。
UML2.0还在幼年时代。
MDA工具出现的时间也相对很短。
这里还隐藏了很多风险。
MDA流程和生成开发中有待解决的问题* 数据和应用程序的移植:目前在商业领域经常需要面对的问题是,大量的数据和应用程序如何向新的,MDA为基础的系统中移植。
纯粹的MDA流程将把数据模型和数据库表结构看成是技术细节。
它们不应该对平台无关模型(PIM)层产生任何影响--那么,您的MDA工具或生成器也负责生成数据库脚本吗?* 软件维护:编制不同的发行版本,补丁或者升级,是对目前正在运行的程序进行维护的重要组成部分。
MDA怎么处理这些问题呢?每次进行一次全新的安装?* 投资报酬率(Return-on-Investment):从什么样的环境和系统开始计算?从应用MDA的第二个项目?还是从第五个开始?* 购买软件架构还是自主开发?* 生成器和相关工具造成了对其生产商的依赖--这种对生产商的依赖是我们以往一直极力避免的。
* 企业应用整合(EAI):高度的抽象,听起来不错--但是对于已经在运转的应用系统,怎么得到这种抽象呢?您可以看到--潜在很多实际问题(其回答都具有重要的意义)。
这些问题正是我们创立openMDA的原因:在很多项目当中,某些以上的问题已经得到了实验性的回答,您(和我们)都将从中获益!二、MDA的软件开发周期在MDA中软件开发过程是由软件系统的建模行为驱动的。
下面是MDA的软件开发周期:(图)MDAMDA生命周期和传统生命周期没有大的不同,主要的区别在于开发过程创建的工件,包括PIM(Platform Independent Model,平台无关模型)、PSM(Platform specific Model,平台相关模型)和代码。
PIM是具有高抽象层次、独立任何实现技术的模型。
PIM 被转换为一个或多个PSM。
PSM是为某种特定实现技术量身定做。
例如,EJB PSM是用EJB结构表达的系统模型。
开发的最后一步是把每个PSM变化为代码,PSM同应用技术密切相关。
传统的开发过程从模型到模型的变换,或者从模型到代码的变换是手工完成的。
但是MDA的变换都是由工具自动完成的。
从PIM到PSM,再从PSM到代码都可以由工具实现。
PIM, PSM,和Code 模型被作为软件开发生命周期中的设计工件,在传统的开发方式中是文档和图表。
重要的是,它们代表了对系统不同层次的抽象,从不同的视角来看待我们的系统,将高层次的PIM 转换到PSM 的能力提升了抽象的层次。
能够使得开发人员更加清晰地了解系统的整个架构,而不会被具体的实现技术所“污染”,同时对于复杂系统,也减少了开发人员的工作量。
MDA的出现,为提高软件开发效率,增强软件的可移植性、协同工作能力和可维护性,以及文档编制的便利性指明了解决之道。
MDA被面向对象技术界预言为未来两年里最重要的方法学。
当今建模的主要问题在于,对于很多企业来说它只是纸面上的练习。
这就造成了模型和代码不同步的问题,代码会被不断修改,而模型不会被更新,这样模型就失去了意义。
弥补建模和开发之间的鸿沟的关键就在于将建模变为开发的一个必不可少的部分。
MDA 是模型驱动开发的框架,MDA 的愿景是定义一种描述和创建系统的新的途径。
MDA 使得UML 的用途走得更远,而不仅仅是美丽的图画。
很多专家预言MDA 有可能会带领我们进入软件开发的另一个黄金时代。
三、MDA框架MDA 将软件系统的模型分离为平台无关模型PIM 和特定平台模型PSM,同时又能通过转换规则将它们统一起来,以这样的方式试图去摆脱需求变更所带来的困境。
平台无关模型PIM 是对系统高层次的抽象,其中不包括任何与实现技术相关的信息;特定平台模型PSM是特定平台相关的模型。
在MDA 框架中,首先使用平台无关的建模语言来搭建平台无关的模型PIM,然后根据特定平台和实现语言的映射规则,将PIM 转换以生成平台相关的模型PSM,最终生成应用程序代码和测试框架。
MDA框架的“建筑材料”包括:高层次模型;一种或多种标准、精确定义的语言,用来编写高层次模型;如何把PIM变换到PSM的定义;编写这些定义的语言,这种语言能够被变换工具执行;能够执行变换定义的工具;能够执行PSM到代码的变换工具。
上图是MDA的框架,它的主要元素有模型、PIM、PSM、语言、变换、变换定义、以及变换工具。
MDA 是一个开放的,中立于软件供应商的架构,它广阔地支持不同的应用领域和技术平台,能够成为应用领域和具体技术平台之间的杠杆。
在MDA 开发途径中,PIM 代表对需求的建模,PSM 代表应用具体技术后的模型,这使得MDA 成为需求和技术之间的杠杆;它们各自的改变都可以是相互独立的,不会造成商业逻辑和实现技术的紧密藕合,同时MDA 又可以通过转换来弥补它们之间的鸿沟,从而保护我们的投资。
MDA 开发途径使得我们的系统能够灵活地被实现、集成、维护和测试,系统的轻便性、互操作性和可重用性都是可以长期保持的,能够应对未来的变化。