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

2020 年 11 月 06 日

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

本文是一篇立场文件,作者借由第一届低代码研讨会的召开,讨论了关于在模型驱动工程领域定位低代码运动的想法,并试图给出了部分问题的答案。



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

 

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

 

免责声明:

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

介  绍

 

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

 

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

来自TWEET

 

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

 

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

 

低代码 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 工具都包含某种黑盒建模原语,你可以在生成过程中编写任何应该添加到其中的自定义代码)。在无代码中,你应该编写零代码。

 

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

 

低代码趋势

 

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

 


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

 


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

 

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

 

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

 

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

 

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

 

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

 

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

 

低编码是一个机会

 

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

 

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

 

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

来自TWEET

 

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

 

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

 


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/


2020 年 11 月 06 日 16:002409
用户头像
陈思 InfoQ编辑

发布了 555 篇内容, 共 189.6 次阅读, 收获喜欢 1064 次。

关注

评论

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

最实用的无线PORTAL测试案例

网络技术平台

测试 无线网络 网络

成为架构师 - 架构师训练营第 02 周

陈永龙Vincent

架构训练营第二周学习小结

李日盛

牛皮了!字节面试官爆肝七天七夜总结了一份算法面试笔记

互联网架构师小马

Java 程序员 字节跳动 面试 算法

渣渣2本学历CRUD一年半,决定改变现状,努力学习两个月成功拿到美团30k offer

Java架构之路

Java 程序员 架构 面试 编程语言

架构师训练营第 1 期第 6 周学习总结

好吃不贵

极客大学架构师训练营

架构师训练营第六周作业

我是谁

极客大学架构师训练营

写时复制集合 —— CopyOnWriteArrayList

程序员小航

Java 源码 并发 源码阅读 JUC

CAP 原理

黄立

CAP

钻石与小度:智能语音助手背后的“马斯洛需求模型”

脑极体

架构训练营-week6-作业

于成龙

CAP 架构训练营

从一个HTTP请求来读懂HTTP、TCP协议

互联网架构师小马

架构师训练营第 1 期 week6 总结

张建亮

极客大学架构师训练营

软考资料学习库

玄兴梦影

使用抓包工具fiddler和apipost进行接口测试

测试人生路

测试工具 fiddler

Mysql中,这21个写SQL的好习惯,你值得拥有呀

捡田螺的小男孩

MySQL sql SQL优化 sql习惯

作业一:

丁乐洪

三分钟带你分清Mysql 和Oracle之间的误区

华为云开发者社区

MySQL 数据库 oracle 安全 关系型数据库

一整套Java线上故障排查技巧,爱了!爱了!

互联网架构师小马

玩转华为云开发|老板万万没想到:刚入职的我一人就搞定人脸识别开发

华为云开发者社区

软件开发 模块化流程 人脸识别 API 华为云

jdk 源码系列之HashMap

sinsy

源码 jdk HashMap底层原理

阿里内部首发Spring Cloud全套微服务架构笔记,速拿去怼面试官!

Java架构追梦

Java 编程 面试 微服务架构 SpringCloud

架构训练营-week6-学习总结-技术选型(二)

于成龙

架构训练营

二、ood原则

Geek_28b526

架构师训练营第 2 周课后练习

菜青虫

极客大学架构师训练营

牛皮!GitHub上标星90.6K的Java面试指南+笔记

互联网架构师小马

Java GitHub 学习 程序员 面试

Java程序员必会的三个技能:Spring+MySQL+并发编程

Java架构师迁哥

架构师训练营第 1 期第 6 周作业

好吃不贵

极客大学架构师训练营

十八般武艺玩转GaussDB(DWS)性能调优(二):坏味道SQL识别

华为云开发者社区

数据库 sql 性能调优 GaussDB 算子

深入浅出System.gc() 源码解读

AI乔治

Java 架构

架构师训练营 week6 作业

陈皓07

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