写点什么

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:131970
用户头像

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

关注

评论

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

12月云短信报告出炉,阿里云闯进前三

博睿数据

征文投稿丨使用轻量应用服务器部署Hadoop云集群

阿里云弹性计算

hadoop 轻量应用 征文投稿

Kubernetes 下部署 JMeter 集群

zuozewei

Jmeter 性能测试 1月月更

架构实战营:模块六作业

Geek_93ffb0

「架构实战营」

云信小课堂|如何实现音视频安全检测?

网易云信

安全 音视频

【网络研讨会】“专家面对面”-MongoDB模式设计

MongoDB中文社区

mongodb

Flink 实践教程-进阶(7):基础运维

腾讯云大数据

flink 实战 流计算 Oceanus

i人事CTO王景飞:i人事+计算巢,协同赋能HR业务

阿里云弹性计算

阿里云 计算巢

使用APICloud AVM框架开发预约应用

YonBuilder低代码开发平台

前端框架 APP开发 APICloud 跨端开发 小程序开发

喜报!东方证券携手博睿数据荣获《金融电子化》2021科技赋能金融业务突出贡献奖

博睿数据

markdown-it 插件如何写(二)

冴羽

前端 markdown vuepress markdown-it markdown-it插件

OpenMLDB在AKULAKU实时特征计算场景的应用

第四范式开发者社区

机器学习 大数据 OpenMLDB 特征平台

低代码实现探索(二十七)低代码如何继承传统

零道云-混合式低代码平台

用11本白皮书搭建3座桥:联想企业科技集团让智能化转型不再有孤岛

脑极体

低代码实现探索(二十六)移动端H5开发

零道云-混合式低代码平台

安全研究人员发现:Nanocore等多个远控木马滥用公有云服务传播

H

网络安全

明道云助力东航食品营销数据整合

明道云

网络安全kali渗透学习 web渗透入门 ARL资产侦察灯塔系统搭建及使用

学神来啦

精彩回顾!| Google DevFest 2021 广州国际嘉年华

江湖老铁

消息队列 RocketMQ 遇上可观测:业务核心链路可视化

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 可观测

架构实战营-毕业设计

Beyond Ryan

简单的线程池实现多线程对大文件的读取

CRMEB

使用hydra对端口进行爆破

喀拉峻

Nacos电子书 读后感(一)

努力努力再努力

1月日更

流计算 Oceanus | Flink JVM 内存超限的分析方法总结

腾讯云大数据

flink 实战 流计算 Oceanus

StreamNative 联合传智教育推出免费 Apache Pulsar 中文视频教程

Apache Pulsar

大数据 开源 架构 云原生 Apache Pulsar

RadonDB PostgreSQL on K8s 2.1.0 发布!

RadonDB

数据库 postgresql 开源 RadonDB

通证经济是更高层次的自由

CECBC

浪花过后,2022低代码该往哪儿走?

ToB行业头条

哲元科技×飞桨EasyDL|助力世界500强企业打造“灯塔工厂”,探索智能制造星辰大海

百度大脑

架构实战营-毕业设计

Beyond Ryan

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