基于模型驱动的软件开发方法
模型驱动的软件体系结构
统一建模语言 (Uniform Modeling Language, UML)
•以面向对象图的方式来描述任何类型的系统,具有很宽的 应用领域。 •其中最常用的是建立软件系统的模型,但它同样可以用于 描述非软件领域的系统,如机械系统、企业机构或业务过 程,以及处理复杂数据的信息系统、具有实时要求的工业 系统或工业过程等。 •总之,UML是一个通用的标准建模语言,可以对任何具有 静态结构和动态行为的系统进行建模。
模型驱动的软件体系结构
UML的静态建模机制
•用例图(Use case diagram) •类图(Class diagram) •对象图(Object diagram ) •包(Package) •构件图(Com)
模型驱动的软件体系结构
模型驱动的软件体系结构
模型驱动的软件开发模式
与传统开发模式的不同: •元模型和模型映射技术共享: 元 模 型 和 模 型 映 射 技 术 实际上陷含了特定领域所固有的知识。在同一个领域 的应用中,都可以共享这些元模型和模型映射技术。 •模型重用:软件重用从组件的重用扩展到模型的重用。 这是软件重用的大发展。首先,组件重用有平台的限 制,而模型的重用则脱离了这个限制;其次,模型由 于它的多层次性,使得软件的重用可以在任意一个层 次上,这样就可以最大限度地重用现有成果。
模型驱动的特点:模型的层级性
诺贝尔奖获得者赫伯特 A. 西蒙(Harbert A.Simen)曾论述到 :“ 要构造一门关于复杂系统的比较正规的理论,有一条 路就是求助于层级理论 …… 我们可以期望,在一个复杂性 必然是从简单性进化而来的世界中,复杂系统是层级结构 的”
系统A 系统B 系统C
…
系统Z
什么是模型驱动
面向功能的软件开发技术
输入 加工处理 输出
Pascal之父、结构化程序设计的先驱Niklaus Wirth最著名的一本书 ,书名叫作《算法 + 数据结构 = 程序》 程序是计算机指令的某种组合,控制计算机的工作流程,完 成一定的逻辑功能,以实现某种任务。 算法是程序的逻辑抽象,是解决某类客观问题的数学过程。 数据结构是客观事物自身所具有的结构特点(即逻辑结构) 在计算机中的具体实现(即物理结构),是计算机存储、组织数 据的方式。 软件的实现是针对数据编程的。
模型驱动的软件体系结构
模型驱动的软件开发模式
与传统开发模式的不同: •专用的元模型和模型映射技术:对于不同的领域和视角 ,可以建立起专门的元模型。采用专用的元模型建模 比使用单一元模型在准确性和完整性上有很大的提高 ,开发成本也会随之降低。而专用的模型映射工具可 以将模型映射中一些固有的范式总结成自动的分析和 处理工具,从而大大提高模型映射的质量和效率。
基于模型驱动的软件开发方法
文必龙
基于模型驱动的软件开发方法
什么是模型驱动 模型驱动的软件体系结构 模型驱动的现状 我们在做什么
什么是模型驱动
软件开发技术的发展历程 •面向功能的软件开发技术
•面向处理的 •面向函数的 •面向模块的 •面向结构的 •面向数据的
•面向对象的软件开发技术 •面向模型的软件开发技术
模型驱动的软件体系结构
MDA
模型驱动的软件体系结构
MDA
MDA的好处: •分离业务功能分析设计的制品与实现技术之间紧耦合的关系 ,从而最小化技术变化对系统的影响。
•MDA使得应用模型与领域模型在整个软件生命周期中得到 了复用
模型驱动的软件体系结构
广义的模型驱动
•为了实现系统的目标,将系统分为若干个层级,在每一个层 级上通过模型描述该层级上的实体,建立不同层级上模型之 间的映射关系。人工或计算机根据模型间的映射关系,可以 完成从源始模型到目标模型实例的变换,从而达到系统运行 的目标。 •模型可以是计算机领域的,也可以是非计算机领域的。 •建模过程就是从现实世界到计算机世界的一种映射。 •模型的驱动过程可以是人工的,也可以是自动的或半自动的 。
UML的动态建模机制
•状态图(State Diagram) •顺序图(Sequence Diagram) •合作图(Collaboration Diagram) •活动图(Activity Diagram)
模型驱动的软件体系结构
UML的局限性及改进方向
对建筑工程来说,工程师一般都有多年的经验并且对所用的各 种工程符号了如指掌,而UML的设计可能在纸上画出来看着很好 ,真正编程时却会发现很多问题。这是因为建筑工程的模型接近 于现实,而UML的设计却在另外一个世界进行。
模型驱动的软件体系结构
模型驱动的软件开发模式
与传统开发模式的不同: •空间失配问题:从计算机软件诞生的那一天起,软件开 发者就不得不同时在问题空间和解空间进行工作。这 两种空间的异构性是使软件质量难以得到保证的一个 重要原因。而在MDA的开发模式中,问题空间和解空间 中间的鸿沟被众多的元模型填平了。单一的问题空间 和解空间被多个相对的问题空间和解空间所代替。
模型驱动的软件体系结构
UML适用于系统开发过程中的不同阶段
需求定义阶段:可以用用况来捕获用户需求。通过用况建模,描述 外部角色及其对系统的功能要求。 分析阶段:用UML类图来描述问题域中的主要概念和机制。在分析 阶段,只对问题域的对象建模,而不考虑定义软件系统中技术细节的 类(如用户接口、数据库)。 编程(构造)阶段:其任务是用面向对象编程语言将来自设计阶段的 类转换成实际的代码。在用UML建立分析和设计模型时,应尽量避免 考虑把模型转换成某种特定的编程语言。 测试阶段:单元测试使用类图和类规格说明;集成测试使用部件图 和合作图;系统测试使用用况图来验证系统的行为;验收测试由用户 进行,以验证系统测试的结果是否满足在分析阶段确定的需求。
模型驱动的软件体系结构
模型驱动的特点:可进化性
•在系统的应用过程中,持续地适应应用环境与需求的 变化,不断地由应用者或自适应地对模型进行改进. •这是模型驱动的最高境界。
模型驱动的软件体系结构
模型驱动的软件开发模式
模型A 模型B 模型C
…
模型Z
•基于模型驱动的软件开发模式就是利用模型的映射技 术完成软件的逐步求精过程。 •在MDA中,采用一组元模型为系统建模。
模型驱动的软件体系结构
MOF元对象设施(Meta-Object Facility)
元-元模型 元-元数据
元元模型
元模型
元数据
界面描述
数据字典
业务过程
…
模型
数据
设备表
员工表
资金
…
用户对象
张三 李四 王五
…
MOF的四层元数据体系结构
模型驱动的软件体系结构
MOF元对象设施(Meta-Object Facility)
什么是模型驱动
MDA
•MDA(Model-Driven Architecture)。 •MDA的关键特点就是软件开发的重点和输出不再是程序,而是各 种模型,开发人员的工作是不断拓展模型,只有到了最后阶段才会 考虑将其实现。
什么是模型驱动
模型驱动的软件开发方法
为了实现系统的目标,将系统分为若干个层级,在每 一个层级上通过模型描述该层级上的实体,建立不同层级 上模型之间的映射关系。人工或计算机根据模型间的映射 关系,可以完成从源始模型到目标模型实例的变换,从而 达到系统运行的目标。
•层级理论使复杂问题简单化。 •当从系统A到系统Z不能直接求解时,可借助一些中间层。 •软件的体系结构呈现层级的特征。 软件开发就是从用户层到软件层 求解。
模型驱动的软件体系结构
模型驱动的特点:模型的时效性
•模型可以区分“运行期模型”(Run-Time Model )和“开发期模型”。 •开发期模型是MDA的建模驱动过程的本质。 •运行期模型揭示了广义模型驱动的本质。 •“所见即所得”就是一种典型的运行期模型的应 用。从用户模型经过一组驱动,自动输出到用户 模型,是模型驱动的最佳应用模式。
MDA驱动的第一步就是抽象出与实现技术无关、完整描述业务功能 的核心模型(Platform-Independent Model, PIM);
针对不同实现技术制订多个映射规则,然后通过这些映射规则及辅 助工具将PIM转换成与具体实现技术相关的应用模型(PlatformSpecific Model, PSM)。 最后,将经过证实的PSM转换成代码 。
模型驱动的软件体系结构
模型驱动的软件开发模式
与传统开发模式的不同: •异构系统协作:由于元数据具有自描述能力,因此异构 的系统可以通过元数据来互相识别,互相了解,进而 互相协作。任何一个基于MDA的系统都能够存储、管理 、发布应用应用层和系统层的元数据。当组件被植入 环境的时候,可以通过与环境交换元数据来达到沟通 和协作的目的。因此,基于MDA的系统可以从根本上解 决互操作问题。
基于模型驱动的软件开发方法
什么是模型驱动 模型驱动的软件体系结构 模型驱动的现状 我们在做什么
模型驱动的软件体系结构
模型 MDA MDA的核心技术 模型驱动的特点 模型驱动的软件开发模式
模型驱动的软件体系结构
模型
模型是系统功能、结构、行为的形式化的规范。
当一个规范所基于的语言有标准的语法,且每一种结构有相应的语 义;同时还可能包含一组不同结构间分析、推理的规则时,这个规 范就是形式化的。
语法可以是图形的形式,也可是文本的形式。
语义是指该语法所描述的事物都有具体的意义。
模型驱动的软件体系结构
MDA
MDA的基本思想就是:一切都是模型。软件的生命周期就是以模型 为载体并由模型 映射所驱动的过程。
什么是模型驱动
面向对象的软件开发技术
• 将现实世界的实体用类来描述,自然,直观。 • 将数据结构与操作封装在一个类中。 • UML对OOA、OOD扮演了非常重要的角色。