作者:張書元 / 臺灣大學計算機及資訊網路中心作業管理組行政專員
隨著數位轉型的興起,低程式碼開發平台可以協助用來快速開發新應用程式。本文介紹這一新趨勢,並嘗試理解它與模型驅動工程的關係。
2019年當COVID-19在紐約市在整個城市肆虐時,市府官員希望快速建置平台來追踪冠狀病毒病(COVID-19),為有需要的市民提供服務。為實現此一目標,他們需要一個入口網站,提供市民完整的資訊,協助政府配送食物、藥品給最需要的區域。No doubt,time is essence。該平台僅花了三天開發完成上線。背後的英雄是該市新創公司Unqork [1]的”無程式碼”軟體開發平台。
圖1:紐約市COVID-19 Portal [1]
“New Trend, not New Concept”
“低程式碼平台(Low Code Platform)”一詞2014年研調公司Forrester Research的市場報告中提及,指出企業喜歡選擇低代碼平台以實現敏捷開發、測試的持續性,和快速地交付[2]。時至今日,大型供軟體公司,包括IBM、微軟和甲骨文在內的公司已經開始將低程式碼解決方案納入其產品組合中;Google、亞馬遜、微軟三大雲端巨頭,也已向用戶提供這方面的產品。在Google Trend搜索熱度在2019年後逐漸受到關注。
圖2:低程式碼開發在Google搜尋趨勢
低程式碼開發,或者零程式碼開發從字面上意義不難理解,指只需編寫少量代碼或不需要編寫代碼的軟體開發方法。本質上來說是軟體開發流程無需大量編碼。二者之間有些共同點:皆可讓使用者使用視覺化界面建立應用程式,替代耗時又成本昂貴的傳統手動軟體開發。這兩種應用程式平台之間未有明顯的差異。低程式碼開發平台通常涉及將現有程式碼移動到建置應用程式的工作流程或事件處理中,無程式碼解決方案則是專為完全不熟悉程式設計的使用者而設計的。但什麼樣的開發模式視為低程式碼開發,各家想法不一。
數年後研究人員才開始注意到了這一趨勢(如Henriques et al. 2018;佐洛塔斯等人。2018)[3],對低程式碼開發開始研究。為了了解開發人員如何理解低程式碼開發,研究人員針對兩個社群論壇Stack Overflow和Reddit進行問卷調查,以理解開發人員如何描述低程式碼開發,並將回饋結果分類如表1所示[7]。
表1:Terms that practitioners used to describe LCD [7]
Term
|
Example
|
Count
|
Low-Code
|
Need less programming skills and able to realize process without the need of coding
|
24
|
Drag and Drop
|
Can probably do everything through drag-and-drop
|
23
|
Visual Programming
|
Low-code is visual approach to software development
|
16
|
Pre-Designed Template
|
Given everyone from business users to advanced developers the right automation canvas to build great software robots
|
10
|
Non-professional programmers friendly
|
This is especially useful for people with limited coding skills or developers that want to automate something quickly while not having to think about all aspects of development, such as deployment, security…
|
9
|
What you see is what you got
|
meant for WYSIWYG app maker
|
7
|
Business user interface
|
Automatic unattended operations with minimal human involvement
|
6
|
Graphical user interface
|
They provide you with a graphical wizard
|
5
|
Build automation
|
automate unattended operations with minimal
human involvement
|
3
|
Database operations
|
It provides some cool tools for generating
CRUD entities by scaffolding
|
2
|
Collaboration in the same environment
|
Combine visual and code workflows allowing
designers, developers, and low-code users
to work together in a single environment
|
1
|
從表中我們發現不少人傾向將低程式碼視為少量編碼工作的代名詞,即不需要程序設計技能就可開發軟體。換句話說,他們認為低程式碼開發中的編碼工作量遠低於傳統的手動編程。接者的是程式設計工作幾乎可以通過「拖-放」執行,和視覺化程式設計來完成。也認為使用預先設計好的軟體元件,設計結果是所見即所得(WYSIWYG)。還有一些人認為低代碼利用視覺化圖形界面元件來開發程式。僅有一位論壇開發者認為低程式碼開發是結合了視覺化程式設計和工作流程以讓設計師、開發人員和低程式碼用戶協同合作[6]。
“In many ways, the entire history of software engineering can be seen as one of raising levels of abstraction.”
Grady Booch [4]
模型驅動工程(Model-Driven Engineering)和低程式碼開發兩者有一個共同的目標:減少開發軟體所需的手動編碼量。模型驅動工程學起源於20世紀80年代末CASE(電腦輔助軟體工程)工具的開發[11],是指使用軟體工具輔助軟體的開發及維護,使用模型作為軟體工具的主要開發元件[3]。
模型驅動工程引入模型作為軟體開發過程的主要元件,以解決軟體工程的眾多挑戰[13]:其精神是對想要解決的問題進行模型建構、定義模型之間,模型與資料之間的行為,以便由電腦程式模擬和實現。這樣做有一些優點:首先,特定於領域的模型可以促進對領域的問題的解釋、說明,因模型比代碼更容易為人類理解。其次,基於模型的推理可允許驗證功能的落實。第三,明確定義的模型允許開發人員以自動化的方式建構軟體元件,通過構建正確的元件來減少重複的編碼工作。正確的元件模型使得相應的需求更易於創建、驗證和維護底層的程式碼。
圖3 Venn Diagram示意圖說明模型驅動工程、低程式碼應用程式、和低程式碼軟體開發之間相對關係。[8]
圖3:低代碼開發和MDE方法之間的差異 [8]
這些區域描述如下:
區域1:這區域包含模型驅動的方法,這些方法使用模型作為應用程式或開發平台可處理的物件,但並不旨在減少實現系統所需的程式量。相反,專注於任務自動化,模擬、形式驗證、優化、
區域2:本區域使用模型作為軟體可處理的物件,旨在減少實現系統所需的代碼量(例如通過代碼生成或解釋)。
區域3:本區域包含的平台使用模型來促進軟件應用程序的開發,並減少代碼的編寫。
區域4:本區域和區域5包含不能被視為模型驅動的方法。特別是,區域 4 包含有以更少的代碼開發軟件應用程序的平台。
區域5:本區域旨在減少實現系統所需的代碼量[8][9]。
結論
自從電腦發明出來以來,電腦語言即作為人與機器溝通的基本組成。對多數人來說是晦澀難懂的語言,需專門系統地學習。低程式碼平臺通過一系列工具,通過建模和圖形介面實現應用程式的視覺化開發。使開發人員能夠跳過手動編碼,加快了將應用程式投入生產的過程。對於希望滿足現代需求並加速數位轉型的企業,不管專業開發人員,或者非專業開發人員「公民開發者(Citizen Developer)」,低程式碼開發是傳統軟體開發值得考慮的替代方案。
參考
[1]. https://www.unqork.com/
[2]. https://www.forrester.com/report/New-Development-Platforms-Emerge-For-CustomerFacing-Applications/RES113411
[3]. Characteristics and Challenges of Low-Code Development: The Practitioners' Perspective, ESEM '21: Proceedings of the 15th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM)October 2021Article No.: 12
[4].https://learning.acm.org/techtalks/histofsofteng
[5].https://pedia.cloud.edu.tw/Entry/Detail/?title=%E6%8A%BD%E8%B1%A1%E5%8C%96
[6]. Challenges of Low-Code/No-Code Software Development: A Literature Review,
Karlis Rokis & Marite Kirikova, Conference paper
[7]. Y. Luo, P. Liang, C. Wang, M.Shahin, and J. Zhan, “Characteristics and challenges of low-code development: The practitioners’ perspective,” in Proc. ACM/IEEE Int. Symp. Empirical Softw. Eng.Meas. (ESEM), 2021
[8]. Low-code development and model-driven engineering: Two sides of the same
[9[ .https://learning.acm.org/techtalks/histofsofteng
[10]. https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=3f21283d368ca0c88ea4f93a8afd1d4a84538467
[11]. Martin, C.F.: Second-generation CASE tools: a challenge to vendors. IEEE Softw. 5(2), 46–49 (1988). https://doi.org/10.1109/52.2010
[12] . https://link.springer.com/article/10.1007/s10270-021-00970-2