低代码 vs 模型驱动,它们之间到底是什么关系?

2020 年 11 月 11 日 InfoQ
作者 | Jordi Cabot
译者 | 刘雅梦
策划 | 陈思
本文是一篇立场文件,作者借由第一届低代码研讨会的召开,讨论了关于在模型驱动工程领域定位低代码运动的想法,并试图给出了部分问题的答案。


自从低代码(Low-code)成为新的流行术语之后,我就想知道“低代码”运动与我们过去所说的“模型驱动的工程 / 开发”相比,是否真的有什么不同。第一届低代码研讨会(属于 2020 年模型大会的一部分)是让我花时间思考并写作这个主题想法的一个很好的借口。

接下来你将阅读的是我思考的结果。里面还嵌入了我准备发表的论文的演讲幻灯片(见底部)。两者都包含了我在发布本文的第一版时得到的一些反馈(感谢大家给我的宝贵反馈!)。我相信这(低代码在模型驱动领域的定位)是我们作为一个社区所必须继续讨论的话题。即使我们不能达成任何共识。

免责声明:

  1. 这是一份简短的立场文件,大家应该据此来阅读和解释。

  2. 这可能是有争议的。如果你阅读时觉得被冒犯了,就说明我的工作做得很好。我认为,立场文件的重点是发表有力且大胆的声明,以帮助展开讨论。

  3. 当其中一个术语(“低代码”)没有被科学定义,但需要通过研究一组称之为低代码的工具集来进行推断时,很难“科学地”比较这两个术语。

说到这里,请继续阅读我关于在模型驱动工程领域定位低代码运动的想法。特别是,我试图给出这些问题的部分答案

  • 在低代码运动的背后有什么根本的新东西吗?

  • 它与模型驱动工程或模型驱动开发等其他概念有什么关系?

  • 这对建模界的研究人员来说意味着什么?

1 介  绍

低代码应用程序平台通过大幅降低所需的手工编码量来加速应用程序交付(该定义来自 Forrester 报告 [5],被认为是低代码一词的起源)。这显然不是软件工程界第一次试图通过结合可视化开发技术(我们称之为“模型”)和代码自生成来减少手工编码。事实上,正如 GradyBooch 所说,软件工程的整个历史都是关于提高抽象层次的。

低代码是降低开发软件应用程序所需的手工编码量的最新尝试。这是我们从软件工程开始之初就一直追求的目标。

来自 TWEET

低代码可以追溯到模型驱动工程。但是模型驱动工程本身可以追溯到 CASE(Computer-Aided Software Engineering,计算机辅助软件工程)工具。早在 1991 年,在著名的 CAiSE 会议的第 1 版中,我们就可以找到这样的论文:“给定最终模型,可以自生成完整的计算机化信息系统”[2] 或“我们得出了一个可自动生成可执行代码的规范”[4]。

同时,低代码在当今商业世界中的影响也很明显,包括了一些大胆的预测,但也包括了最近投资于低代码工具的相关实际数据,其中一些工具的商业成功或许仅仅是因为所有最大的软件公司都在确保他们在提供该领域的某种产品。

2 低代码 vs 模型驱动 vs 基于模型 vs 无代码

对于所有的 MD* 概念,我们并没有通用的定义。我自己的(非正式)定义如下:

  • 模型驱动工程(Model-driven engineering,MDE):任何一种软件工程过程,其中模型起着基础性的作用并驱动着工程任务。

  • 模型驱动开发(Model-driven development,MDD):MDE 应用于正向工程,即用于软件开发的模型驱动。

  • MDA 是 OMG 对 MDD 的特定设想,因此依赖于 OMG 标准的使用。

  • 基于模型的工程 / 开发:前面各个概念的软版本。在 MBE 过程中,软件模型扮演着重要的角色,尽管它们不一定是工程 / 开发的关键工件(即它们不“驱动”过程)。

能区分 MBE 与 MDE 的一个例子是开发过程,在分析阶段,设计人员指定了独立于平台的系统模型,但是这些模型会直接交给程序员来手工编写代码(不涉及代码自生成,也不明确定义任何特定于平台的模型)。在这个过程中,模型仍然发挥着重要的作用,但不是开发过程的基础。

