MDD(模型驱动开发)

前言导读

  当下企业软件应用开发面临着需求复杂多变、新的需求和系统不断增长,软件系统变得越来越复杂,普通的软件开发方式难以快速满足用户需求。为了解决这些问题,就出现了很多新的方法,其中最突出的一个就是模型驱动开发 MDD (Model Driven Development)。

  基于高度业务模型驱动开发MDD,通过使用高度抽象的领域业务模型作为构件,完成代码转换实现或各种模型驱动引擎配置支撑,降低开发成本,应对复杂需求变更。其基本思想是让开发中心从编程转移到高级别抽象中去,通过模型转成代码或其他构件来驱动部分或全部的自动化开发。它主要为了解决软件的两个根本危机:复杂性和变更能力

关键词解读

  说到模型驱动开发就不得不先了解几个相近的概念;

模型驱动架构(MDA,Model Driven Architecture)

  MDA 是由国际对象管理组织(OMG,Object Management Group)于2001年7月提出的基于MDD形式化后的模型驱动架构。

  为了实现MDA的三大目标:轻便可移植性、互操作性和可重用性,采用了模型和技术分离的架构设计。使用一定的建模标准(UML、MOF、XMI等)构建描述应用程序或集成系统的业务功能和行为的模型,这些模型独立于具体平台并且和实现具体业务功能和行为的特定技术代码分离,从而实现了业务和应用程序逻辑与底层平台技术的分离,这种分离也带来了应用程序的核心与技术变化周期的隔离。系统的业务部分和技术部分都可以各自进化而互不影响 - 业务逻辑响应业务需求,技术部分按业务需要利用新的技术开发。

上图为MDA 结构示意图。最左侧为OMG提出的架构理论,其次是 MDA 的核心技术:MOF ( Meta Object Facility ,元对象设施)、 CWM (Common Warehouse Metamodel ,公共数据仓库元模型)和 UML . MDA 的主要工作就是要把基于这些技术建立的PIM 转换到不同的中间件平台上,得到对应的 PSM .PSM中给出的是目前主要针对的实现平台:CORBA 、 XML 、JAVA 、 Web Services 和 .NET .显然,随着技术的发展,这个列表将不断扩充。最后是基于PSM平台相关模型在公共服务及垂直领域等组件或应用中进行模型驱动开发。

领域驱动设计/模型驱动设计(DDD,Domain-Driven Design)

  DDD是由Eric Evans最先提出,目的是对软件所涉及到的领域进行建模,以应对系统规模过大时引起的软件复杂性的问题。整个过程大概是这样的,开发团队和领域专家一起通过通用语言(Ubiquitous Language)去理解和消化领域知识,从领域知识中提取和划分为一个一个的子领域(核心子域,通用子域,支撑子域),并在子领域上建立模型,再重复以上步骤,这样周而复始,构建出一套符合当前领域的模型。

  建模的过程是由不同阶段的成员来完成,有些模型之间有引用关系,应用软件通过所有人的建模工作而构建起来。

模型驱动开发(MDD, Model Driven Development)

  MDD 上面简介中已经解释过的,这里讲名词放在一起便于对比。

  模型驱动开发框架(MDF, MDD Framework)

  MDF 实际上就是一套开发框架,可以是基于spring、spring boot 等技术开发框架搭建的脚手架,承载了模型驱动相关的设计、开发方法等的编码框架。

  那么对于上面几个概念之间的关系是怎么样的?

  MDA环境下的系统开发方式就是在开发活动中通过创建各种模型精确描述不同的问题域,并利用模型转换来驱动包括分析、设计和实现等在内的整个软件开发过程。

  不难看出MDA说的是整体的软件架构设计使用的是模型驱动;而在软件开发的过程中,对不同领域的业务需求进行分析、抽象建模和技术框架分层所常用的分析方法就是DDD;整个软件的开发活动就称之为MDD

新体验 MDD-MDF

  整个的模型驱动开发的目的就是为了解决软件的复杂性和变更能力,从而达到软件编程工业化产出的目的。

