您是
![](/icons/51739yi.gif)
位试图增加 IT 系统业务价值
![](/icons/51739de.gif)
领头架构师或项目经理(project manager)吗?如果您是
![](/icons/51739dou.gif)
本文可以为您提供帮助
![](/icons/51739dou2.gif)
本文解释了影响现代 IT 开发
![](/icons/51739de.gif)
业务推动力
![](/icons/51739dou.gif)
并且向您介绍了模型驱动开发(model-driven development
![](/icons/51739dou.gif)
MDD)
![](/icons/51739dou2.gif)
MDD 是主流软件Software开发实战
![](/icons/51739de.gif)
提高
![](/icons/51739dou.gif)
并且让您
![](/icons/51739de.gif)
IT 系统能够对业务推动力更加敏感
![](/icons/51739dou2.gif)
了解 MDD 思路方法以及您如何可以将其应用于实现业务价值最大化
![](/icons/51739dou.gif)
并且减少解决方案开发
![](/icons/51739de.gif)
成本
![](/icons/51739dou2.gif)
利用 MDD
![](/icons/51739dou.gif)
通过利用转换和重复性
![](/icons/51739de.gif)
消除将实现模式自动化
![](/icons/51739dou.gif)
并将低层次
![](/icons/51739de.gif)
开发工作自动化
![](/icons/51739dou.gif)
您可以提高解决方案
![](/icons/51739de.gif)
![](/icons/51739yi.gif)
致性和质量
![](/icons/51739dou2.gif)
了解您目前
![](/icons/51739de.gif)
业务环境 IT 开发不会孤立出现
![](/icons/51739dou2.gif)
IT
![](/icons/51739de.gif)
目
![](/icons/51739de.gif)
是简化业务运作
![](/icons/51739dou.gif)
这意味着业务环境
![](/icons/51739de.gif)
需求推动着我们开发 IT
![](/icons/51739de.gif)
思路方法
![](/icons/51739dou2.gif)
表 1展示了
![](/icons/51739yi.gif)
些当前
![](/icons/51739de.gif)
业务推动力
![](/icons/51739dou2.gif)
表 1. 当前
![](/icons/51739de.gif)
业务推动力
推动力 描述
随需应变
![](/icons/51739de.gif)
业务 由于商家应该更具适应性和灵活性
![](/icons/51739dou.gif)
所以 IT 系统要做得太多了
业务关联 大家强烈关注 IT 部门交付业务价值
![](/icons/51739dou2.gif)
软件Software必须是和业务相关
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
业务及 IT 人员的间
![](/icons/51739de.gif)
![](/icons/51739cuowu.gif)
传达会导致从 IT 交付观点看成功
![](/icons/51739de.gif)
项目
![](/icons/51739dou.gif)
被视为业务上
![](/icons/51739de.gif)
失败
成本控制 根据承诺
![](/icons/51739de.gif)
力度对 IT 投资
![](/icons/51739de.gif)
时代早已过去
![](/icons/51739dou2.gif)
现在
![](/icons/51739dou.gif)
IT 部门在强大
![](/icons/51739de.gif)
预算约束下运作
![](/icons/51739dou.gif)
并且应该证明其金钱方面
![](/icons/51739de.gif)
价值
不断增加
![](/icons/51739de.gif)
复杂性 软件Software系统在规模和复杂度上不断
![](/icons/51739de.gif)
增加
![](/icons/51739dou.gif)
从而满足业务需要
![](/icons/51739dou2.gif)
对小规模开发有效
![](/icons/51739de.gif)
技术
![](/icons/51739dou.gif)
不
![](/icons/51739yi.gif)
定适用于按企业级
![](/icons/51739de.gif)
计划
技能可用性 当今 IT 平台
![](/icons/51739de.gif)
成熟意味着交付软件Software需要专家
![](/icons/51739de.gif)
经验
![](/icons/51739dou2.gif)
许多组织努力寻找着有充足技能
![](/icons/51739de.gif)
专业人员支持它们
![](/icons/51739de.gif)
开发
![](/icons/51739dou2.gif)
项目常常依赖于
![](/icons/51739yi.gif)
些关键
![](/icons/51739de.gif)
人物
![](/icons/51739dou.gif)
如果这些人离开了
![](/icons/51739dou.gif)
损失会很严重
变化
![](/icons/51739de.gif)
中间件环境 现今
![](/icons/51739de.gif)
应用
![](/icons/51739chengxu.gif)
都部署到极为多样
![](/icons/51739de.gif)
中间件平台上
![](/icons/51739dou.gif)
平台技术
![](/icons/51739de.gif)
变更率没有表现出减慢
![](/icons/51739de.gif)
迹象
![](/icons/51739dou2.gif)
商家希望利用中间件中
![](/icons/51739de.gif)
先进技术
![](/icons/51739dou.gif)
但不愿意重复地编写它们
![](/icons/51739de.gif)
应用
![](/icons/51739chengxu.gif)
了解软件Software开发
![](/icons/51739de.gif)
模型驱动思路方法 模型驱动开发(Model-driven development
![](/icons/51739dou.gif)
MDD)是软件Software开发
![](/icons/51739de.gif)
![](/icons/51739yi.gif)
种样式
![](/icons/51739dou.gif)
其中主要
![](/icons/51739de.gif)
软件Software工件是模型
![](/icons/51739dou.gif)
根据最佳实战
![](/icons/51739dou.gif)
可以从这些模型生成代码和其他工件
![](/icons/51739dou2.gif)
模型是从特定角度对系统进行
![](/icons/51739de.gif)
描述
![](/icons/51739dou.gif)
它省略了相关
![](/icons/51739de.gif)
细节
![](/icons/51739dou.gif)
因此可以更清楚地看到感兴趣
![](/icons/51739de.gif)
特性
![](/icons/51739dou2.gif)
例如
![](/icons/51739dou.gif)
结构工程师会创建适合于确定建筑物承载特性
![](/icons/51739de.gif)
模型
![](/icons/51739dou2.gif)
在 MDD 中
![](/icons/51739dou.gif)
我们引入了附加
![](/icons/51739de.gif)
标准
![](/icons/51739dou.gif)
即模型必须是计算机可读
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
例如
![](/icons/51739dou.gif)
我们必须能够以自动化
![](/icons/51739de.gif)
方式估计模型
![](/icons/51739de.gif)
内容
![](/icons/51739dou2.gif)
模型
![](/icons/51739de.gif)
计算机可读性是它能够生成工件
![](/icons/51739de.gif)
必要条件
![](/icons/51739dou2.gif)
白板上
![](/icons/51739de.gif)
图也许满足作为模型
![](/icons/51739de.gif)
其他标准
![](/icons/51739dou2.gif)
然而
![](/icons/51739dou.gif)
直到我们以计算机可读
![](/icons/51739de.gif)
方式获取它时
![](/icons/51739dou.gif)
才能够在 MDD 工具系列中使用它
![](/icons/51739dou2.gif)
软件Software模型
![](/icons/51739yi.gif)
般用统
![](/icons/51739yi.gif)
建模语言(Un
![](/icons/51739if.gif)
ied Modeling Language
![](/icons/51739dou.gif)
UML)表示
![](/icons/51739dou2.gif)
UML 是用于介绍说明、可视化
![](/icons/51739dou.gif)
并文档化软件Software系统
![](/icons/51739de.gif)
语言
![](/icons/51739dou2.gif)
它为软件Software模型提供了可视化
![](/icons/51739de.gif)
表示和基础
![](/icons/51739de.gif)
语义
![](/icons/51739dou2.gif)
UML 还拥有用来确保自动化
![](/icons/51739de.gif)
标准化
![](/icons/51739de.gif)
计算机可读
![](/icons/51739de.gif)
序列化格式
![](/icons/51739dou2.gif)
软件Software模型隐藏了技术实现
![](/icons/51739de.gif)
细节
![](/icons/51739dou.gif)
因此
![](/icons/51739dou.gif)
我们可以利用来自应用领域中
![](/icons/51739de.gif)
概念来设计系统
![](/icons/51739dou2.gif)
应用
![](/icons/51739chengxu.gif)
![](/icons/51739yi.gif)
般是利用 UML 建模工具
![](/icons/51739dou.gif)
例如 IBM Rational® Software Architect
![](/icons/51739dou.gif)
并使用和应用领域相关
![](/icons/51739de.gif)
概念进行设计
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
例如
![](/icons/51739dou.gif)
当我们工作于企业集成领域中时
![](/icons/51739dou.gif)
我们会利用消息、代理和适配器这样
![](/icons/51739de.gif)
概念为应用
![](/icons/51739chengxu.gif)
设计建模
![](/icons/51739dou2.gif)
随后
![](/icons/51739dou.gif)
我们可以精练该软件Software模型
![](/icons/51739dou.gif)
并且为其组件设计详细内容
![](/icons/51739dou2.gif)
作为示意图和蓝图
![](/icons/51739de.gif)
模型
利用模型来设计软件Software是
![](/icons/51739yi.gif)
个公认
![](/icons/51739de.gif)
实战(尽管
![](/icons/51739de.gif)
确不普遍)
![](/icons/51739dou2.gif)
目前
![](/icons/51739dou.gif)
模型大多用于通俗地传达系统某个方面
![](/icons/51739de.gif)
示意图
![](/icons/51739dou.gif)
或用于描述您手动实现
![](/icons/51739de.gif)
详细设计
![](/icons/51739de.gif)
蓝图
![](/icons/51739dou2.gif)
将模型作为文档和规范标准是有价值
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
但是这需要严格
![](/icons/51739de.gif)
规程来确保模型和实现进度保持
![](/icons/51739yi.gif)
致
![](/icons/51739dou2.gif)
通常
![](/icons/51739dou.gif)
时间约束意思是在没有首先变更模型
![](/icons/51739de.gif)
情况下
![](/icons/51739dou.gif)
对实现进行了更新
![](/icons/51739dou2.gif)
不准确
![](/icons/51739de.gif)
模型比没有模型更有害
![](/icons/51739dou2.gif)
在本文中
![](/icons/51739dou.gif)
我们用术语 MDD 来表示由模型自动生成工件
![](/icons/51739de.gif)
思路方法
![](/icons/51739dou2.gif)
利用准确
![](/icons/51739de.gif)
模型进行自动生成
在 MDD 中
![](/icons/51739dou.gif)
模型不仅用作示意图或蓝图
![](/icons/51739dou.gif)
它们还作为通过转换
![](/icons/51739de.gif)
应用
![](/icons/51739dou.gif)
生成有效实现
![](/icons/51739de.gif)
主要工件
![](/icons/51739dou2.gif)
在 MDD 中
![](/icons/51739dou.gif)
当开发新
![](/icons/51739de.gif)
软件Software组件时
![](/icons/51739dou.gif)
首要
![](/icons/51739de.gif)
焦点是面向应用领域
![](/icons/51739de.gif)
模型
![](/icons/51739dou2.gif)
代码和其他目标领域
![](/icons/51739de.gif)
工件是利用由建模专家和目标领域专家
![](/icons/51739de.gif)
参和所设计出
![](/icons/51739de.gif)
转换
![](/icons/51739dou.gif)
来生成
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
MDD 能够极大地减少解决方案开发
![](/icons/51739de.gif)
成本
![](/icons/51739dou.gif)
并且提高解决方案
![](/icons/51739de.gif)
![](/icons/51739yi.gif)
致性和质量
![](/icons/51739dou2.gif)
这些好处是通过自动化带有转换
![](/icons/51739de.gif)
实现模式来形成
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
它消除了重复
![](/icons/51739de.gif)
低层次开发工作
![](/icons/51739dou2.gif)
在构建解决方案工件时
![](/icons/51739dou.gif)
和其重复地手动应用技术经验
![](/icons/51739dou.gif)
不如将这些经验窍门技巧直接编入转换中
![](/icons/51739dou.gif)
并且还带来
![](/icons/51739yi.gif)
致性和可维护性
![](/icons/51739de.gif)
优势
![](/icons/51739dou2.gif)
修改了
![](/icons/51739de.gif)
转换可以快速地重复应用
![](/icons/51739dou.gif)
用于生成反应出对实现架构做出
![](/icons/51739de.gif)
变更
![](/icons/51739de.gif)
解决方案工件
![](/icons/51739dou2.gif)
MDD 将应用
![](/icons/51739chengxu.gif)
开发
![](/icons/51739de.gif)
重点从平台上移开
![](/icons/51739dou.gif)
让具有应用
![](/icons/51739chengxu.gif)
开发经验
![](/icons/51739de.gif)
开发人员
![](/icons/51739dou.gif)
在不用关注具有平台经验
![](/icons/51739de.gif)
开发人员
![](/icons/51739de.gif)
领域中
![](/icons/51739de.gif)
平台级概念
![](/icons/51739de.gif)
情况下
![](/icons/51739dou.gif)
设计应用
![](/icons/51739chengxu.gif)
![](/icons/51739dou2.gif)
平台经验直接在转换中获取
![](/icons/51739dou.gif)
而不是编制为项目指导
![](/icons/51739dou.gif)
或者更糟
![](/icons/51739de.gif)
是
![](/icons/51739dou.gif)
在项目进行
![](/icons/51739de.gif)
过程中重新去多次发现
![](/icons/51739dou2.gif)
同样
![](/icons/51739dou.gif)
有关实现架构
![](/icons/51739de.gif)
决策也直接编入转换中
![](/icons/51739dou.gif)
而不是编制为架构决策
![](/icons/51739de.gif)
文档
![](/icons/51739dou2.gif)
根据情况
![](/icons/51739de.gif)
区别
![](/icons/51739dou.gif)
合适
![](/icons/51739de.gif)
成品转换会用于直接
![](/icons/51739de.gif)
使用
![](/icons/51739dou.gif)
或者作为扩展
![](/icons/51739de.gif)
基础
![](/icons/51739dou2.gif)
另外
![](/icons/51739dou.gif)
您可以为项目构建定制
![](/icons/51739de.gif)
转换
![](/icons/51739dou2.gif)
不仅是代码
虽然代码和其他平台工件
![](/icons/51739de.gif)
生成是 MDD
![](/icons/51739de.gif)
重要部分
![](/icons/51739dou.gif)
但是 MDD 样式
![](/icons/51739de.gif)
自动化有更深
![](/icons/51739de.gif)
意义
![](/icons/51739dou2.gif)
软件Software开发项目需要生成许多非代码
![](/icons/51739de.gif)
工件
![](/icons/51739dou.gif)
其中
![](/icons/51739yi.gif)
些完全或部分地来源于模型
![](/icons/51739dou2.gif)
以下
![](/icons/51739de.gif)
列表提供了
![](/icons/51739yi.gif)
些由模型生成
![](/icons/51739de.gif)
通用工件例子
![](/icons/51739dou.gif)
但您可以考虑其他
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
文档 在遵照正式
![](/icons/51739de.gif)
开发思路方法
![](/icons/51739de.gif)
组织中
![](/icons/51739dou.gif)
生成文档用去了大量
![](/icons/51739de.gif)
开发精力
![](/icons/51739dou2.gif)
将文档和实现保持
![](/icons/51739yi.gif)
致出了名
![](/icons/51739de.gif)
困难
![](/icons/51739dou2.gif)
当使用 MDD 时
![](/icons/51739dou.gif)
文档由模型生成
![](/icons/51739dou.gif)
它们确保了
![](/icons/51739yi.gif)
致性
![](/icons/51739dou.gif)
并且使开发人员日常处理
![](/icons/51739de.gif)
模型中
![](/icons/51739de.gif)
信息可用
![](/icons/51739dou.gif)
比在很难将信息定位
![](/icons/51739de.gif)
文档中要好
![](/icons/51739dou2.gif)
工具
![](/icons/51739dou.gif)
例如 Rational SoDA 和 Rational Software Architect Report Generator (参见 参考资料)可以生成文档
![](/icons/51739dou.gif)
或者文档由转换来生成
![](/icons/51739dou2.gif)
测试工件 由软件Software模型中所包含
![](/icons/51739de.gif)
信息生成基本
![](/icons/51739de.gif)
测试
![](/icons/51739dou.gif)
例如利用 JUnit
![](/icons/51739dou.gif)
是有可能
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
如果执行了额外
![](/icons/51739de.gif)
具体到测试
![](/icons/51739de.gif)
建模(例如
![](/icons/51739dou.gif)
利用 UML Profile for Testing)
![](/icons/51739dou.gif)
那么就可以生成完整
![](/icons/51739de.gif)
测试实现
![](/icons/51739dou2.gif)
基于模型
![](/icons/51739de.gif)
测试是有关由模型生成测试
![](/icons/51739de.gif)
规程
![](/icons/51739dou2.gif)
构建及部署脚本 基础结构架构师利用他们
![](/icons/51739de.gif)
经验可以创建生成构建及部署脚本
![](/icons/51739de.gif)
转换
![](/icons/51739dou2.gif)
其他模型
![](/icons/51739yi.gif)
个系统中会涉及到许多区别抽象层次上(分析、设计、实现)
![](/icons/51739de.gif)
相互依赖
![](/icons/51739de.gif)
模型
![](/icons/51739dou.gif)
它们代表系统
![](/icons/51739de.gif)
区别部分(UI、数据库、业务逻辑、系统管理)、区别
![](/icons/51739de.gif)
关注点(安全性、性能
![](/icons/51739dou.gif)
及可靠性)
![](/icons/51739dou.gif)
或者区别
![](/icons/51739de.gif)
任务(测试、部署建模)
![](/icons/51739dou2.gif)
在许多情况下
![](/icons/51739dou.gif)
由
![](/icons/51739yi.gif)
个模型部分地生成另
![](/icons/51739yi.gif)
个模型是有可能
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
例如
![](/icons/51739dou.gif)
从分析模型到设计模型
![](/icons/51739dou.gif)
或者从应用模型到测试模型
![](/icons/51739dou2.gif)
模式应用 模式获取最佳实战解决方案来重现问题
![](/icons/51739dou2.gif)
模式指定模型元素
![](/icons/51739de.gif)
特性
![](/icons/51739dou.gif)
以及那些元素的间
![](/icons/51739de.gif)
关系
![](/icons/51739dou2.gif)
您可以将模式自动化
![](/icons/51739dou.gif)
以便创建新
![](/icons/51739de.gif)
元素
![](/icons/51739dou.gif)
以及修改现有
![](/icons/51739de.gif)
元素来遵照该模式
![](/icons/51739dou.gif)
然后将模式应用于模型中
![](/icons/51739dou2.gif)
在本文中
![](/icons/51739dou.gif)
我们介绍了所有这些技术
![](/icons/51739dou.gif)
除此的外还有利用 MDD 进行
![](/icons/51739de.gif)
代码生成
![](/icons/51739dou2.gif)
为 MDD 项目估计任务 MDD 对我们构建业务应用软件Software
![](/icons/51739de.gif)
方式有着深远
![](/icons/51739de.gif)
影响
![](/icons/51739dou2.gif)
它获得了顶级技术人员
![](/icons/51739de.gif)
经验及决策
![](/icons/51739dou.gif)
通过为项目
![](/icons/51739de.gif)
需求所定制
![](/icons/51739de.gif)
工具使余下
![](/icons/51739de.gif)
团队(Team)可以获得这些经验和决策
![](/icons/51739dou2.gif)
由于大量
![](/icons/51739de.gif)
低层次编码工作已经自动化了
![](/icons/51739dou.gif)
所以开发
![](/icons/51739de.gif)
成本
![](/icons/51739dou.gif)
以及测试业务软件Software
![](/icons/51739de.gif)
成本极大地减少了
![](/icons/51739dou2.gif)
![](/icons/51739cuowu.gif)
![](/icons/51739de.gif)
数量减少了
![](/icons/51739dou.gif)
并且在工作完成
![](/icons/51739de.gif)
方式上增加了
![](/icons/51739yi.gif)
致性
![](/icons/51739dou2.gif)
然而
![](/icons/51739dou.gif)
MDD 确实创建了项目
![](/icons/51739de.gif)
区别
![](/icons/51739yi.gif)
面
![](/icons/51739dou.gif)
需要管理
![](/icons/51739yi.gif)
个项目中
![](/icons/51739de.gif)
另
![](/icons/51739yi.gif)
个项目
![](/icons/51739dou2.gif)
内部工程包含了 MDD 工具
![](/icons/51739de.gif)
开发
![](/icons/51739dou.gif)
这些工具可以供开发团队(Team)在外部项目中构建业务应用
![](/icons/51739chengxu.gif)
时使用
![](/icons/51739dou2.gif)
![](/icons/51739yi.gif)
般来说
![](/icons/51739dou.gif)
开始要将
![](/icons/51739yi.gif)
个业务应用
![](/icons/51739chengxu.gif)
确定为利用 MDD 工具构建
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
着重于需求
![](/icons/51739dou.gif)
并且可以对该思路方法进行
![](/icons/51739yi.gif)
些调整
![](/icons/51739de.gif)
第
![](/icons/51739yi.gif)
个项目
![](/icons/51739dou2.gif)
![](/icons/51739yi.gif)
旦开始开发了
![](/icons/51739dou.gif)
就可以将 MDD 工具用于构建许多业务应用
![](/icons/51739chengxu.gif)
了
![](/icons/51739dou2.gif)
对于两个项目
![](/icons/51739dou.gif)
谨慎地组织和计划是非常重要
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
特别是在
![](/icons/51739yi.gif)
开始
![](/icons/51739de.gif)
时候
![](/icons/51739dou2.gif)
在和开发项目相关
![](/icons/51739de.gif)
平常问题的上
![](/icons/51739dou.gif)
存在着管理额外
![](/icons/51739de.gif)
内部依赖集
![](/icons/51739de.gif)
需求
![](/icons/51739dou2.gif)
MDD 工具需求必须在应用
![](/icons/51739chengxu.gif)
开发人员需要它们的前进行确认和开发
![](/icons/51739dou2.gif)
两个项目
![](/icons/51739de.gif)
任务流要互相联结
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
这样可以确保由 MDD 工具项目而来
![](/icons/51739de.gif)
交付产品是及时
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
图 1 展示了 MDD 项目中
![](/icons/51739de.gif)
任务流
![](/icons/51739dou2.gif)
阴影
![](/icons/51739de.gif)
任务可能在传统项目中执行
![](/icons/51739dou2.gif)
白色
![](/icons/51739de.gif)
任务是为具体项目构建 MDD 工件
![](/icons/51739de.gif)
附加任务
![](/icons/51739dou2.gif)
图 1. 开发 MDD 工件
![](/icons/51739de.gif)
步骤
您可以在业务应用
![](/icons/51739chengxu.gif)
开发的前开发所有
![](/icons/51739de.gif)
工具
![](/icons/51739dou.gif)
或者利用更加迭代
![](/icons/51739de.gif)
“准时制(just-in-time)”思路方法
![](/icons/51739dou2.gif)
不论采用哪种思路方法
![](/icons/51739dou.gif)
重要
![](/icons/51739de.gif)
是
![](/icons/51739dou.gif)
在业务应用
![](/icons/51739chengxu.gif)
项目开放过程中
![](/icons/51739dou.gif)
允许有额外
![](/icons/51739de.gif)
时间来开发被确定为第
![](/icons/51739yi.gif)
次使用
![](/icons/51739de.gif)
工具
![](/icons/51739de.gif)
增强
![](/icons/51739dou2.gif)
任务
开发 MDD 工具
![](/icons/51739de.gif)
最初任务出现在所有
![](/icons/51739de.gif)
传统开发思路方法中
![](/icons/51739dou2.gif)
您
![](/icons/51739de.gif)
解决方案架构师执行了这些任务
![](/icons/51739dou.gif)
并且定义了业务应用
![](/icons/51739chengxu.gif)
![](/icons/51739de.gif)
高层结构
创建解决方案架构 定义业务应用
![](/icons/51739chengxu.gif)
![](/icons/51739de.gif)
概念结构
![](/icons/51739dou2.gif)
这可以表示为
![](/icons/51739dou.gif)
在构建业务应用
![](/icons/51739chengxu.gif)
时
![](/icons/51739dou.gif)
开发人员将要采用
![](/icons/51739de.gif)
许多架构风格
![](/icons/51739dou2.gif)
定义运行时环境 定义业务应用
![](/icons/51739chengxu.gif)
运行所处
![](/icons/51739de.gif)
运行时环境
![](/icons/51739dou2.gif)
这包含所有
![](/icons/51739de.gif)
测试环境
![](/icons/51739dou.gif)
其中包括单元测试和最终
![](/icons/51739de.gif)
产品环境
![](/icons/51739yi.gif)
旦开始
![](/icons/51739de.gif)
两个任务完成了
![](/icons/51739dou.gif)
解决方案架构师就会很好地了解了为业务应用
![](/icons/51739chengxu.gif)
开发什么需求了
![](/icons/51739dou2.gif)
到此
![](/icons/51739dou.gif)
具体到 MDD
![](/icons/51739de.gif)
任务可以开始了:
确定通用
![](/icons/51739de.gif)
模式和标准 解决方案架构师确定出在业务应用
![](/icons/51739chengxu.gif)
中
![](/icons/51739de.gif)
重复模式
![](/icons/51739dou2.gif)
这些模式
![](/icons/51739de.gif)
经常出现
![](/icons/51739dou.gif)
是由于架构风格
![](/icons/51739de.gif)
![](/icons/51739yi.gif)
致使用
![](/icons/51739dou.gif)
或者由于运行时平台
![](/icons/51739de.gif)
需求
![](/icons/51739dou2.gif)
通用
![](/icons/51739de.gif)
模式可以利用对组织
![](/icons/51739de.gif)
开发过程来说标准
![](/icons/51739de.gif)
方式进行描述
![](/icons/51739dou2.gif)
确定用于复用
![](/icons/51739de.gif)
现有 MDD 资产 解决方案架构师比较他们用现有 MDD 资产确定出
![](/icons/51739de.gif)
通用模式
![](/icons/51739dou.gif)
对他们
![](/icons/51739de.gif)
架构做出任何必要
![](/icons/51739de.gif)
小调整
![](/icons/51739dou.gif)
从而使用已经可用
![](/icons/51739de.gif)
内容
![](/icons/51739dou2.gif)
现有
![](/icons/51739de.gif)
MDD 资产可以来自先前
![](/icons/51739de.gif)
MDD 项目
![](/icons/51739dou.gif)
或者来自标准
![](/icons/51739de.gif)
工具和包
![](/icons/51739dou2.gif)
定义设计模型 解决方案架构师定义开发人员在开发业务应用
![](/icons/51739chengxu.gif)
时必须依据
![](/icons/51739de.gif)
建模规则
![](/icons/51739dou2.gif)
![](/icons/51739yi.gif)
般开始会选择 UML
![](/icons/51739dou.gif)
且解决方案架构师会更精确地定义如何利用 UML 来获取设计
![](/icons/51739dou2.gif)
解决方案架构师需要了解区别类型
![](/icons/51739de.gif)
UML 图(例如
![](/icons/51739dou.gif)
类图、协作图、活动图)以及什么时候适合使用哪
![](/icons/51739yi.gif)
种
![](/icons/51739dou2.gif)
确定独立于运行时
![](/icons/51739de.gif)
组件模型 该任务创建了
![](/icons/51739yi.gif)
个 UML 模型
![](/icons/51739de.gif)
定义
![](/icons/51739dou.gif)
该模型以独立于运行时
![](/icons/51739de.gif)
方式为业务应用
![](/icons/51739chengxu.gif)
指定了组件
![](/icons/51739dou2.gif)
该任务可以由解决方案架构师执行
![](/icons/51739dou.gif)
或者由了解所有运行时环境
![](/icons/51739de.gif)
有经验
![](/icons/51739de.gif)
应用
![](/icons/51739chengxu.gif)
开发人员执行
![](/icons/51739dou2.gif)
生成举例工件 应用
![](/icons/51739chengxu.gif)
设计人员为典型
![](/icons/51739de.gif)
场景手动编制结果
![](/icons/51739de.gif)
业务应用
![](/icons/51739chengxu.gif)
工件
![](/icons/51739dou2.gif)
这些举例工件是作为 MDD 模板和转换
![](/icons/51739de.gif)
蓝图
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
该任务应该由您
![](/icons/51739de.gif)
最佳应用
![](/icons/51739chengxu.gif)
设计人员执行
![](/icons/51739dou2.gif)
确定工具系列 该任务确定了开发项目所需
![](/icons/51739de.gif)
MDD 工具
![](/icons/51739dou2.gif)
该任务是由掌握 MDD 工具开发
![](/icons/51739de.gif)
人来完成
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
![](/icons/51739yi.gif)
旦完成了该任务
![](/icons/51739dou.gif)
您就可以创建构建 MDD 工具所需
![](/icons/51739de.gif)
工作
![](/icons/51739de.gif)
详细计划了
![](/icons/51739dou2.gif)
接下来
![](/icons/51739de.gif)
5个任务构建了 MDD 工具:
从举例工件中抽取模板 MDD 工具开发人员审阅举例工件
![](/icons/51739dou.gif)
并且将它们用作为每个待生成
![](/icons/51739de.gif)
工件开发模板
![](/icons/51739de.gif)
基础
![](/icons/51739dou2.gif)
模板包含了对于已生成工件
![](/icons/51739de.gif)
每个例子都相同
![](/icons/51739de.gif)
代码
![](/icons/51739dou2.gif)
MDD 工具开发人员需要掌握已生成工件
![](/icons/51739de.gif)
语言和格式方面
![](/icons/51739de.gif)
技能
![](/icons/51739dou2.gif)
它还包含转换所使用
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
根据模型
![](/icons/51739de.gif)
内容插入工件
![](/icons/51739de.gif)
具体部分时所需
![](/icons/51739de.gif)
标志
![](/icons/51739dou2.gif)
设计、代码、测试转换及模式 该任务需要 Java
![](/icons/51739chengxu.gif)
设计能力
![](/icons/51739dou2.gif)
对于每个转换或模式
![](/icons/51739dou.gif)
MDD 工具开发人员需要书写阅读 UML2 模型
![](/icons/51739de.gif)
Java 代码
![](/icons/51739dou.gif)
然后更新模型
![](/icons/51739dou.gif)
或者对模板进行适当填充
![](/icons/51739dou.gif)
生成新
![](/icons/51739de.gif)
工件
![](/icons/51739dou2.gif)
包装 MDD 工具 MDD 工具必须打包成可以安装到每个人或您
![](/icons/51739de.gif)
应用
![](/icons/51739chengxu.gif)
开发人员
![](/icons/51739de.gif)
工作台中
![](/icons/51739de.gif)
形式
![](/icons/51739dou2.gif)
这里有
![](/icons/51739yi.gif)
些选择: 根据打包
![](/icons/51739de.gif)
指导
![](/icons/51739dou.gif)
将所有
![](/icons/51739de.gif)
文件放入 zip 文件中
使用标准
![](/icons/51739de.gif)
Eclipse 插件管理
使用可复用
![](/icons/51739de.gif)
资产(reusable as
![](/icons/51739set.gif)
![](/icons/51739dou.gif)
RAS)存储库
提供完整
![](/icons/51739de.gif)
下载 Web 站点
该选择依赖于可能安装 MDD 工具
![](/icons/51739de.gif)
人数
![](/icons/51739dou2.gif)
![](/icons/51739yi.gif)
种合理
![](/icons/51739de.gif)
思路方法是着重于支持您最初
![](/icons/51739de.gif)
应用
![](/icons/51739chengxu.gif)
开发人员
![](/icons/51739dou.gif)
然后当更多人开始使用它时
![](/icons/51739dou.gif)
按照需要升级打包机制
![](/icons/51739dou2.gif)
为应用
![](/icons/51739chengxu.gif)
开发人员生成文档及培训资料 解决方案架构师或技术作者介绍了应用
![](/icons/51739chengxu.gif)
开发人员如何构建模型
![](/icons/51739dou.gif)
并且选择恰当
![](/icons/51739de.gif)
转换来生成正确
![](/icons/51739de.gif)
工件
![](/icons/51739dou2.gif)
利用关键
![](/icons/51739de.gif)
场景来验证工具系列 这个最后
![](/icons/51739de.gif)
MDD 工具开发任务是
![](/icons/51739yi.gif)
个测试角色
![](/icons/51739dou2.gif)
MDD 工具建模并生成每个运行时平台所需
![](/icons/51739de.gif)
所有工件
![](/icons/51739dou.gif)
来支持
![](/icons/51739yi.gif)
些关键
![](/icons/51739de.gif)
场景
![](/icons/51739dou2.gif)
现在已经准备好 MDD 工具让应用
![](/icons/51739chengxu.gif)
开发人员开始使用了:
培训应用
![](/icons/51739chengxu.gif)
开发人员使用 MDD 工具 在使用 MDD 工具的前
![](/icons/51739dou.gif)
告诉应用
![](/icons/51739chengxu.gif)
开发人员新
![](/icons/51739de.gif)
开发过程是如何工作
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
他们需要了解什么时候以及如何使用 MDD 工具
![](/icons/51739dou.gif)
并且还要知道这些工具如何配合他们
![](/icons/51739de.gif)
传统工具
![](/icons/51739dou.gif)
例如配置管理
![](/icons/51739dou2.gif)
开发业务应用
![](/icons/51739chengxu.gif)
到此
![](/icons/51739dou.gif)
应用
![](/icons/51739chengxu.gif)
开发人员使用 MDD 工具来构建业务应用
![](/icons/51739chengxu.gif)
![](/icons/51739dou2.gif)
MDD 工具系列
图 2 中
![](/icons/51739de.gif)
流展示了开发人员如何能够利用 MDD 工具开发部分业务应用
![](/icons/51739chengxu.gif)
![](/icons/51739dou2.gif)
在此例子中
![](/icons/51739dou.gif)
开发人员审阅了业务问题
![](/icons/51739dou.gif)
并且选择了设计模式
![](/icons/51739dou2.gif)
该模式部分地填充了设计模型
![](/icons/51739dou.gif)
而开发人员填写他们正在构建
![](/icons/51739de.gif)
具体业务功能
![](/icons/51739de.gif)
细节
![](/icons/51739dou2.gif)
此后
![](/icons/51739dou.gif)
开发过程就完全自动化了
![](/icons/51739dou2.gif)
开发人员选择
![](/icons/51739yi.gif)
项来生成工件
![](/icons/51739dou.gif)
这些工件被打包并放入构建区
![](/icons/51739dou2.gif)
然后开发人员可以选择更多选项
![](/icons/51739dou.gif)
为个别
![](/icons/51739de.gif)
运行时平台生成附加
![](/icons/51739de.gif)
工件
![](/icons/51739dou2.gif)
图 2. MDD 工具链
好处 MDD 拥有极大地提高当前主流软件Software开发实战
![](/icons/51739de.gif)
潜能
![](/icons/51739dou2.gif)
表 2 展示了 MDD 思路方法
![](/icons/51739de.gif)
优点
![](/icons/51739dou2.gif)
表 2. MDD 好处
好处 介绍说明
增加了
生产力 通过由模型生成代码和工件
![](/icons/51739de.gif)
方式
![](/icons/51739dou.gif)
减少了软件Software开发
![](/icons/51739de.gif)
成本
![](/icons/51739dou.gif)
同时增加了开发人员
![](/icons/51739de.gif)
生产力
![](/icons/51739dou2.gif)
您必须考虑转换开发(或购买)
![](/icons/51739de.gif)
成本
![](/icons/51739dou.gif)
但谨慎
![](/icons/51739de.gif)
计划可以帮助确保成本
![](/icons/51739de.gif)
整体减少
可维护性 许多解决方案组件是使用遗留平台技术实现
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
但组织不再掌握这方面
![](/icons/51739de.gif)
技术了
![](/icons/51739dou2.gif)
MDD 形成了可维护
![](/icons/51739de.gif)
架构
![](/icons/51739dou.gif)
在其中可以快速
![](/icons/51739yi.gif)
致地做出变更
![](/icons/51739dou.gif)
可以将组件更有效地移植到新技术上
![](/icons/51739dou2.gif)
高层次
![](/icons/51739de.gif)
模型和不相关
![](/icons/51739de.gif)
实现细节无关
![](/icons/51739dou.gif)
这使得处理底层平台技术及其技术架构中
![](/icons/51739de.gif)
变更更加容易
![](/icons/51739dou2.gif)
您可以通过更新转换来变更实现
![](/icons/51739de.gif)
技术架构
![](/icons/51739dou2.gif)
转换被重复地应用于原有
![](/icons/51739de.gif)
模型
![](/icons/51739dou.gif)
用于生成依据新思路方法
![](/icons/51739de.gif)
实现工件
![](/icons/51739dou2.gif)
您可以在做出最终决策的前尝试区别
![](/icons/51739de.gif)
想法
![](/icons/51739dou2.gif)
不好
![](/icons/51739de.gif)
决策很容易变更
![](/icons/51739dou2.gif)
人们经常按照
![](/icons/51739cuowu.gif)
![](/icons/51739de.gif)
决策继续进行软件Software项目
![](/icons/51739dou.gif)
而成本过高难于修复
遗留系统
![](/icons/51739de.gif)
复用
![](/icons/51739yi.gif)
贯地在 UML 中为现有
![](/icons/51739de.gif)
遗留平台建模
![](/icons/51739dou2.gif)
如果有许多组件是在同
![](/icons/51739yi.gif)
个遗留平台上实现
![](/icons/51739de.gif)
![](/icons/51739dou.gif)
那么您可以开发从组件到 UML
![](/icons/51739de.gif)
逆向转换
![](/icons/51739dou2.gif)
您可以将组件移植到新
![](/icons/51739de.gif)
平台上
![](/icons/51739dou.gif)
或者生成包装器(wrapper)
![](/icons/51739dou.gif)
通过集成技术
![](/icons/51739dou.gif)
例如 Web 服务
![](/icons/51739dou.gif)
来访问遗留组件
适应性 由于已经在自动化方面进行了投资
![](/icons/51739dou.gif)
因此添加或修改业务功能就是很简单
![](/icons/51739de.gif)
了
![](/icons/51739dou2.gif)
当添加新
![](/icons/51739de.gif)
业务功能时
![](/icons/51739dou.gif)
您只需要开发针对该功能
![](/icons/51739de.gif)
行为
![](/icons/51739dou2.gif)
生成实现工件所需
![](/icons/51739de.gif)
剩余信息可以在转换中获取
![](/icons/51739yi.gif)
致性 手动地应用编码实战以及架构决策是容易出错
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
MDD 确保
![](/icons/51739yi.gif)
致地生成工件
可重复性 当在
![](/icons/51739chengxu.gif)
或组织层应用时
![](/icons/51739dou.gif)
MDD 尤其强大
![](/icons/51739dou.gif)
来自开发转换
![](/icons/51739de.gif)
投资回报在每次复用时都有所增加
![](/icons/51739dou2.gif)
使用经过试验和测试
![](/icons/51739de.gif)
转换还增加了开发新功能
![](/icons/51739de.gif)
可预测性
![](/icons/51739dou.gif)
并且减少了风险
![](/icons/51739dou.gif)
![](/icons/51739yinwei.gif)
架构和技术问题已经解决了
改进了涉众
![](/icons/51739de.gif)
交流 模型省略了和了解系统逻辑行为无关
![](/icons/51739de.gif)
实现细节
![](/icons/51739dou2.gif)
它们更接近于问题领域
![](/icons/51739dou.gif)
减少了涉众所了解
![](/icons/51739de.gif)
概念
![](/icons/51739dou.gif)
和表示解决方案所用语言的间
![](/icons/51739de.gif)
语义差异
![](/icons/51739dou2.gif)
简化了和业务目标更好地结合
![](/icons/51739de.gif)
解决方案
![](/icons/51739de.gif)
交付
改进了设计
![](/icons/51739de.gif)
交流 模型帮助您在设计层上了解系统
![](/icons/51739dou.gif)
引出了对系统
![](/icons/51739de.gif)
改进
![](/icons/51739de.gif)
讨论和交流
![](/icons/51739dou2.gif)
![](/icons/51739yinwei.gif)
模型是系统定义
![](/icons/51739de.gif)
![](/icons/51739yi.gif)
部分
![](/icons/51739dou.gif)
比起文档
![](/icons/51739dou.gif)
它们从不会过时
![](/icons/51739dou.gif)
而且是可靠
![](/icons/51739de.gif)
经验获取 项目或组织经常依靠重复地做出最佳实战决策
![](/icons/51739de.gif)
重要专家
![](/icons/51739dou2.gif)
他们
![](/icons/51739de.gif)
经验可以在模式和转换中获得
![](/icons/51739dou.gif)
因此
![](/icons/51739dou.gif)
他们不需要直接面对项目
![](/icons/51739de.gif)
其他成员
![](/icons/51739dou2.gif)
而且
![](/icons/51739dou.gif)
有了伴随转换
![](/icons/51739de.gif)
充足文档
![](/icons/51739dou.gif)
即使当专家离开时
![](/icons/51739dou.gif)
组织
![](/icons/51739de.gif)
经验仍旧保留在模式和转换中
模型可以作为
长期
![](/icons/51739de.gif)
资产 模型是获取组织
![](/icons/51739de.gif)
IT 系统
![](/icons/51739de.gif)
功能
![](/icons/51739de.gif)
重要资产
![](/icons/51739dou2.gif)
高层
![](/icons/51739de.gif)
模型对最新平台级上
![](/icons/51739de.gif)
变更具有弹性
![](/icons/51739dou2.gif)
它们只在业务需求变更时才发生变更
推迟
技术决策
![](/icons/51739de.gif)
能力 早期
![](/icons/51739de.gif)
应用
![](/icons/51739chengxu.gif)
开发针对建模活动
![](/icons/51739dou2.gif)
您可以推迟具体技术平台或产品版本
![](/icons/51739de.gif)
选择
![](/icons/51739dou.gif)
直到有更多
![](/icons/51739de.gif)
信息可用时再选择
![](/icons/51739dou2.gif)
在出现极其长
![](/icons/51739de.gif)
开发循环(例如
![](/icons/51739dou.gif)
航空交通管制系统)
![](/icons/51739de.gif)
领域中
![](/icons/51739dou.gif)
这是至关重要
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
在开发开始时
![](/icons/51739dou.gif)
目标平台可能还不存在
整理总结 本文阐述了
![](/icons/51739dou.gif)
您能够如何利用 MDD
![](/icons/51739dou.gif)
交付改进
![](/icons/51739de.gif)
来自 IT
![](/icons/51739de.gif)
业务价值
![](/icons/51739dou2.gif)
像所有
![](/icons/51739de.gif)
工具或技术
![](/icons/51739yi.gif)
样
![](/icons/51739dou.gif)
MDD 可以很好地应用
![](/icons/51739dou.gif)
或不好地应用
![](/icons/51739dou2.gif)
MDD 拥有生成本文中概括
![](/icons/51739de.gif)
好处
![](/icons/51739de.gif)
能力
![](/icons/51739dou.gif)
但该思路方法必须有效地应用
![](/icons/51739dou2.gif)
本文中
![](/icons/51739de.gif)
信息是基于作者
![](/icons/51739de.gif)
MDD 行业应用
![](/icons/51739chengxu.gif)
中
![](/icons/51739de.gif)
经验集
![](/icons/51739de.gif)
![](/icons/51739dou2.gif)
还是同样
![](/icons/51739de.gif)
作者
![](/icons/51739dou.gif)
在 IBM 红皮书 Patterns: Applying Model-Driven Development with Rational Software Architect中更详细地介绍了该主题
![](/icons/51739dou2.gif)
它包含详细
![](/icons/51739de.gif)
案例研究
![](/icons/51739dou.gif)
并且介绍了如何利用 IBM Rational Software Architect 来执行 MDD 项目
![](/icons/51739de.gif)
任务
![](/icons/51739dou2.gif)
利用红皮书中
![](/icons/51739de.gif)
实战将极大地提高 MDD 项目成功
![](/icons/51739de.gif)
机率
延伸阅读
最新评论