570 likes | 809 Views
基于模型驱动的软件开发方法. 文必龙. 基于模型驱动的软件开发方法. 什么是模型驱动 模型驱动的软件体系结构 模型驱动的现状 我们在做什么. 什么是模型驱动. 软件开发技术的发展历程. 面向功能的软件开发技术 面向处理的 面向函数的 面向模块的 面向结构的 面向数据的 面向对象的软件开发技术 面向模型的软件开发技术. 什么是模型驱动. 面向功能的软件开发技术. 加工处理. 输入. 输出. Pascal 之父、结构化程序设计的先驱 Niklaus Wirth 最著名的一本书,书名叫作《算法 + 数据结构 = 程序》
E N D
基于模型驱动的软件开发方法 文必龙
基于模型驱动的软件开发方法 • 什么是模型驱动 • 模型驱动的软件体系结构 • 模型驱动的现状 • 我们在做什么
什么是模型驱动 • 软件开发技术的发展历程 • 面向功能的软件开发技术 • 面向处理的 • 面向函数的 • 面向模块的 • 面向结构的 • 面向数据的 • 面向对象的软件开发技术 • 面向模型的软件开发技术
什么是模型驱动 • 面向功能的软件开发技术 加工处理 输入 输出 Pascal之父、结构化程序设计的先驱Niklaus Wirth最著名的一本书,书名叫作《算法 + 数据结构 = 程序》 程序是计算机指令的某种组合,控制计算机的工作流程,完成一定的逻辑功能,以实现某种任务。 算法是程序的逻辑抽象,是解决某类客观问题的数学过程。 数据结构是客观事物自身所具有的结构特点(即逻辑结构)在计算机中的具体实现(即物理结构),是计算机存储、组织数据的方式。 软件的实现是针对数据编程的。
什么是模型驱动 • 面向对象的软件开发技术 • 将现实世界的实体用类来描述,自然,直观。 • 将数据结构与操作封装在一个类中。 • UML对OOA、OOD扮演了非常重要的角色。
什么是模型驱动 • 面向模型的软件开发技术 • 是面向对象技术的发展。 • 公众对UML的接受刺激了以模型为中心的开发,OMG提供了支持这种开发的一系列标准的框架MDA(Model-Driven Architecture)。 • MDA的关键特点就是软件开发的重点和输出不再是程序,而是各种模型,开发人员的工作是不断拓展模型,只有到了最后阶段才会考虑将其实现。 • 模型不一定是面向对象的。如界面模型、报表模型、工作流模型、数据流模型等。UML 2.0也大量吸收和改进了非OO模型。
什么是模型驱动 • MDA • MDA(Model-Driven Architecture)。 • MDA的关键特点就是软件开发的重点和输出不再是程序,而是各种模型,开发人员的工作是不断拓展模型,只有到了最后阶段才会考虑将其实现。
什么是模型驱动 • 模型驱动的软件开发方法 为了实现系统的目标,将系统分为若干个层级,在每一个层级上通过模型描述该层级上的实体,建立不同层级上模型之间的映射关系。人工或计算机根据模型间的映射关系,可以完成从源始模型到目标模型实例的变换,从而达到系统运行的目标。
基于模型驱动的软件开发方法 • 什么是模型驱动 • 模型驱动的软件体系结构 • 模型驱动的现状 • 我们在做什么
模型驱动的软件体系结构 • 模型 • MDA • MDA的核心技术 • 模型驱动的特点 • 模型驱动的软件开发模式
模型驱动的软件体系结构 • 模型 模型是系统功能、结构、行为的形式化的规范。 当一个规范所基于的语言有标准的语法,且每一种结构有相应的语义;同时还可能包含一组不同结构间分析、推理的规则时,这个规范就是形式化的。 语法可以是图形的形式,也可是文本的形式。 语义是指该语法所描述的事物都有具体的意义。
模型驱动的软件体系结构 • MDA MDA的基本思想就是:一切都是模型。软件的生命周期就是以模型为载体并由模型 映射所驱动的过程。 MDA驱动的第一步就是抽象出与实现技术无关、完整描述业务功能的核心模型(Platform-Independent Model, PIM); 针对不同实现技术制订多个映射规则,然后通过这些映射规则及辅助工具将PIM转换成与具体实现技术相关的应用模型(Platform-Specific Model, PSM)。 最后,将经过证实的PSM转换成代码 。
模型驱动的软件体系结构 • MDA
模型驱动的软件体系结构 • MDA • MDA的好处: • 分离业务功能分析设计的制品与实现技术之间紧耦合的关系,从而最小化技术变化对系统的影响。 • MDA使得应用模型与领域模型在整个软件生命周期中得到了复用
模型驱动的软件体系结构 • 广义的模型驱动 • 为了实现系统的目标,将系统分为若干个层级,在每一个层级上通过模型描述该层级上的实体,建立不同层级上模型之间的映射关系。人工或计算机根据模型间的映射关系,可以完成从源始模型到目标模型实例的变换,从而达到系统运行的目标。 • 模型可以是计算机领域的,也可以是非计算机领域的。 • 建模过程就是从现实世界到计算机世界的一种映射。 • 模型的驱动过程可以是人工的,也可以是自动的或半自动的。
模型驱动的软件体系结构 • MDA • MDA核心技术包括: • 统一建模语言(Uniform Modeling Language, UML) • 元对象设施(Meta-Object Facility, MOF) • 公共仓库元模型(Common Warehouse Metamodel , CWM) • 基于XML的元数据交换(XML Metadata Interchange , XMI)
模型驱动的软件体系结构 • 统一建模语言 (Uniform Modeling Language, UML) • 以面向对象图的方式来描述任何类型的系统,具有很宽的应用领域。 • 其中最常用的是建立软件系统的模型,但它同样可以用于描述非软件领域的系统,如机械系统、企业机构或业务过程,以及处理复杂数据的信息系统、具有实时要求的工业系统或工业过程等。 • 总之,UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。
模型驱动的软件体系结构 • UML适用于系统开发过程中的不同阶段 需求定义阶段:可以用用况来捕获用户需求。通过用况建模,描述外部角色及其对系统的功能要求。 分析阶段:用UML类图来描述问题域中的主要概念和机制。在分析阶段,只对问题域的对象建模,而不考虑定义软件系统中技术细节的类(如用户接口、数据库)。 编程(构造)阶段:其任务是用面向对象编程语言将来自设计阶段的类转换成实际的代码。在用UML建立分析和设计模型时,应尽量避免考虑把模型转换成某种特定的编程语言。 测试阶段:单元测试使用类图和类规格说明;集成测试使用部件图和合作图;系统测试使用用况图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在分析阶段确定的需求。
模型驱动的软件体系结构 • UML的静态建模机制 • 用例图(Use case diagram) • 类图(Class diagram) • 对象图(Object diagram ) • 包(Package) • 构件图(Component diagram) • 配置图(Deployment diagram)
模型驱动的软件体系结构 • UML的动态建模机制 • 状态图(State Diagram) • 顺序图(Sequence Diagram) • 合作图(Collaboration Diagram) • 活动图(Activity Diagram)
模型驱动的软件体系结构 • UML的局限性及改进方向 对建筑工程来说,工程师一般都有多年的经验并且对所用的各种工程符号了如指掌,而UML的设计可能在纸上画出来看着很好,真正编程时却会发现很多问题。这是因为建筑工程的模型接近于现实,而UML的设计却在另外一个世界进行。 浏览器 菜单条 工具条 地址栏 资源树 菜单项
模型驱动的软件体系结构 • MOF元对象设施(Meta-Object Facility) • MOF用来定义面向对象元模型的基本元素、语法和结构。 • 以MOF定义的面向对象元模型,可以通过交换元数据来实现互操作。 • MOF为各种元模型提供了一种通用的语言基础,使它们不现是孤立的,而可以相互映射,相互交换元数据,并相互理解。 • MOF通过多次抽象,获得现实世界的共性,即“道”。
模型驱动的软件体系结构 • MOF元对象设施(Meta-Object Facility) 元-元模型 元-元数据 元元模型 元数据 界面描述 数据字典 业务过程 元模型 … 模型 数 据 设备表 员工表 资金 … 张三 王五 李四 用户对象 … MOF的四层元数据体系结构
模型驱动的软件体系结构 • MOF元对象设施(Meta-Object Facility) 图形 报表 设备 界面模型 界面字典 更多用户对象 更 多 元 模 型 函 数 字 典 算 法 函数模型 元元 模型 更多模型 数据字典 数据模型 业务流程 数据 资金 以不变应万变,利用四层元数据结构描述不断变化的用户需求
模型驱动的软件体系结构 • CWM:公共仓库元模型
模型驱动的软件体系结构 • XMI:基于XML的元数据交换 • XMI(XML Metadata Interchange)定义了两组规则: • XML DTD( Document Type Definitions)生成规则:如何为元数据创建XML DTD。 • XML文档生成规则:如何根据DTD为元数据创建XML文件。 元模型 XML DTD 元数据 XML文档
模型驱动的软件体系结构 • 模型驱动的特点 模型的层级性(hierarchy of model) 模型的时效性(time-effectiveness of model ) 模型的可进化性(evolutionableness of model )
系统A 系统Z 系统B 系统C … 模型驱动的软件体系结构 • 模型驱动的特点:模型的层级性 诺贝尔奖获得者赫伯特 A. 西蒙(Harbert A.Simen)曾论述到:“要构造一门关于复杂系统的比较正规的理论,有一条路就是求助于层级理论……我们可以期望,在一个复杂性必然是从简单性进化而来的世界中,复杂系统是层级结构的” • 层级理论使复杂问题简单化。 • 当从系统A到系统Z不能直接求解时,可借助一些中间层。 • 软件的体系结构呈现层级的特征。 软件开发就是从用户层到软件层求解。
模型驱动的软件体系结构 • 模型驱动的特点:模型的时效性 • 模型可以区分“运行期模型”(Run-Time Model)和“开发期模型”。 • 开发期模型是MDA的建模驱动过程的本质。 • 运行期模型揭示了广义模型驱动的本质。 • “所见即所得”就是一种典型的运行期模型的应用。从用户模型经过一组驱动,自动输出到用户模型,是模型驱动的最佳应用模式。
模型驱动的软件体系结构 • 模型驱动的特点:可进化性 • 在系统的应用过程中,持续地适应应用环境与需求的变化,不断地由应用者或自适应地对模型进行改进. • 这是模型驱动的最高境界。
模型A 模型Z 模型B 模型C … 模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 基于模型驱动的软件开发模式就是利用模型的映射技术完成软件的逐步求精过程。 • 在MDA中,采用一组元模型为系统建模。
模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 与传统开发模式的不同: • 异构系统协作:由于元数据具有自描述能力,因此异构的系统可以通过元数据来互相识别,互相了解,进而互相协作。任何一个基于MDA的系统都能够存储、管理、发布应用应用层和系统层的元数据。当组件被植入环境的时候,可以通过与环境交换元数据来达到沟通和协作的目的。因此,基于MDA的系统可以从根本上解决互操作问题。
模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 与传统开发模式的不同: • 空间失配问题:从计算机软件诞生的那一天起,软件开发者就不得不同时在问题空间和解空间进行工作。这两种空间的异构性是使软件质量难以得到保证的一个重要原因。而在MDA的开发模式中,问题空间和解空间中间的鸿沟被众多的元模型填平了。单一的问题空间和解空间被多个相对的问题空间和解空间所代替。
模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 与传统开发模式的不同: • 专用的元模型和模型映射技术:对于不同的领域和视角,可以建立起专门的元模型。采用专用的元模型建模比使用单一元模型在准确性和完整性上有很大的提高,开发成本也会随之降低。而专用的模型映射工具可以将模型映射中一些固有的范式总结成自动的分析和处理工具,从而大大提高模型映射的质量和效率。
模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 与传统开发模式的不同: • 元模型和模型映射技术共享: 元模型和模型映射技术实际上陷含了特定领域所固有的知识。在同一个领域的应用中,都可以共享这些元模型和模型映射技术。 • 模型重用:软件重用从组件的重用扩展到模型的重用。这是软件重用的大发展。首先,组件重用有平台的限制,而模型的重用则脱离了这个限制;其次,模型由于它的多层次性,使得软件的重用可以在任意一个层次上,这样就可以最大限度地重用现有成果。
模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 与传统开发模式的不同: • 流水线式开发: 由于每种模型都使用专门的元模型,而且有规范的建模工具和模型映射工具为模型质量作保障,软件生产可以实现流水线操作,即每一种模型的建模和模型映射工作由专门的人员来完成。软件生产的质量和效率都将有质的飞跃。
编程技术 解空间层次 操作对象 局限性 MDA 元模型层 Meta-object Object Data 可以自定义语言(元模型) 面向对象 模型层 Object Data 只能使用有限的语言(元模型) 过程求精 数据层 Data 只能使用有限的数据类型 模型驱动的软件体系结构 • 模型驱动的软件开发模式 • 与传统开发模式的不同: • 从模型到元模型:从软件技术发展的历史上来看,过程求精编程技术的解空间处于数据层,面向对象技术把解空间提升到模型层,而MDA则把解空间提升到了元模型层。
基于模型驱动的软件开发方法 • 什么是模型驱动 • 模型驱动的软件体系结构 • 模型驱动的现状 • 我们在做什么
模型驱动的现状 • 当前有一股MDA热,国内一些著名的软件工程研究科研单位关注MDA。 • 相关技术基础已经具备,OMG关于MOF和MDA的规范推出,但MDA只是提供了一个框架和概念,在可操作性方面还待进一步发展。 • SDK开发商纷纷推出基于MDA的开发平台,如Borland推出了基于MDA的Delphi 7 Studio ,微软.NET也纳入了MDA概念。但这些SDK的MDA建立的是“开发期”模型,重点在如何向自己的平台映射。
模型驱动的现状 • 软件服务商纷纷瞄准面向业务的平台开发。2002年,计世资讯在(CCW Research)发布的《2003中国软件平台发展战略研究报告》表明,软件平台的新层级,即业务流程管理平台正对软件、尤其是管理软件开发模式产生革命性的影响,一种全新的开发模式----EMA(企业模型自动化)诞生。这种全新的开发模式就是业界所一直在苦苦追寻的“提高软件生产力的银弹”。计世资讯把这个新层级的软件平台称为“业务基础软件平台”。该平台采用的核心思想就是模型驱动。
模型驱动的现状 • 有待研究的问题: (1)元模型和模型映射方法论研究 MDA的完善相当程度上是元模型和模型映射技术的完善,如何建立元模型和相应的模型映射技术都需要方法论的指导。 (2)领域元模型的建立 针对各种不同的应用领域,要建立大量的基于MOF的元模型。这些元模型要包含应用领域的特殊规则的语义,既要严格没有歧义,又要容易为非计算机专业的领域专家所掌握。
模型驱动的现状 • 有待研究的问题: (3)组件平台元模型的建立 针对各种组件平台,要建立专门的平台元模型,以支持平台相关模型的建立和代码生成。 (4)模型映射技术的开发 在大量的元模型之前,都需要模型映射技术来辅助开发人员进行高效的模型映射。有了高效的模型映射技术,MDA才能真正走向实用。
模型驱动的现状 • 有待研究的问题: (5)中间元模型研究。两个元模型如果异构程度太高的话,针对这两种元模型的模型映射工具会难以开发,或者映射效率低,需要大量的人工干预。这样就要考虑在这两个元模型中间建立一个中间元模型,以这个中间元模型作为桥梁进行模型映射。在什么情况下需要构建以及如何构建中间元模型,都是有待研究的问题。 (6)元模型和模型映射的评价理论研究。在特定的环境下,什么样的元模型才是高效的,什么样样的模型映射工具才是高效的,都需要评价理论来指导。这样开发人员才能在众多的相互竞争的元模型和模型映射工具中选择最适合自己的一种。
基于模型驱动的软件开发方法 • 什么是模型驱动 • 模型驱动的软件体系结构 • 模型驱动的现状 • 我们在做什么
我们在做什么 • POSC软件集成技术的研究 • 新疆油田公司勘探生产信息系统 • 中国石油信息系统标准化技术研究 • 大庆油田公司信息化建设 • 石油信息平台PIP的设想
我们在做什么 • POSC软件集成技术的研究 • 围绕POSC的集成数据模型 Epicentre的实现和应用,开展了以下相关研究: • 数据映射工具开发:从Epicentre到关系模型映射 • 基于Epicentre视图的研究:从关系视图存取Epicentre • 基于Epicentre数据存取实现:从关系数据库实现Epcientre 映射 关系视图 投影 Epicentre 视图 关系数据库 存取
我们在做什么 • 新疆油田公司勘探生产信息系统 • 围绕信息平台的可扩展性开展,初步形成模型驱动雏形: • 从Epicentre扩展到任意两个数据模型之间的映射(1999年) • 四层元数据体系及模型驱动概念的引入(2000年) • 工作流实现业务集成概念的引入。 OpenWork 录井库 测井库 Finder 数据总线(交换数据模型,虚拟模型) CORBA 服务 工作流 勘探 总库 中心数据库 元数据库
我们在做什么 • 中国石油信息系统标准化技术研究 • 围绕中国石油IT总体规划,将元数据系统化,在各个实施方案中推广相关思想: • 中国石油信息系统数据交换模型定义规范 • 中国石油信息系统数据元词典 • 中国石油信息系统总部数据中心实施方案 • 中国石油总部经营管理源数据词典实施方案 • 中国石油信息系统标准化体系 • 企业应用集成(EAI,Enterprise Application Integration)研究 中国石油刚完成基础信息化,正在向集成化阶段迈进,新的管理体制注重实用化、商业化,对新技术的感觉和消化存在一定的困难。
我们在做什么 • 大庆油田公司信息化建设 • 积极参与大庆油田公司信息化建设,宣传模型驱动的信息集成思想,受到专家好评。 企业战略 信息化战略 管理体系 应用体系 信息体系 • 改进用户的需求,发挥模型驱动的优势。 支持体系 • 模型驱动的思想是信息集成化建设新的技术思路,受到技术人员的欢迎。