传统的瀑布式开发流程如下图,每一个需求的产生都需要进行需求分析、设计、编码、测试等一系列流程。

  模型驱动框架的开发流程如下图

    对比上面两图可以了解到模型驱动的优势在于不用为每个需求定制化的编码,而是通过高度抽象化的模型映射到具体的业务元数据上来实现需求功能;这样大大减少了编码的重复工作,同时也提高了软件的可变更性。

  MDA架构设计中,MDA需要从需求采集和理解业务需求开始;PIM和PSM可以由不同团队完成,独立工作,但是组合后能产生健壮的业务解决方案;整个流程中模型转化和相关模型的驱动引擎是核心。

  接下来重点了解一下我们的MDD的脚手架(MDF)都做了什么?

  在脚手架中主要的是通过元数据SDK、规则SDK、UI元数据SDK和其他相关支持工具包完成对整体的模型驱动开发支持的。其中元数据SDK包含业务元数据的建模、数据查询等相关功能;UI元数据SDK包含了UI模板定义查询相关功能,搭配Node的前端驱动项目进行UI模板的渲染和组件的过滤展示等;而规则SDK包含了对于业务数据CRUD的默认规则、编码规则、唯一性校验规则、参照查询规则以及卡片翻页等默认规则。接下来让通过一个更完整的图来看MDD开发脚手架。

  首先,需求输出到开发阶段,根据需求设计抽取定义业务元数据,及页面设计的UI元数据。

  其次,业务元数据通过XML或统一中央元数据仓库的形式加载到脚手架项目启动中。

  再次,浏览器访问node前端,node前端路由请求到java后端Controller.

  最后,后端处理逻辑在规则执行引擎中执行相应的规则,分别查询UI元数据用于页面渲染,以及业务数据的查询。并将结果返回给node前端做渲染展示。

  目前脚手架功能中部分扩展功能上图没有体现,这些扩展功能包括:

  a. UI元数据查询逻辑通过规则引擎查询,可通过增加前置或后置规则进行功能扩展;UI元数据支持远程获取;

  b. Redis 是否使用可通过开关配置。并支持单机模式,哨兵模式,集群模式配置;

  c. MySQL数据库支持规则、UI元数据和业务数据区分不同的数据源存储;

  d. 支持Ali OSS 存储;

  e. 支持基于ES的参照及翻译;

  f. 接入统一三方包管理和统一异常及日志;

  g. 支持MySQL、Redis、应用基本信息、环境信息等的健康检查与监控;

  以上就是MDD的基本实现原理和功能描述,整体看上去还是很简单清晰的。

总结展望

  下面通过下图表达一下模型驱动开发的优势

模型驱动开发在企业应用开发过程中,通过把基础服务及各领域当作独立的问题域,分别进行需求分析和抽象建模搭载模型驱动脚手架提供基础支撑服务或领域通用服务,再通过部分个性化业务的建模实现等提供的个性化能力 构成整个的企业应用。

  当下及未来的企业应用开发使用MDD, 不仅可以通过重用模型来提高开发效率,对于需求的复杂多变由模型驱动的可扩展性和多态来应对。并且对于整个应用的统一规范、统一管理和标准化的文档输出提供更加便捷的途径。例如,以前需要开发十几个表单页交互的情况,现在使用模型驱动开发,再也不需要996,轻轻松松完成开发,早点下班回家带娃!!!还在犹豫什么,赶快来尝尝鲜吧~

文章来源:一顿操作猛如虎 “模型驱动开发”了解一下 - 知乎

探索模型驱动开发 (MDD) 和相关方法-UML应用-火龙果软件工程

探索模型驱动开发 (MDD) 和相关方法(下)-UML应用-火龙果软件工程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1380523.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RSCMVR

也是之前发了 ~~ 又带来马教授的~~ 神器稀疏卷积性能和稳健性超越ResNet 标题就是简写可好? 尽管深度神经网络在图像分类方面具有很强的经验性能(empirical performance),但这类模型往往被视为「黑盒」,最为人诟病的就是「难以解…

EMD和VMD

作者:桂。 时间:2017-03-06 20:57:22 链接:http://www.cnblogs.com/xingshansi/p/6511916.html 前言 本文为Hilbert变换一篇的内容补充,主要内容为: 1)EMD原理介绍 2)代码分析 3&#xff09…

什么是MDM

MDM或移动设备管理是一种软件应用程序,用于管理企业中的终端,如笔记本电脑、智能手机、平板电脑等。随着越来越多的员工使用这些设备,各种形式和规模的企业现在都转向移动设备管理,以增强数据安全性并提高生产力。 MDM是什么意思…

AVS3中的AMVR和EMVR

在AVS2中运动预测中使用的MV都是1/4像素精度,通过在整像素间插值能显著提升非整像素运动预测的精度,同时带来的问题是随着MV精度的提高编码MVD所需的比特数也会增加。 AMVR AMVR支持的MVD编码5种精度的MVR{1/4,1/2,1,2,4},索引为0到4&#x…

无线网络视频监控系统基本概念和术语

无线网络视频监控系统基本概念和术语 1.网络摄像机与模拟摄像机的区别 模拟摄像机,或称摄像头,输出CVBS模拟视频信号,PAL制或者NTSC制。模拟摄像机多采用CCD器件,目前也有采用CMOS器件的。有枪机、半球、球机等多种形式&#xff0…

掌握Python的X篇_27_Python中标准库文档查阅方法介绍

前面的博文介绍了python的基本语法、模块及其导入方法。前人将各种方法封装成模块、库、函数供我们使用,如何去使用前人做好的东西,那就需要去查阅文档。今天就介绍python中官方文档的查阅方式。对于初学者而言,python自带的文档就已经足够好…

