低代碼 vs 模型驅(qū)動(dòng),它們之間到底是什么關(guān)系?(低代碼 vs 模型驅(qū)動(dòng),它們之間到底是什么關(guān)系)
本文是一篇立場(chǎng)文件,作者借由第一屆低代碼研討會(huì)的召開(kāi),討論了關(guān)于在模型驅(qū)動(dòng)工程領(lǐng)域定位低代碼運(yùn)動(dòng)的想法,并試圖給出了部分問(wèn)題的答案。
自從低代碼(Low-code)成為新的流行術(shù)語(yǔ)之后,我就想知道“低代碼”運(yùn)動(dòng)與我們過(guò)去所說(shuō)的“模型驅(qū)動(dòng)的工程/開(kāi)發(fā)”相比,是否真的有什么不同。第一屆低代碼研討會(huì)(屬于2020年模型大會(huì)的一部分)是讓我花時(shí)間思考并寫(xiě)作這個(gè)主題想法的一個(gè)很好的借口。
接下來(lái)你將閱讀的是我思考的結(jié)果。里面還嵌入了我準(zhǔn)備發(fā)表的論文的演講幻燈片(見(jiàn)底部)。兩者都包含了我在發(fā)布本文的第一版時(shí)得到的一些反饋(感謝大家給我的寶貴反饋?。?。我相信這(低代碼在模型驅(qū)動(dòng)領(lǐng)域的定位)是我們作為一個(gè)社區(qū)所必須繼續(xù)討論的話題。即使我們不能達(dá)成任何共識(shí)。
免責(zé)聲明:
- 這是一份簡(jiǎn)短的立場(chǎng)文件,大家應(yīng)該據(jù)此來(lái)閱讀和解釋。
- 這可能是有爭(zhēng)議的。如果你閱讀時(shí)覺(jué)得被冒犯了,就說(shuō)明我的工作做得很好。我認(rèn)為,立場(chǎng)文件的重點(diǎn)是發(fā)表有力且大膽的聲明,以幫助展開(kāi)討論。
- 當(dāng)其中一個(gè)術(shù)語(yǔ)(“低代碼”)沒(méi)有被科學(xué)定義,但需要通過(guò)研究一組稱之為低代碼的工具集來(lái)進(jìn)行推斷時(shí),很難“科學(xué)地”比較這兩個(gè)術(shù)語(yǔ)。
說(shuō)到這里,請(qǐng)繼續(xù)閱讀我關(guān)于在模型驅(qū)動(dòng)工程領(lǐng)域定位低代碼運(yùn)動(dòng)的想法。特別是,我試圖給出這些問(wèn)題的部分答案
- 在低代碼運(yùn)動(dòng)的背后有什么根本的新東西嗎?
- 它與模型驅(qū)動(dòng)工程或模型驅(qū)動(dòng)開(kāi)發(fā)等其他概念有什么關(guān)系?
- 這對(duì)建模界的研究人員來(lái)說(shuō)意味著什么?
介 紹
低代碼應(yīng)用程序平臺(tái)通過(guò)大幅降低所需的手工編碼量來(lái)加速應(yīng)用程序交付(該定義來(lái)自Forrester報(bào)告[5],被認(rèn)為是低代碼一詞的起源)。這顯然不是軟件工程界第一次試圖通過(guò)結(jié)合可視化開(kāi)發(fā)技術(shù)(我們稱之為“模型”)和代碼自生成來(lái)減少手工編碼。事實(shí)上,正如GradyBooch所說(shuō),軟件工程的整個(gè)歷史都是關(guān)于提高抽象層次的。
低代碼是降低開(kāi)發(fā)軟件應(yīng)用程序所需的手工編碼量的最新嘗試。這是我們從軟件工程開(kāi)始之初就一直追求的目標(biāo)。
來(lái)自TWEET
低代碼可以追溯到模型驅(qū)動(dòng)工程。但是模型驅(qū)動(dòng)工程本身可以追溯到CASE(Computer-Aided Software Engineering,計(jì)算機(jī)輔助軟件工程)工具。早在1991年,在著名的CAiSE會(huì)議的第1版中,我們就可以找到這樣的論文:“給定最終模型,可以自生成完整的計(jì)算機(jī)化信息系統(tǒng)”[2]或“我們得出了一個(gè)可自動(dòng)生成可執(zhí)行代碼的規(guī)范”[4]。
同時(shí),低代碼在當(dāng)今商業(yè)世界中的影響也很明顯,包括了一些大膽的預(yù)測(cè),但也包括了最近投資于低代碼工具的相關(guān)實(shí)際數(shù)據(jù),其中一些工具的商業(yè)成功或許僅僅是因?yàn)樗凶畲蟮能浖径荚诖_保他們?cè)谔峁┰擃I(lǐng)域的某種產(chǎn)品。
低代碼vs模型驅(qū)動(dòng)vs基于模型vs無(wú)代碼
對(duì)于所有的MD*概念,我們并沒(méi)有通用的定義。我自己的(非正式)定義如下:
- 模型驅(qū)動(dòng)工程(Model-driven engineering,MDE):任何一種軟件工程過(guò)程,其中模型起著基礎(chǔ)性的作用并驅(qū)動(dòng)著工程任務(wù)。
- 模型驅(qū)動(dòng)開(kāi)發(fā)(Model-driven development,MDD):MDE應(yīng)用于正向工程,即用于軟件開(kāi)發(fā)的模型驅(qū)動(dòng)。
- MDA是OMG對(duì)MDD的特定設(shè)想,因此依賴于OMG標(biāo)準(zhǔn)的使用。
- 基于模型的工程/開(kāi)發(fā):前面各個(gè)概念的軟版本。在MBE過(guò)程中,軟件模型扮演著重要的角色,盡管它們不一定是工程/開(kāi)發(fā)的關(guān)鍵工件(即它們不“驅(qū)動(dòng)”過(guò)程)。
能區(qū)分MBE與MDE的一個(gè)例子是開(kāi)發(fā)過(guò)程,在分析階段,設(shè)計(jì)人員指定了獨(dú)立于平臺(tái)的系統(tǒng)模型,但是這些模型會(huì)直接交給程序員來(lái)手工編寫(xiě)代碼(不涉及代碼自生成,也不明確定義任何特定于平臺(tái)的模型)。在這個(gè)過(guò)程中,模型仍然發(fā)揮著重要的作用,但不是開(kāi)發(fā)過(guò)程的基礎(chǔ)。
基于以上定義,我認(rèn)為低代碼是模型驅(qū)動(dòng)開(kāi)發(fā)的同義詞。如果有什么區(qū)別的話,我們可以把低代碼看作是MDD中的一個(gè)更嚴(yán)格的視圖,其中我們僅針對(duì)某種特定類型的軟件應(yīng)用程序:數(shù)據(jù)密集型Web/移動(dòng)應(yīng)用程序。
注意,術(shù)語(yǔ)“無(wú)代碼”有時(shí)被用作低代碼的細(xì)微變化。實(shí)際上,我們經(jīng)常會(huì)看到工具將自己定義為無(wú)代碼/低代碼工具。然而,對(duì)我來(lái)說(shuō),無(wú)代碼方法的關(guān)鍵特征是應(yīng)用程序設(shè)計(jì)人員應(yīng)該編寫(xiě)零代碼來(lái)創(chuàng)建和部署應(yīng)用程序。這在很大程度上限制了使用無(wú)代碼工具的實(shí)際效果。我們基本上是在研究基于模板的框架或創(chuàng)建工作流,這些工作流將預(yù)定義的連接器與外部應(yīng)用程序混合在一起,在這些應(yīng)用程序中,設(shè)計(jì)人員最多是決定何時(shí)以及如何觸發(fā)某些操作。
比較這些不同范例的另一種方法是查看你需要編寫(xiě)多少手工代碼。在MBE中,你可能需要編寫(xiě)所有代碼。相反,在MDD和低代碼中,大部分代碼都應(yīng)該是自動(dòng)生成的,但是你可能仍然需要定制并完成所生成的代碼(大多數(shù)MDD工具都包含某種黑盒建模原語(yǔ),你可以在生成過(guò)程中編寫(xiě)任何應(yīng)該添加到其中的自定義代碼)。在無(wú)代碼中,你應(yīng)該編寫(xiě)零代碼。
顯然,需要進(jìn)行更多的研究來(lái)評(píng)估市場(chǎng)上的低代碼工具,并更好地將其描述為比這里介紹的工具更細(xì)粒度的類別。事實(shí)上,目前基本上還沒(méi)有關(guān)于低代碼運(yùn)動(dòng)的研究(快速搜索只會(huì)發(fā)現(xiàn)一些關(guān)于將自己歸類為低代碼工具的論文,而不是將低代碼本身作為研究對(duì)象),我相信這個(gè)研討會(huì)將會(huì)使這一點(diǎn)開(kāi)始改變。
低代碼趨勢(shì)
如圖1所示,對(duì)低編碼的興趣達(dá)到了頂峰,即使如圖2所示,這個(gè)峰值遠(yuǎn)小于對(duì)模型驅(qū)動(dòng)的注意力達(dá)到頂峰時(shí)的峰值。
谷歌趨勢(shì)圖顯示了對(duì)低代碼術(shù)語(yǔ)的搜索興趣
但是,如果從技術(shù)上講,低代碼并沒(méi)有真正帶來(lái)什么新東西,為什么會(huì)如此流行呢?
- 首先,我認(rèn)為低代碼所傳達(dá)的信息比模型驅(qū)動(dòng)/基于模型的信息要清晰得多 。模型是一個(gè)非常模糊的詞,因此模型驅(qū)動(dòng)的概念比低代碼更難解釋(每個(gè)人對(duì)什么是代碼都有清晰的認(rèn)識(shí),低代碼就變得不言而喻了)。
- 其次,我們知道建模會(huì)嚇跑開(kāi)發(fā)人員。相反,低代碼聽(tīng)起來(lái)更熟悉。他們已經(jīng)在做同樣的事情了(編碼),只是更少。
- 此外,低代碼的應(yīng)用場(chǎng)景也更加清晰。低代碼不是說(shuō)你可以用MDD做任何事情(這最終會(huì)產(chǎn)生不信任),而是通過(guò)針對(duì)特定類型的應(yīng)用程序(即行業(yè)中最需要的應(yīng)用程序)來(lái)其使可信度更高。
- 低代碼也是一種典型的一次性建模方法,這意味著你擁有模型和生成的代碼,沒(méi)有復(fù)雜的細(xì)化鏈,沒(méi)有模型轉(zhuǎn)換,也沒(méi)有其他任何東西。
- 平均而言,低代碼工具比我們傳統(tǒng)的重型建模工具更好。例如,大多數(shù)都是基于Web的,并且不依賴于EMF。
總而言之,在低代碼工具中,我還沒(méi)有看到任何在模型驅(qū)動(dòng)領(lǐng)域找不到的符號(hào)、概念、模型類型或生成技術(shù)。但可以肯定的是,這些相同的技術(shù)以不同的方式呈現(xiàn)、配置、調(diào)整和“銷售”,這最終會(huì)使人們對(duì)低代碼的新穎性和實(shí)用性在認(rèn)知上產(chǎn)生巨大的差異。MDE項(xiàng)目的成功通常更多地取決于社會(huì)和管理方面,而不是純粹的技術(shù)方面[3]。這并不是免費(fèi)的(缺乏互操作性、供應(yīng)商鎖定、昂貴的商業(yè)模式等等),但目前看來(lái)這并沒(méi)有阻止社區(qū)的發(fā)展。
低編碼是一個(gè)機(jī)會(huì)
如前所述,我不認(rèn)為MDD和低代碼趨勢(shì)之間存在根本的技術(shù)差異。事實(shí)上,我們可以應(yīng)用模型驅(qū)動(dòng)工程中幾乎所有的開(kāi)放性挑戰(zhàn)[1],只需將“模型驅(qū)動(dòng)”變更為“低代碼”即可免費(fèi)獲得低代碼開(kāi)發(fā)的研究路線圖(例如,我們需要更好的方法將人工智能集成到低代碼工具中,或者我們應(yīng)該作為一個(gè)社區(qū)努力構(gòu)建低代碼示例的共享存儲(chǔ)庫(kù)用于未來(lái)研究)。
但是我不認(rèn)為這是消極的。恰恰相反。顯然,低代碼吸引了很多人的關(guān)注,包括那些從未參與過(guò)建模的人。從這個(gè)意義上說(shuō),低代碼是降低進(jìn)入建模技術(shù)領(lǐng)域的門(mén)檻。因此,對(duì)我來(lái)說(shuō),低代碼是將建模(以及我們的建模專業(yè)知識(shí))引入新領(lǐng)域和社區(qū)的巨大機(jī)會(huì)。如果我們能通過(guò)將自己塑造成低代碼專家以獲得更多的資金/曝光/用戶/反饋,我完全贊成。這正是許多知名的所謂的低代碼公司所采用的方法(你可以隨意使用互聯(lián)網(wǎng)時(shí)光機(jī),看看他們的網(wǎng)站在過(guò)去幾年中是如何從可視化建模、敏捷開(kāi)發(fā)、CASE工具和類似關(guān)鍵字轉(zhuǎn)變?yōu)榈痛a的)。讓我們也借此機(jī)會(huì)更好地理解使類似建模技術(shù)在廣泛的軟件社區(qū)中引起共鳴的因素,并從中學(xué)習(xí)。
低代碼是一個(gè)巨大的機(jī)會(huì),可以將建模(以及我們的建模專業(yè)知識(shí))帶到新的領(lǐng)域和社區(qū)
來(lái)自TWEET
在我們這么做的同時(shí),讓我們關(guān)注一下未來(lái)的市場(chǎng)趨勢(shì)。一些低代碼供應(yīng)商正在(再一次)改變他們的營(yíng)銷工作。也許用不了多久,我們就會(huì)開(kāi)始高呼:低代碼已死,多體驗(yàn)開(kāi)發(fā)萬(wàn)歲!
比較低代碼與模型驅(qū)動(dòng)工程的幻燈片
Low-code vs Model-Driven Engineering 來(lái)自 Jordi Cabot
參考文獻(xiàn)
1. Antonio Bucchiarone、Jordi Cabot、Richard F. Paige和Alfonso Pierantonio?!赌P万?qū)動(dòng)工程的重大挑戰(zhàn):研究現(xiàn)狀分析》?!盾浖拖到y(tǒng)建模》19,1(2020),5-13。https://doi.org/10.1007/s10270-019-00773-6
2. Jon Atle Gulla、Odd Ivar Lindland和Geir Willumsen。 1991年?!禤PP:一個(gè)集成的CASE環(huán)境》?!陡呒?jí)信息系統(tǒng)工程》,CAiSE'91,挪威特隆赫姆,1991年5月13-15日,論文集(計(jì)算機(jī)科學(xué)講座,第498卷)。Springer(194-221)。https://doi.org/10.1007/3-540-54059-8_86
3. John Edward Hutchinson、Jon Whittle和Mark Rouncefield。2014?!豆I(yè)中模型驅(qū)動(dòng)的工程實(shí)踐:導(dǎo)致成功或失敗的社會(huì)、組織和管理因素》。《科學(xué)、計(jì)算機(jī)、程序》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?!妒褂眠^(guò)程和基于規(guī)則的方法相結(jié)合的信息系統(tǒng)開(kāi)發(fā)》。《高級(jí)信息系統(tǒng)工程》,CAiSE'91,特隆赫姆,挪威,1991年5月13-15日,論文集(計(jì)算機(jī)科學(xué)課堂講稿,第498卷)。Springer,319-335。https://doi.org/10.1007/3-540-54059-8
5. Clay Richardson和John RRymer。2014《面向客戶的應(yīng)用程序的新開(kāi)發(fā)平臺(tái)應(yīng)運(yùn)而生》。 Forrester:劍橋,馬薩諸塞州,美國(guó)(2014年)。
原文鏈接:
https://modeling-languages.com/low-code-vs-model-driven/
關(guān)注我并轉(zhuǎn)發(fā)此篇文章,私信我“領(lǐng)取資料”,即可免費(fèi)獲得InfoQ價(jià)值4999元迷你書(shū),點(diǎn)擊文末「了解更多」,即可移步InfoQ官網(wǎng),獲取最新資訊~
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。