元模型驱动架构(M-MDA)思想及应用
一、模型驱动开发(MDD)介绍:`
MDD(模型驱动开发)代表了一套理论和工业化软件开发的方法框架,在软件开发全生命周期中系统的使用模型作为主要工具,目标是解决软件的两个根本危机:复杂性和变更能力 。 MDD的核心思想是让开发者的开发重心从编码转移到更高级别抽象,通过模型生成代码或其他工具来驱动自动化开发。 模型驱动开发的优势: 提高产能 :开发快、降低成本、提高质量 可维护性 :高级别模型与技术分类,技术架构的改变意味只是模型的一种新的转换 一致性 :手工编码和架构决策容易出错,MDD可以确保生成的交付物是一致的 可重用性 :模型、转换和架构都是可以重用的,由于架构和技术问题已经被解决,所以开发新功能的风险也低 改善涉众沟通 :模型忽略系统逻辑行为的底层实现,而直接展现问题域,这样可以保证和涉众使用同一种语言进行沟通 改善设计沟通 :模型与系统是匹配及时更新的,所以可以通过模型来改善系统设计的讨论和沟通 捕获领域知识 :可以加强领域专家对系统的直接影响,通过模型还可以帮助组织进行知识管理 Business-IT对齐 :关注问题域,关联技术域,一种业务和IT对齐的方法 模型作为一种长期的核心资产 :高级别的模型作为核心资产管理起来,只有在业务需求变更时才会进行更改 推迟技术决策 :应用开发在早期关注业务逻辑问题,对于技术选择可以推迟到后期 提供及时的文档 :通过模型可以生成很多同步的文档,利于与不同涉众进行交流
二、MDA介绍:
MDA 是由国际对象管理组织(OMG,Object Management Group)于2001年7月提出的基于MDD形式化后的模型驱动架构。 为了实现MDA的三大目标:轻便可移植性、互操作性和可重用性,采用了模型和技术分离的架构设计。使用一定的建模标准(UML、MOF、XMI等)构建描述应用程序或集成系统的业务功能和行为的模型,这些模型独立于具体平台并且和实现具体业务功能和行为的特定技术代码分离,从而实现了业务和应用程序逻辑与底层平台技术的分离,这种分离也带来了应用程序的核心与技术变化周期的隔离。系统的业务部分和技术部分都可以各自进化而互不影响 - 业务逻辑响应业务需求,技术部分按业务需要利用新的技术开发。
三、模型驱动的流程
四、模型的转换 从源模型变换到目标模型的过程。变换是按照变换定义源模型自动生成目标模型。而变换定义是一组变换规则,这些规则共同描述了用源语言表述的模型如何变化为目标语言描述的模型。变换规则则是对源语言中一个(或多个)构造如何变换位目标语言中的一个(或多个)构造的描述。它与传统软件开发流程的根本不同点在于模型之间的转换是由工具执行完成而不是手工。
五、M-MDA介绍 至今MDA实现方案有一个共同缺陷在于模型的业务语义太弱,大量的业务语义无法反映在业务模型(PIM)中,从而造成业务模型重用价值低。针对MDA的缺点,M-MDA(元模型驱动架构)的基本思想是针对特定领域设计描述业务模型的元数据模型,将描述业务功能所需的各类业务语义分别以相应类型的元数据予以描述,根据业务模型即可直接得到最终的运行系统。 六、元数据模型分层级运行引擎处理流程
七、M-MDA的优点总结 1.极大的改变软件开发方式,使开发人员的关注焦点由代码转向模型,特别是元数据模型的编写上。 2.模型执行是可以相互转化的,元数据模型可以与表单模型、ER模型互相转化。例如表单模型可以从元数据模型中抽取UI相关的部分自动生成单据界面,与任务处理界面完美结合,当表单保存时,业务操作相关的数据与单据数据一起提交,处理引擎从元数据模型中抽取出与数据校验/保存相关的部分自动完成单据数据的保存,单据数据的保存与流程控制的处理在一个事务中完成。 3.一次开发可以适配多种技术平台和多种应用场景,业务开发人员只需根据业务领域配置元数据模型来描述业务语义,就可以通过运行引擎自动生成使用于PC、Mobile、Pad的业务功能。相关的业务功能,如导入导出、发起审批流、打印等都可以由相应场景的运行引擎从元数据描述中按需抽取所需元数据自动完成。
知识小贴士:作者尽心运营的知识星球社群【请点击:简道源码&&架构分析 加入】(可添加运营同学WX:wx454876882)持续拉新中...,定期的jdk与核心框架源码解析,主流行业解决方案与架构设计资料查阅与下载尽在其中。帮助行业新人和有志于技术的专业人士体系化的学习源码与系统架构,获取业界知名技术峰会和厂商对外公布的主流业务场景的解决方案。同时这个星球也是一个社群,大家可以在社群中结识有识之士,共同探讨,答疑解惑。希望可以通过这个星球帮助大家每日进步一点点,一年持续365天,共勉
本星球 聚焦于Java源码分析,架构解析。低代码,可扩展和高可用架构设计。帮助你更好地学编程,欢迎想进步的同学!仅精品案例的资料整理即物超所值。让我们大家一起每日进步一点点~~,你可以:
1. 阅读星球专属的编程知识和优质文章
2.JAVA知识从点和面,深度挖掘。通过点,形成面。提升自身的技术广度和深度。
3. 加入星球专属交流群,帮你找到学习伙伴、获取每日优质文章推送等
4.业界优秀案例资料学习及下载
5. 和伙伴们一起学习打卡,增加动力,共同进步
6.工作、学习和方法论。如何提升软实力,比如写文章、画架构图、技术产品的营销、社区的运营等等。
7.招聘、面试和晋升。如何提前准备面试,有什么套路?如何提升硬实力,少走弯路?
8.提供简历优化服务哟。本人常年招聘,也就面试了1000+程序员和架构师~~
9.解答你的疑问。
10.每日进步一点点(最重要的一点): 让自己与众不同,每天学习1-2小时源码和架构知识,365天后再回首,1年前的自己可能是个SB吧。用通勤的时间让自己成长,让优秀变成一种习惯。
元模型驱动架构(M-MDA)思想及应用相关推荐
- 转:解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述
原文: 解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述 前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次 ...
- 【2016年第4期】大数据应用系统的消息驱动架构
贵芳1,李廉1,杨静1,武永卫2 1.合肥工业大学计算机与信息学院,安徽 合肥 230009: 2.清华大学计算机科学与技术系,北京 100084 摘要:基于消息驱动框架的软件开发成为大数据应用系统的 ...
- 第三篇:稳定性之借风险之力驱动架构演进
架构设计首先依据是基于业务需求,其次架构设计是经过系统性地思考, 权衡利弊之后结合现有资源约束下的最合理决策,最终明确的系统骨架: 包括子系统, 模块, 组件. 以及他们之间协作关系, 约束规范, 指 ...
- App 后台架构设计方案 设计思想与最佳实践
CSDN 2016博客之星评选结果公布 [系列直播]零基础学习微信小程序! "我的2016"主题征文活动 博客的神秘功能 App 后台架构设计方案 ...
- DDD(Domain-Driven Design)领域驱动架构介绍
1. 什么是领域模型 在理解领域模型之前,我们先思考一下软件开发的本质是什么.从本质上来说,软件开发过程就是问题空间到解决方案空间的一个映射转化,如图1所示. 在问题空间中,我们主要是找出某个业务面临 ...
- 领域驱动设计(DDD)-基础思想
一.序言 领域驱动设计是一种解决业务复杂性的设计思想,不是一种标准规则的解决方法.在领域驱动设计理念上,各路大侠的观点也是各有不同,能力有限.欢迎留言讨论. 二.领域驱动设计 DDD是什么 wiki释 ...
- i2c驱动架构 davinc dm368 i2c驱动分析
预备知识 在阅读本文最好先熟悉一种i2c设备的驱动程序,并且浏览一下i2c-core.c以及芯片提供商的提供的i2c总线驱动(i2c-davinci.c).标题党请见谅! 其实i2c接口非常的简单,即 ...
- 【驱动】linux下I2C驱动架构全面分析
I2C 概述 I2C是philips提出的外设总线. I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL ,使用SCL,SDA这两根信号线就实现了设备之间的数据交互,它方便了工程师的布线. ...
- linux设备驱动之pci设备的驱动架构
驱动工程师最关心就是如何编写PCI设备驱动了. 经过前面的处理,所有设备及其信息都已经遍历出来了.在深入分析PCI驱动架构之前,我们来回顾一下前面遍历PCI设备时,对pci_dev->dev的一 ...
最新文章
- 机器人产业:借人工智能突破“拐点”
- Cordova打包的Vue项目在IOS无法拉起支付宝和微信支付
- 在文件中读取列表功能
- QT VS环境安装后出现生成的程序can not start, can not find Qt pligins “windos“ 问题 2021-06-13
- mysql5.7免安版配置_mysql5.7免安装版配置
- centos 6 mysql 5.7.13 编译安装_Centos 6.5 下面 源码编译 安装 Mysql 5.7.13
- 微信也许会有重大变化
- 数据结构(十三)树的遍历
- DNS基本概念和相关命令
- java抽象和接口的理解_Java学习笔记16---抽象类与接口的浅显理解
- 用c语言编写程序相似性检测,程序代码相似性检测在论文抄袭判定中的应用
- 数值分析正割法python3实现并绘图
- 肿瘤免疫疗法 | 细胞治疗和PD1/PDL1 | Tumor immunotherapy | cell therapy
- 计算机监控系统检验规程,计算机监控系统护规程.doc
- Excel中倒排数据
- 怎么利用抖音进行网络推广?短视频营销如何做推广?
- Python 第三方模块 统计1 statsmodels模块1 简介,回归
- Pytorch中tensor维度和torch.max()函数中dim参数的理解
- 附带有背景图、文字的二维码
- 【深度学习入门:基于Python的理论与实现】书本学习笔记 第三章 神经网络