基本动态规划问题的扩展

基本动态规划问题的扩展 应用动态规划可以有效的解决许多问题,其中有许多问题的数学模型,尤其对一些自从57年就开始研究的基本问题所应用的数学模型,都十分精巧。有关这些问题的解法,我们甚至可以视为标准——也就是最优的解法。…

shell脚本安装nginx

shell脚本原理 以删除桌面文件的脚本为例,执行脚本后,shell脚本将代码给内核,内核读取后执行命令,如果shell脚本也在桌面上,执行后这个脚本文件也会被删除。 变量 echo $SHELL$符表示SHELL是一个变量,变量…

Python(七十九)字符串的常用操作——字符串内容对齐操作的方法

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

docker实现Nginx

文章目录 1.docker 安装2.docker环境实现Nginx 1.docker 安装 1.使用环境为红帽8.1,添加源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.安装 yum install docker-ce docker-ce-cli containerd.io显示出错 Docker C…

Vue [Day7] 综合案例

核心概念回顾 state:提供数据 getters:提供与state相关的计算属性 mutations:提供方法,用于修改state actions:存放异步操作 modules:存模块 功能分析 https://www.npmjs.com/package/json-server#ge…

反介入/区域拒止:现代战争的演变

译者说明 本文译自美国空军Christopher J. McCarthy少校的一篇文章,略去了原文最后的作者简介。 原文地址(可能需要科学上网): https://www.usnwc.edu/Lucent/OpenPdf.aspx?id95 本文仅为翻译,不代表译者赞成或反对原…

UE4莫名其妙崩溃的解决办法

pin error stack edgraph balabala...... 先检查蓝图把报错的节点全部去掉,有的运行不会提示蓝图报错,只能一个一个找。。。。 c报错一般都会有提示,所以基本都可以解决 把磁盘空间留大一点,玄学 总是在这里报错,这个不用管&am…

叛乱怎么自定义服务器,» 叛乱:沙漠风暴 服务器安装Mod教程

叛乱:沙漠风暴 服务器安装Mod教程 4.6 (78) 叛乱:沙漠风暴 服务器 租用 v2pg.com 获取API KEY 比如 59f0601123331222f0755f9e8551ea639 就是申请的KEY, 保存好。 打开后台 “服务器设置” 然后编辑 Engine.ini

叛乱联机服务器未响应,叛乱沙漠风暴怎么开服 叛乱沙漠风暴开服操作指南详解 安装准备-游侠网...

叛乱沙漠风暴怎么开服?游戏一款多人联机操作游戏,在开服前期要做好相应的准备工作,也就是设置一些选项,这里给大家带来了“xudong162”分享的叛乱沙漠风暴开服操作指南详解,详情一起看下文中介绍吧。 推荐阅读: 开服操…

叛乱联机服务器未响应,叛乱沙漠风暴开服注意事项及操作指南经验一览

叛乱沙漠风暴开服注意事项及操作指南经验一览,该游戏其实是一款多人联机的操作游戏,玩家在开服前期要做好相应的准备工作,其实也不是什么困难的事,就是设置一些选项方便操作,这里给大家带来了叛乱沙漠风暴开服注意事项…

叛乱2 linux服务器,叛乱沙漠风暴服务器配置教程 叛乱沙漠风暴怎么开服

第 2 页 服务器配置 服务器配置 大多数服务器配置是通过INI文件和启动参数执行的。 可以使用任何纯文本编辑器编辑INI文件,例如Notepad,Notepad ,Sublime Text和VSCode。 配置文件的位置位于以下目录中(相对于安装目录): Windows:…

叛乱找不到社区服务器,叛乱沙漠风暴常见问题及解决方法_叛乱沙漠风暴常见问题QA_游戏堡...

《 1.Q:游戏卡在读取页面怎么办 A:看看你按回车键没 一直读取进不去游戏说明网络不好 直接卡死说明电脑玩不了这游戏了,建议升级配置 2.Q:游戏什么配置可以玩 A:可游玩最低配置:GTX950M,i74700&…

叛乱沙漠风暴不显示服务器,叛乱沙漠风暴进服务器闪退怎么回事_叛乱沙漠风暴闪退解决方法...

相信大家在玩叛乱沙漠风暴的时候,偶尔也会遇到一进入服务器就闪退的情况吧,这非常的影响我们的游戏体验,那么出现这种状况的原因是什么呢?又该如何解决呢?就让我们一起来看一看吧! 叛乱沙漠风暴进服务器闪退…

在Vue中动态引入图片为什么要用require

静态资源和动态资源 静态资源 动态的添加src 动态资源 我们通过网络请求从后端获取的资源 动态的添加src会被当成静态资源 动态的添加src最终会被打包成: 动态的添加图片最会会被编译成一个静态的字符串,然后再浏览器运行中会去项目中查找这个资源…