第三章 模型驱动开发概述.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10
为什么需要MDA
OMG提出的MDA方法的三个主要目标: 轻便性、互操性和可重用性。具体解决以 下问题:
扭转以代码为中心的软件开发方法; 解决不同平台,不同技术路线之间的集成和互 操作问题; 便于适应将来出现的新技术和新平台;
Code driven development
requirement document System analysis code Test design code code Developer like? Acceptance
建模可以达到以下四个目的:
把目前正在构建的系统可视化 描述系统的结构和行为 为构建系统提供模板和指导 记录在开发过程所形成的设计决策
管理系统复杂度
复杂的系统很难被认识和理解,建模可以
很好的管理这种复杂度
帮助团队成员之间的沟通
模型可以帮助开发人员之间相互理解对方
的设计意图
Code Driven Development
当编码开始的时候,前三个阶段产生的文档和相关 图片就迅速失去了它们的价值。随着编码阶段的继 续进行,图片和代码之间的关联逐渐减弱甚至消失, 它们不再是对代码的精确描述,或多或少地成为了 无关的图片。 随着时间的推移,系统不断地被修改,文档、设计 图表和代码之间的距离就越来越疏远。一般来说仅 仅是修改代码,因为修改文档和设计图表所要花费 的代价是令人无法容忍的。同时,即使修改了图和 文档,这样的工作是否有效也值得怀疑,因为还会 不断地修改代码。
Poor in interoperation
Code Driven Development
传统软件开发的问题 随着软件系统的复杂程度越来越高,传统的软件开发开 始面临有以下几个 问题
疲于应付需求的不断变更; 文档迅速地失效、维护困难; 项目二期开发生产力无法提升。 每当一种新的技术产生的时候,必须做许多重复的工作。
Code Driven Development
1. 生产力和维护性问题 当今的软件开发过程是以概要设 计和编码为驱动。无论是采用增 量开发还是迭代开发,或者是传 统的瀑布式开发途径,文档和相 关的设计图表都是在前三个阶段 中产生。需求分析往往使用文本 和图的方式来描述,其中的图经 常采用图,如用例图、类图、交 互图、活动图等。设计过程会产 生大量的设计文档,但往往仅存 在于文档中。
6
什么是 MDD?
MDD 是一种抽象的软件开发设计流程 ,主要包括以下特点:
抽象(提高层次)、封装和信息隐藏
通过模型的多个层次(横向和纵向)来隐藏和展 现信息,从而使模型更容易被理解
以模型为中心
开发过程始终以模型为工作中心
不依赖于任何一种特定的实现
模型独立于运行平台的实现细节,这部份往往是 最容易发生变化的
public class BookImpl extends EObjectImpl implements Book { ... protected static final int PAGES_EDEFAULT = 0; protected int pages = PAGES_EDEFAULT; public int getPages() { return pages; } public void setPages(int newPages) { int oldPages = pages; pages = newPages; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, ..., oldPages, pages)); } ... }
基于模型驱动的安全系统开发
第三章:模型驱动开发概述
主讲:徐田华
mail: thxu@bjtu.edu.cn
内容
模型及其意义 模型驱动的开发及其意图 模型驱动开发的定义和关键问题 模型驱动开发授课内容
什么是模型?
模型是对现实世界的一个简化
3
什么是模型?
4
什么是模型?
5
为什么要有模型?
系统永远不可能只用一种技术实现,且不跟其它系统交 互。不断变更的需求同样也给系统带来困难。下面将分 析在软件开发过程中遇到的问题,随后会介绍是如何来 解决这些问题的
Code Driven Development
public interface Book extends EObject { String getTitle(); void setTitle(String value); int getPages(); void setPages(int value); }
9
什么是 MDA?
MDA – Model Driven Architecture
MDA 是 OMG (Object Management Group) 制 定的一种 MDD 实现 MDA 包括了一组实现 MDD 方法的标准和工 具集合 MDA 定义了关于 MDD 软件开发方法的一种 概念框架
7
软件开发方法的演化(抽象)
抽象和 自动化程度
只有代码
代码可视化
双向工程
以模型为中心 只有模型
软件开发 实践现状
Model
visualize
Model
synchronize
Model
generate
Model
Code
什么是模型?
Code
代码就是ຫໍສະໝຸດ Baidu型
Code
Code
软件开发 发展方向
纯粹基于模型的 开发
同步代码和模型 模型就是代码
8
什么是 MDD?
MDD 是一种抽象的软件开发设计流程 ,主要包括以下特点:
双向工程
新应用开发 - 通过正向工程来生成代码 针对遗留系统的开发 – 通过逆向工程来从代码中 抽象出模型
应用系统的自动生成
能够从模型生成完全可运行的应用系统
我们可以把 MDD 看作是一种使用模型 来进行编程的开发技术
Iterative process
Document, diagram
Document, diagram
Inconsistency between document and code
Difficulty maintainability, poor adaptation of new technology