【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

MDE 为何错失良机?

  • 2011-11-06
  • 本文字数:1985 字

    阅读完需:约 7 分钟

每个月都会有更多关于编程语言的活动,也会有更多人对编程语言感兴趣。不管是 JavaScript 和 Python 的兴起、 Dart 的发布,还是 Objective-C 的重生,以及“可执行UML ”说明书的发布,看起来业界已经为新编程语言的到来做好了准备。甚至还有人在为创建新语言 Grace 而努力,它会让人们更易于讲授如何编程。InfoQ 上周参加了 COOMP 研讨会,那是 SPLASH 2011 大会的一部分。

研讨会的目的是要了解为什么“针对建模和编程的语言正分道扬镳”。研讨会的组织者在介绍中提到:

  • 一方面,有些开发者想要应用面向对象的设计来获得合适的模型,最终需要面临同时维护模型和程序的挑战。并且,由于很多建模语言和编程语言抽象的层次都是相同的,所以使用单独的建模语言不会带来太多好处。
  • 另一方面,我们看到很多面向对象的代码都是由不称职的开发者编写的,他们对面向对象的设计和开发规则都不是很理解,这导致编写出来的代码非常复杂,而且难以理解和维护,因为在代码中并没有很好地反映出应用程序领域的概念和现象。

研讨会上,Jean Bezivin 在演讲“为什么 MDE 错失良机”中表达了自己的观点。他认为,如果我们根据业界采用的程度以及开始进行大型的建模项目多少来评估 MDE(Model Driven Engineering,模型驱动工程)是否成功,那么就会发现 MDE 已经停滞不前了。他并不认为 MDE 已经到了穷途末路:他向我们展示出,尽管面向对象可以追溯到在上世纪六十年代末就发明出来的SIMULA,但是直到1986 年,第一届OOPSLA 会议的召开,面向对象才成为主流并被广泛采用,三年后Tom Love 才创建出第一个面向对象的杀手级应用程序,当时他用220 行面向对象的代码取代了原来的10,000 行代码。

Jean 提到了 MDE 错失良机的几个原因:

  • 一直没有一个杀手级的应用程序,能够产生可度量和可再现的证据,来证明 MDE 相比以前的解决方案,至少提供了一种显著的提升。
  • 有太多的定义和阵营(MDD、MDSD、MDA、MDE、MDSE、MBD……)
  • 对于 MDE 到底是什么大家始终还有疑惑,例如,大家不了解模拟(Simulation)和 MDE 这两种软件工程截然不同的分支之间的区别。
  • 我们常会使用 UML 作为建模的基础,它是一种松散定义的语言,基于业界的共识创建,不具备很好的模块化原则,而且太大、太复杂、变化过于频繁……
  • 我们对下面这个问题缺少关注:如果 MDE 是解决方案,那么问题是什么呢?
  • 执行 vs 精确度:精确度并不一定需要通过执行才能够获得,而 MDE 的目标不总是要创建可执行的模型。
  • 在编程和建模之间有混淆,二者在 90 年代可视化编程语言出现的时候开始被混为一谈。
  • 人们经常会认为 MDE 增加了复杂度:元模型经常会太大,而且有太多元模型,它们之间的关系和组合都很难于理解。
  • MDE 缺少模块性,即便在 UML 中引入了包和属性(profile)也没有解决这个问题
  • MDE 缺少可移植性:关于模型在时间和空间上的可移植性没有正式的定论(十年前创建的模型,可能在今天已经不可用了)
  • XMI 是失败的产品,最终会消亡,它只是导致了 UML 的维护问题
  • 人们始终没有把平台模型的想法当回事儿,而 CIM/PIM/PSM 都只在表面上是好主意,实质并非如此
  • MDE 过多关注于代码的模型,而对数据的模型关注不够
  • MDE 过多关注于解决方案模型,而对问题模型关注不够
  • MDE 过多关注于信息系统模型,而对业务模型关注不够
  • MDE 过多关注于小型系统的建模,而对大型系统关注不够

Jean 总结说:

MDE 暂时的失败主要是因为:

  • UML,这是主要问题
  • 混淆了建模和编程语言
  • 没有对可执行建模的定义和评估
  • 太多阵营

Jean 还认为,我们在过去的 20 年间学到了很多:

  • 我们从“统一方法”转到了“统一语言”。
  • MDA 清晰地表述了概念,以及模型的重要性。
  • 在模型图的帮助下,MDE 成为了分离和整合各种信息系统概念的最佳解决方案。
  • DLS 已经普遍存在
  • MDE 除了应用在软件工程中之外,还应用在很多其它 IT 领域:数据工程、系统工程、业务工程等。

Jean 提到,移动设备出现之后,应用程序最终用户的数量正在快速增长,而在未来的几年间开发者的数量可能无法满足构建应用程序的需要。