基于以上定义,我认为低代码是模型驱动开发的同义词。如果有什么区别的话,我们可以把低代码看作是 MDD 中的一个更严格的视图,其中我们仅针对某种特定类型的软件应用程序:数据密集型 Web/ 移动应用程序。

注意,术语“无代码”有时被用作低代码的细微变化。实际上,我们经常会看到工具将自己定义为无代码 / 低代码工具。然而,对我来说,无代码方法的关键特征是应用程序设计人员应该编写零代码来创建和部署应用程序。这在很大程度上限制了使用无代码工具的实际效果。我们基本上是在研究基于模板的框架或创建工作流,这些工作流将预定义的连接器与外部应用程序混合在一起,在这些应用程序中,设计人员最多是决定何时以及如何触发某些操作。

比较这些不同范例的另一种方法是查看你需要编写多少手工代码。在 MBE 中,你可能需要编写所有代码。相反,在 MDD 和低代码中,大部分代码都应该是自动生成的,但是你可能仍然需要定制并完成所生成的代码(大多数 MDD 工具都包含某种黑盒建模原语,你可以在生成过程中编写任何应该添加到其中的自定义代码)。在无代码中,你应该编写零代码。

显然,需要进行更多的研究来评估市场上的低代码工具,并更好地将其描述为比这里介绍的工具更细粒度的类别。事实上,目前基本上还没有关于低代码运动的研究(快速搜索只会发现一些关于将自己归类为低代码工具的论文,而不是将低代码本身作为研究对象),我相信这个研讨会将会使这一点开始改变。

3 低代码趋势

如图 1 所示,对低编码的兴趣达到了顶峰,即使如图 2 所示,这个峰值远小于对模型驱动的注意力达到顶峰时的峰值。


谷歌趋势图显示了对低代码术语的搜索兴趣


但是,如果从技术上讲,低代码并没有真正带来什么新东西,为什么会如此流行呢?

  • 首先,我认为低代码所传达的信息比模型驱动 / 基于模型的信息要清晰得多 。模型是一个非常模糊的词,因此模型驱动的概念比低代码更难解释(每个人对什么是代码都有清晰的认识,低代码就变得不言而喻了)。

  • 其次,我们知道建模会吓跑开发人员。相反,低代码听起来更熟悉。他们已经在做同样的事情了(编码),只是更少。

  • 此外,低代码的应用场景也更加清晰。低代码不是说你可以用 MDD 做任何事情(这最终会产生不信任),而是通过针对特定类型的应用程序(即行业中最需要的应用程序)来其使可信度更高。

  • 低代码也是一种典型的一次性建模方法,这意味着你拥有模型和生成的代码,没有复杂的细化链,没有模型转换,也没有其他任何东西。

  • 平均而言,低代码工具比我们传统的重型建模工具更好。例如,大多数都是基于 Web 的,并且不依赖于 EMF。

总而言之,在低代码工具中,我还没有看到任何在模型驱动领域找不到的符号、概念、模型类型或生成技术。但可以肯定的是,这些相同的技术以不同的方式呈现、配置、调整和“销售”,这最终会使人们对低代码的新颖性和实用性在认知上产生巨大的差异。MDE 项目的成功通常更多地取决于社会和管理方面,而不是纯粹的技术方面 [3]。这并不是免费的(缺乏互操作性、供应商锁定、昂贵的商业模式等等),但目前看来这并没有阻止社区的发展。

4 低编码是一个机会

如前所述,我不认为 MDD 和低代码趋势之间存在根本的技术差异。事实上,我们可以应用模型驱动工程中几乎所有的开放性挑战 [1],只需将“模型驱动”变更为“低代码”即可免费获得低代码开发的研究路线图(例如,我们需要更好的方法将人工智能集成到低代码工具中,或者我们应该作为一个社区努力构建低代码示例的共享存储库用于未来研究)。

但是我不认为这是消极的。恰恰相反。显然,低代码吸引了很多人的关注,包括那些从未参与过建模的人。从这个意义上说,低代码是降低进入建模技术领域的门槛。因此,对我来说,低代码是将建模(以及我们的建模专业知识)引入新领域和社区的巨大机会。如果我们能通过将自己塑造成低代码专家以获得更多的资金 / 曝光 / 用户 / 反馈,我完全赞成。这正是许多知名的所谓的低代码公司所采用的方法(你可以随意使用互联网时光机,看看他们的网站在过去几年中是如何从可视化建模、敏捷开发、CASE 工具和类似关键字转变为低代码的)。让我们也借此机会更好地理解使类似建模技术在广泛的软件社区中引起共鸣的因素,并从中学习。

