MDSF:模型驱动开发(MDD)介绍
2010-09-20 11:22
302 查看
模型驱动开发Model Driven Development (MDD) 是一种以模型作为主要工件的高级别抽象的开发方法,模型在工具的支持下,被作为核心资产被转换成代码或者可运行配置。现在软件业存在多种MDD开发方法,本篇将对MDD进行概要介绍。
![](http://pic002.cnblogs.com/images/2010/14032//2010092011564424.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092510512197.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092509380825.png)
使用模型作为文档和规范是有价值的,但是它需要严格的管理方式来确保模型是持续更新的。在实际工作中,我们迫于时间压力经常会出现于实现不一致的模型,这对开发和项目其实是不利的。而MDD的基本思想是让开发中心从编程转移到高级别抽象中去,通过模型转成代码或其他工件来驱动部分或全部的自动化开发。
![](http://pic002.cnblogs.com/images/2010/14032/2010092013495544.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092013561016.jpg)
模型是一种建模语言,它需要我们自己根据业务和技术需要去设计它,在架构、分析、设计、实现等不同阶段都会存在多种模型, 如企业架构模型、技术架构模型、领域模型、UI模型、数据库建模、业务规则模型、系统部署模型、测试模型等。
![](http://pic002.cnblogs.com/images/2010/14032/2010092014103121.png)
建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。
![](http://pic002.cnblogs.com/img/zhoujg/201009/2010092011165145.jpg)
![](http://pic002.cnblogs.com/images/2010/14032/2010092013544510.png)
建模
![](http://pic002.cnblogs.com/img/zhoujg/201009/2010091710405682.png)
模型转换
![](http://pic002.cnblogs.com/images/2010/14032/2010092509422517.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092014095523.png)
模型和建模这两部分内容已经存在很多方法,它们在现在软件开发过程中已经处于重要位置,但是在需要哪些表达模型以及如何使用这些模型存在着差异。传统的模型只是一个设计蓝图,而MDD必须满足额外的要求,这些模型必须是可读的,也就是说必须存在第三个阶段,也就是模型转换:model to model (M2M) 和 model to code (M2C)
可维护性:高级别模型与技术分类,技术架构的改变意味着只是模型的一种新的转换
一致性:手工编码和架构决策容易出错,MDD可以确保生成的工件是一致的
可重用性:模型、转换和架构都是可以重用的,由于架构和技术问题已经被解决,所以开发新功能的风险也低
改善涉众沟通:模型忽略系统逻辑行为的底层实现,而直接展现问题域,这样可以保证和涉众使用同一种语言进行沟通
改善设计沟通:模型与系统是匹配及时更新的,所以可以通过模型来改善系统设计的讨论和沟通
捕获领域知识:可以加强领域专家对系统的直接影响,通过模型还可以帮助组织进行知识管理
Business-IT对齐:关注问题域,关联技术域,一种业务和IT对齐的方法
模型作为一种长期的核心资产:高级别的模型作为核心资产管理起来,只有在业务需求变更时才会进行更改
推迟技术决策:应用开发在早期关注业务逻辑问题,对于技术选择可以推迟到后期
提供及时的文档:通过模型可以生成很多同步的文档,利于与不同涉众进行交流
![](http://pic002.cnblogs.com/images/2010/14032/2010092014083738.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092014080751.png)
面向语言编程 LOP
软件工厂 SOftware Factories
产生式编程 Generative Programming
语言工作平台 Language Workbenches
意图软件 Intentional Software
模型驱动开发 MDA
![](http://pic002.cnblogs.com/images/2010/14032/2010092014173078.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010101516423013.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010102014570218.png)
模型驱动开发(MDD)的一些参考资料
MDE - Model Driven Engineering - reference guide
参考:Model Driven Development – Future or Failure of Software Development
推荐:你可能需要的在线电子书
![](http://images.cnblogs.com/cnblogs_com/zhoujg/040810_0145_blog11.gif)
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]
![](http://pic002.cnblogs.com/images/2010/14032//2010092011564424.png)
定义
在过去多年,软件开发面临了多个挑战,新的需求和存在系统不断增长,系统也变得越来越复杂,以至于我们很难及时的构建它们。为了解决这些问题,就出现了很多新的方法,其中最突出的一个就是模型驱动开发。 MDD代表了一套理论和工业化软件开发的方法框架,在软件开发全生命周期中系统的的使用模型作为主要工件,它主要为了解决软件的两个根本危机:复杂性和变更能力 。![](http://pic002.cnblogs.com/images/2010/14032/2010092510512197.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092509380825.png)
使用模型作为文档和规范是有价值的,但是它需要严格的管理方式来确保模型是持续更新的。在实际工作中,我们迫于时间压力经常会出现于实现不一致的模型,这对开发和项目其实是不利的。而MDD的基本思想是让开发中心从编程转移到高级别抽象中去,通过模型转成代码或其他工件来驱动部分或全部的自动化开发。
模型是一种抽象的语言
![](http://pic002.cnblogs.com/images/2010/14032/2010092013495544.png)
多种模型
![](http://pic002.cnblogs.com/images/2010/14032/2010092013561016.jpg)
模型是一种建模语言,它需要我们自己根据业务和技术需要去设计它,在架构、分析、设计、实现等不同阶段都会存在多种模型, 如企业架构模型、技术架构模型、领域模型、UI模型、数据库建模、业务规则模型、系统部署模型、测试模型等。
![](http://pic002.cnblogs.com/images/2010/14032/2010092014103121.png)
建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。
![](http://pic002.cnblogs.com/img/zhoujg/201009/2010092011165145.jpg)
三个阶段
建立模型![](http://pic002.cnblogs.com/images/2010/14032/2010092013544510.png)
建模
![](http://pic002.cnblogs.com/img/zhoujg/201009/2010091710405682.png)
模型转换
![](http://pic002.cnblogs.com/images/2010/14032/2010092509422517.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092014095523.png)
模型和建模这两部分内容已经存在很多方法,它们在现在软件开发过程中已经处于重要位置,但是在需要哪些表达模型以及如何使用这些模型存在着差异。传统的模型只是一个设计蓝图,而MDD必须满足额外的要求,这些模型必须是可读的,也就是说必须存在第三个阶段,也就是模型转换:model to model (M2M) 和 model to code (M2C)
优势
提高产能:开发快、降低成本、提高质量可维护性:高级别模型与技术分类,技术架构的改变意味着只是模型的一种新的转换
一致性:手工编码和架构决策容易出错,MDD可以确保生成的工件是一致的
可重用性:模型、转换和架构都是可以重用的,由于架构和技术问题已经被解决,所以开发新功能的风险也低
改善涉众沟通:模型忽略系统逻辑行为的底层实现,而直接展现问题域,这样可以保证和涉众使用同一种语言进行沟通
改善设计沟通:模型与系统是匹配及时更新的,所以可以通过模型来改善系统设计的讨论和沟通
捕获领域知识:可以加强领域专家对系统的直接影响,通过模型还可以帮助组织进行知识管理
Business-IT对齐:关注问题域,关联技术域,一种业务和IT对齐的方法
模型作为一种长期的核心资产:高级别的模型作为核心资产管理起来,只有在业务需求变更时才会进行更改
推迟技术决策:应用开发在早期关注业务逻辑问题,对于技术选择可以推迟到后期
提供及时的文档:通过模型可以生成很多同步的文档,利于与不同涉众进行交流
经济模型
![](http://pic002.cnblogs.com/images/2010/14032/2010092014083738.png)
![](http://pic002.cnblogs.com/images/2010/14032/2010092014080751.png)
MDD方法相关
特定领域建模 DSM:OpenExpressApp将借鉴此方法面向语言编程 LOP
软件工厂 SOftware Factories
产生式编程 Generative Programming
语言工作平台 Language Workbenches
意图软件 Intentional Software
模型驱动开发 MDA
![](http://pic002.cnblogs.com/images/2010/14032/2010092014173078.png)
一个参考的模型驱动DSL框架
![](http://pic002.cnblogs.com/images/2010/14032/2010101516423013.png)
Eclipse Modeling Project
![](http://pic002.cnblogs.com/images/2010/14032/2010102014570218.png)
模型驱动开发(MDD)的一些参考资料
MDE - Model Driven Engineering - reference guide
参考:Model Driven Development – Future or Failure of Software Development
推荐:你可能需要的在线电子书
![](http://images.cnblogs.com/cnblogs_com/zhoujg/040810_0145_blog11.gif)
欢迎转载,转载请注明:转载自周金根 [ http://zhoujg.cnblogs.com/ ]
相关文章推荐
- MDSF:模型驱动开发(MDD)介绍 | 一群共同享有幸福生活的成长伙伴
- MDSF:模型驱动开发(MDD)介绍
- 模型驱动开发(MDD)介绍
- 模型驱动开发(MDD)介绍 推荐
- 使用模型驱动开发(MDD)的十五个理由
- 使用模型驱动开发(MDD)的十五个理由
- MDD:使用模型驱动开发方式进行快速开发(多图预警)
- 探索模型驱动开发(MDD)和相关方法,第 4 部分
- 探索模型驱动开发(MDD)和相关方法,第 3 部分
- “MDD”--模型驱动开发 选择自 oosky 的 Blog
- Windows 7驱动开发系列(四)--WDM模型介绍
- 使用模型驱动开发(MDD)的十五个理由
- 模型驱动开发(MDD)的未来
- Windows 7驱动开发系列(四)--WDM模型介绍
- 使用模型驱动开发(MDD)的十五个理由
- 模型驱动开发(MDD)的一些参考资料
- MDD:使用模型驱动开发方式进行快速开发(多图预警) - lingx - 博客园
- 领域模型驱动开发利器-Sculptor介绍
- 使用 Design Pattern Toolkit 进行模型驱动的开发入门
- Linux驱动程序开发 - 设备驱动模型初探(一)