他在结论中认为,在语义网络(Semantic Web)和更新的编译技术之间,已经不存在 MDE。而只是保留了轨迹:用于记录设计图和文档的 DSL(基于能够识别语法和 XML 的技术)和 UML。

他在演讲的过程中提出了很重要的问题:有了 JavaScript、Dart 和 GWT 之类的工具,我们是否已经开始在构建这样的编程语言,你不需要使用它编程,而是要用来生成一种语言?

你是否同意 Jean 的观点? 你认为软件工程的前景如何?让新人们继续深陷在编程语言中呢?还是即将出现新一代的模型驱动的工程,从而改变我们现在所认知的软件工程?

译者注:MDE 即 Model Driven Engineering 的缩写,模型驱动工程,它是一种软件开发的方法学,专注于创建领域模型(domain model)。这种方法的目的是,通过最大化系统之间的兼容性、简化设计过程、改善开发系统的个人和团队之间的沟通来提高生产力。

查看英文原文: Why did MDE Miss the Boat?

2011-11-06 03:131855
用户头像

发布了 340 篇内容, 共 126.1 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

和鲸 ModelWhale 与华为 OceanStor 2910 计算型存储完成兼容性测试

ModelWhale

华为 信创 数据存储 数据科学 数据科学平台

强静态类型,真的无敌

树上有只程序猿

静态 类型

慕圣妃轻医美4998系统开发

张泽🐟APP小程序开发定制

软件测试/测试开发丨App自动化—CSS 定位与原生定位

测试人

Python 程序员 软件测试 自动化测试 测试开发

浏览器可直接访问 Dubbo、gRPC 后端微服务,Dubbo-js 首个alpha 版本来了!

阿里巴巴云原生

阿里云 云原生 dubbo

一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务一图看懂CodeArts Inspector 三大特性,带你玩转漏洞管理服务

华为云开发者联盟

云计算 后端 华为云 漏洞修复 华为云开发者联盟

XMind for mac (XMind思维导图)v23.09中文激活版

mac

XMind 思维导图软件 苹果mac Windows软件

如何构建安全的App网络通信?

ZA技术社区

数据安全 众安科技 众安保险 ZA技术社区

作为前端应该了解的后端常识

程序员万金游

Vue js #前端 #HTTP

Web3D数字孪生智慧搅拌站可视化物联网平台

2D3D前端可视化开发

物联网 可视化 数字孪生 智慧搅拌站 智慧拌和站

智慧公厕:改善城市生活的小细节

光明源智慧厕所

报名开始|聚焦云原生供应链、AI 基础设施!KCD 2023 杭州站等你

OpenAnolis小助手

操作系统 杭州 龙蜥社区 kata KCD

中国企业出海记:跨文化管理须“换鞋走路”

出海的猹

管理 文化 企业出海

ps必备插件Adobe Camera Raw 16 for Mac(Raw格式图像ps插件) v16.0.0中文激活版

晴雯哥

一图看懂华为云CodeArts Inspector 三大特性,带你玩转漏洞管理服务

华为云PaaS服务小智

云计算 软件开发 华为云

巧用指标平台DataIndex,五步法轻松实现指标管理

袋鼠云数栈

大数据 数据中台 指标 指标管理 指标建设

2024北京国际软件展览会(世亚软博会)

AIOTE智博会

软件博览会 软件展 软博会 世亚软博会 北京软博会

南扬集团轻医美4998系统开发

张泽🐟APP小程序开发定制

元宇宙Gamefi链游系统定制开发搭建

V\TG【ch3nguang】

2023云栖大会即将开幕,速来免费预约!

阿里云视频云

云计算 阿里云 云栖大会

如何保持前端开发者的竞争力

这我可不懂

前端开发

代码混淆界面介绍

雪奈椰子

什么是公链?公链开发优缺点分析 公链开发公司有哪些儿

西安链酷科技

公链开发 公链团队

云原生网关可观测性综合实践

阿里巴巴云原生

阿里云 微服务 云原生 监控

Viscosity:Mac端最好用的open客户端

晴雯哥

OpenHarmony嵌套类对象属性变化:@Observed装饰器和@ObjectLink装饰器

OpenHarmony开发者

最新 DaVinci Resolve Studio 18 Mac破解版安装详细步骤 附 达芬奇调色软件18 激活码 支持 M1/M2

晴雯哥

认证授权双保驾 身份管理的选择关键 ——华为云OneAccess应用身份管理服务 (第一篇 工具介绍)

华为云PaaS服务小智

云计算 软件开发 华为云 应用身份管理

通过零代码ETLCloud实现数据自动化同步

RestCloud

数据同步 ETL

软件测试/测试开发丨App自动化测试——显示等待高级使用

测试人

Python 程序员 软件测试 app自动化测试 显式等待

开发搭建足球赛事APP软件平台,获利方式

软件开发-梦幻运营部

MDE为何错失良机?_架构_Jean-Jacques Dubray_InfoQ精选文章