低代码是一个巨大的机会,可以将建模(以及我们的建模专业知识)带到新的领域和社区

在我们这么做的同时,让我们关注一下未来的市场趋势。一些低代码供应商正在(再一次)改变他们的营销工作。也许用不了多久,我们就会开始高呼:低代码已死,多体验开发万岁!

5 比较低代码与模型驱动工程的幻灯片

Low-code vs Model-Driven Engineering 来自 Jordi Cabot

参考文献

  1. Antonio Bucchiarone、Jordi Cabot、Richard F. Paige 和 Alfonso Pierantonio。《模型驱动工程的重大挑战:研究现状分析》。《软件和系统建模》19,1(2020),5-13。https://doi.org/10.1007/s10270-019-00773-6

  2. Jon Atle Gulla、Odd Ivar Lindland 和 Geir Willumsen。1991 年。《PPP:一个集成的 CASE 环境》。《高级信息系统工程》,CAiSE'91,挪威特隆赫姆,1991 年 5 月 13-15 日,论文集(计算机科学讲座,第 498 卷)。Springer(194-221)。https://doi.org/10.1007/3-540-54059-8_86

  3. John Edward Hutchinson、Jon Whittle 和 Mark Rouncefield。2014。《工业中模型驱动的工程实践:导致成功或失败的社会、组织和管理因素》。《科学、计算机、程序》89(2014 年),144–161。https://doi.org/10.1016/j.scico.2013.03.017

  4. John Krogstie、Peter McBrien、Richard Owens 和 Anne Helga Seltveit。1991。《使用过程和基于规则的方法相结合的信息系统开发》。《高级信息系统工程》,CAiSE'91,特隆赫姆,挪威,1991 年 5 月 13-15 日,论文集(计算机科学课堂讲稿,第 498 卷)。Springer,319-335。https://doi.org/10.1007/3-540-54059-8

  5. Clay Richardson 和 John RRymer。2014《面向客户的应用程序的新开发平台应运而生》。Forrester:剑桥,马萨诸塞州,美国(2014 年)。

参考阅读

https://modeling-languages.com/low-code-vs-model-driven/


InfoQ 写作平台欢迎所有热爱技术、热爱创作、热爱分享的内容创作者入驻!

还有更多超值活动等你来!

扫描下方二维码

填写申请,成为作者

开启你的创作之路吧~

点个在看少个 bug 👇

登录查看更多
1

相关内容

软件工程 (Software Engineering) 是一门研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
如何学好数学?这有一份2021《数学学习路线图》请看下
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
什么是深度学习的卷积?
论智
18+阅读 · 2018年8月14日
号称“开发者神器”的GitHub,到底该怎么用?
算法与数据结构
4+阅读 · 2018年3月29日
【学界】机器学习模型的“可解释性”到底有多重要?
GAN生成式对抗网络
12+阅读 · 2018年3月3日
人工智能,机器学习和深度学习之间的差异是什么?
大数据技术
6+阅读 · 2017年11月22日
智能体到底是什么?这里有一篇详细解读
人工智能学家
7+阅读 · 2017年9月28日
Virtual elements for Maxwell's equations
Arxiv
0+阅读 · 2021年2月1日
Arxiv
35+阅读 · 2021年1月27日
Arxiv
6+阅读 · 2016年1月15日
VIP会员
相关资讯
21个必须知道的机器学习开源工具!
AI100
13+阅读 · 2019年9月13日
你真的会正确地调试 TensorFlow 代码吗?
数据库开发
7+阅读 · 2019年3月18日
什么是深度学习的卷积?
论智
18+阅读 · 2018年8月14日
号称“开发者神器”的GitHub,到底该怎么用?
算法与数据结构
4+阅读 · 2018年3月29日
【学界】机器学习模型的“可解释性”到底有多重要?
GAN生成式对抗网络
12+阅读 · 2018年3月3日
人工智能,机器学习和深度学习之间的差异是什么?
大数据技术
6+阅读 · 2017年11月22日
智能体到底是什么?这里有一篇详细解读
人工智能学家
7+阅读 · 2017年9月28日
Top
微信扫码咨询专知VIP会员