傳統(tǒng)軟件開發(fā)交付鏈中,需求經(jīng)過3次傳遞,用戶→業(yè)務(wù)→架構(gòu)師→開發(fā),每一層傳遞都可能使需求失真,導致最終交付的功能返工。業(yè)務(wù)的變化促使軟件開發(fā)過程不斷更新、迭代和演進,而低代碼開發(fā)即是軟件開發(fā)衍生的其中一條分支。低代碼是傳統(tǒng)軟件的進一步演變,以其高效、靈活和穩(wěn)定的特點應(yīng)用到企業(yè)的業(yè)務(wù)場景。低代碼開發(fā)降低了應(yīng)用搭建門檻,減輕對專業(yè)工程師的依賴,使得業(yè)務(wù)人員用拖拽的方式即可自行搭建應(yīng)用平臺,滿足業(yè)務(wù)部門的個性化需求,降低人力成本,縮短項目整體開發(fā)周期。在后期運維上,低代碼平臺的迭代速度快,靈活性更高。低代碼開發(fā)的核心價值是敏捷響應(yīng)用戶需求,增加應(yīng)對復雜應(yīng)用場景的能力。
1 國內(nèi)外低代碼開發(fā)研究現(xiàn)狀
IBM在1980年首次提出低代碼開發(fā),在隨后的近30年內(nèi)發(fā)展緩慢,隨著技術(shù)的沉淀和應(yīng)用軟件的深度應(yīng)用,低代碼迅速發(fā)展,主要經(jīng)歷4個階段。
1)萌芽階段:1980—2000年,IBM的快速應(yīng)用程序開發(fā)工具(RAD)被命名為低代碼。美國公司和實驗室開始研究可視化編程,推出第四代編程語言(4GL),后來衍生為可視化編程語言(VPL)。
2)緩慢發(fā)展階段:2000—2015年,企業(yè)逐漸涉足低代碼開發(fā)領(lǐng)域,如1999年成立的Salesforce,2001年成立的OutSystem。
3)升溫階段:2015—2018年,AWS、google、Microsoft和Oracle等軟件行業(yè)巨頭的加入,使低代碼領(lǐng)域的發(fā)展逐步升溫。
4)快速發(fā)展階段:2018—2021年,低代碼領(lǐng)域進入快速發(fā)展階段,根據(jù)Gartner研究報告,國外共有18家供應(yīng)商進入低代碼應(yīng)用平臺領(lǐng)域。2018年,西門子以6億歐元收購低代碼應(yīng)用開發(fā)領(lǐng)域的領(lǐng)導者Mendix,快速應(yīng)用開發(fā)的低代碼平臺OutSystems獲得3.6億美元的投資。
國外對低代碼平臺的重視程度和研究投入在2018年以來顯著增加,美國仍是技術(shù)的先驅(qū)者和領(lǐng)導者,隨著云計算技術(shù)的發(fā)展,傳統(tǒng)平臺向PaaS平臺轉(zhuǎn)移。多數(shù)廠商的產(chǎn)品能夠支持私有云和本地部署,個別產(chǎn)品如LightningPlatform、PowerApps僅支持自身的云平臺。這種捆綁銷售模式雖然在一定程度上有利于自身云平臺的推廣,但由于云平臺和低代碼平臺的競品都較多,對低代碼平臺的推廣非常不利。
國內(nèi)涉足低代碼領(lǐng)域比國外晚近20年,自2000年之后才開始研究探索低代碼技術(shù),主要經(jīng)歷了2個階段。
1)早期探索階段:2000—2015年,少數(shù)公司開始嘗試對低代碼進行研究,如較早的炎黃盈動。
2)快速發(fā)展階段:2015—2021年,國內(nèi)低代碼開發(fā)平臺進入爆發(fā)期,各廠商紛紛推出商用產(chǎn)品。2019年開始,互聯(lián)網(wǎng)大廠阿里、騰訊和字節(jié)的加入,使低代碼進入快速發(fā)展階段。傳統(tǒng)軟件廠商也基于自身產(chǎn)品構(gòu)建低代碼開發(fā)平臺,如ERP廠商金蝶、用友、明源云和黑帕云,OA廠商致遠、藍凌、泛微,CRM廠商銷售易、紛享銷客,財稅廠商先勝業(yè)財,音頻廠商聲網(wǎng)、容聯(lián)云、即構(gòu)科技和融云等。
國內(nèi)低代碼平臺起步晚于國外,成熟度與國外主流供應(yīng)商存在較大差距,但自2018年以來人力和資金投入加大,創(chuàng)業(yè)型公司、互聯(lián)網(wǎng)生態(tài)型公司、傳統(tǒng)企業(yè)管理軟件公司開始轉(zhuǎn)型和孵化自己的產(chǎn)品,出現(xiàn)百家爭鳴的局面,與國外平臺的差距也在逐步縮小。
根據(jù)海比研究院、中國軟件行業(yè)協(xié)會聯(lián)合發(fā)布的《2021年中國低代碼/無代碼市場研究報告》顯示,我國低代碼廠商約有120家,整體市場規(guī)模已達19億元,未來五年復合增長率將達到49.5%,第三方使用人員規(guī)模達到42.6萬人。擁有足夠競爭力的低代碼開發(fā)平臺通常具備3個核心能力。
1)aPaaS。應(yīng)用程序平臺即服務(wù),用來快速構(gòu)建后端邏輯。2)MADP。支持移動應(yīng)用的開發(fā)平臺,用來快速構(gòu)建各種場景化應(yīng)用。3)BPM。業(yè)務(wù)流程管理,以圖形方式設(shè)計業(yè)務(wù)邏輯,然后由事務(wù)流程引擎執(zhí)行模型。國內(nèi)大部分低代碼產(chǎn)品主要提供BPM功能,還需要繼續(xù)向aPaaS和MADP拓展。
2 低代碼開發(fā)適用性分析
2.1 低代碼適用系統(tǒng)
低代碼工具的推廣廣告對于具有高交付壓力的企業(yè)非常具有誘惑性“只需拖拽鼠標,非編碼人員也可以很快完成一個簡單的應(yīng)用程序”。凡事都有兩面性,對于投入過熱的領(lǐng)域,我們應(yīng)當更多的理性判斷,看清利與弊,而不是盲目跟從。低代碼開發(fā)能在一定程度上為企業(yè)降本增效、減負增產(chǎn),但也存在其局限性。
1)多數(shù)低代碼應(yīng)用平臺僅提供公有云部署,應(yīng)用和數(shù)據(jù)運行在供應(yīng)商的PaaS服務(wù)器,數(shù)據(jù)安全和隱私難以得到保障,尤其是商機商業(yè)秘密的數(shù)據(jù)。
2)數(shù)據(jù)模型、元數(shù)據(jù)等底層都是平臺專有,應(yīng)用程序和數(shù)據(jù)的缺乏移植性,對低代碼平臺廠商形成依賴。
3)可靠性和安全性存在風險。如果低代碼開發(fā)平臺的組件存在質(zhì)量問題或安全漏洞,開發(fā)出的應(yīng)用程序的穩(wěn)定性和安全性也會受到影響,而且難以控制。
4)標準化的UI設(shè)計限制了個性化的前端交互需求。
5)固化的指令式執(zhí)行模式難以處理復雜、特殊的業(yè)務(wù)場景,業(yè)務(wù)流程只能適應(yīng)平臺提供的組件,組件的功能和類型限制了應(yīng)用程序的開發(fā)。即使技術(shù)足夠成熟,能夠處理特殊規(guī)則和流程,也需要將規(guī)則轉(zhuǎn)換為計算機能夠識別的邏輯。不能一個工具沒有或使僅有少量編碼經(jīng)驗的人員變成高級開發(fā)人員。
6)平臺的易用性和業(yè)務(wù)的靈活性難以調(diào)和,過于簡單的設(shè)計雖然方便使用但難以應(yīng)對復雜的業(yè)務(wù)場景。過于靈活的設(shè)計看似功能強大,但又難免會讓業(yè)務(wù)專家難以上手。
7)低代碼平臺上的功能代碼由工具自動生成,數(shù)據(jù)結(jié)構(gòu)和算法不透明,組件封裝,當出現(xiàn)缺陷和故障時,排查處理會異常困難。大量的使用問題、各種平臺的報錯都堆積到低代碼平臺的運維團隊,運維團隊會很快成為整個系統(tǒng)的效率瓶頸。
選擇低代碼應(yīng)用平臺應(yīng)當揚長避短,符合以下特征的應(yīng)用可以考慮使用低代碼平臺構(gòu)建:1)業(yè)務(wù)變化快,且規(guī)則相對簡單;2)開發(fā)重復性高;3)管理模式標準化程度高;4)需求不成熟,快速搭建原型;5)對數(shù)據(jù)的安全性和隱私性安全要求不高;6)對UI個性化要求不高。
2.2 低代碼適用群體
從市場需求角度,低代碼平臺可以劃分為4大類型。
1)場景應(yīng)用型,以滿足業(yè)務(wù)場景應(yīng)用開發(fā)為主,開發(fā)的應(yīng)用主要用于企業(yè)自用。目前用戶量占比最高的低代碼平臺類型,約為45.7%。
2)產(chǎn)品研發(fā)型,以滿足復雜的軟件產(chǎn)品或解決方案開發(fā)為主,主要為其他企業(yè)提供應(yīng)用開發(fā)。
3)平臺生態(tài)型,提供開發(fā)標準和交易平臺,以打造開發(fā)生態(tài)為主,為客戶提供一站式的應(yīng)用開發(fā)或產(chǎn)品服務(wù)。平臺廠商通常開發(fā)標準和交易規(guī)則,為平臺上的SaaS企業(yè)、專業(yè)開發(fā)者、軟件開發(fā)商和ISV等眾多合作伙伴提供技術(shù)、渠道等支持。
4)技術(shù)賦能型,以提供人工智能算法、區(qū)塊鏈等先進技術(shù)插件為主,降低先進技術(shù)的應(yīng)用門檻,目前使用者占比最少,僅1.7%。
從使用者角度,低代碼平臺可以分為5類。
1)軟件產(chǎn)品提供商。將低代碼開發(fā)平臺作為一種工具提供給獨立軟件開發(fā)商ISV、系統(tǒng)集成商SI、SaaS企業(yè)、渠道代理商和咨詢公司等,以實現(xiàn)其各自的目的。如軟件企業(yè)通過購買低代碼開發(fā)工具拓展自身的底層開發(fā)能力,以占領(lǐng)更多的市場;渠道商和咨詢公司把低代碼開發(fā)作為項目實施的工具,用于提高自身的系統(tǒng)部署效率;系統(tǒng)集成商把低代碼開發(fā)視為一種新功能,招標時為潛在客戶提供更完整的解決方案。
2)軟件開發(fā)承包商。通過低代碼開發(fā)對外提供開發(fā)服務(wù),承接各類企業(yè)的原有信息系統(tǒng)改造或創(chuàng)新應(yīng)用開發(fā)等項目。通過低代碼開發(fā)平臺,可以有效提高開發(fā)效率,降低人員投入成本,能夠在更短的時間內(nèi)開發(fā)出一個完整的應(yīng)用系統(tǒng)。
3)一站式應(yīng)用開發(fā)平臺服務(wù)商。將低代碼開發(fā)打造成一個平臺,任何人或企業(yè)都可以到平臺上開發(fā)應(yīng)用,并且可以進行二次開發(fā)個性化定制服務(wù),而平臺則負責提供技術(shù)支持。
4)企業(yè)自用。企業(yè)內(nèi)部具備設(shè)計開發(fā)能力,使用低代碼平臺構(gòu)建自身需要的應(yīng)用系統(tǒng)。
5)個人研究學習。個人或教育機構(gòu)研究和學習低代碼平臺及技術(shù)。
按用戶專業(yè)程度,技術(shù)人員一般可分為3類。
1)特定技術(shù)人員,指前端、后端和DBA等專業(yè)技術(shù)人員。
2)一般技術(shù)人員,指有一定邏輯編碼能力的開發(fā)人員,能夠快速理解并運用表達式、事件等概念。
3)非技術(shù)人員,指沒有開發(fā)經(jīng)驗的產(chǎn)品、運營、商務(wù)和行政人員。
低代碼平臺最終的受眾群體是企業(yè),只有企業(yè)深度應(yīng)用后才能產(chǎn)生更大的規(guī)模經(jīng)濟效益,無論是其他軟件廠商集成自家產(chǎn)品后捆綁銷售,還是低代碼平臺提供商自行銷售,最終面向的都是企業(yè)用戶。
3 低代碼開發(fā)平臺設(shè)計與實現(xiàn)
3.1系統(tǒng)架構(gòu)總體設(shè)計
本項目部署的目標平臺為混合云,系統(tǒng)將以微服務(wù)、SaaS為基礎(chǔ)平臺展開設(shè)計,整合Kube.NETes、Serverless和NoSQL等技術(shù)架構(gòu),構(gòu)建支持云原生低代碼技術(shù)平臺。低代碼開發(fā)平臺系統(tǒng)架構(gòu)如圖1所示。
圖 1 低代碼開發(fā)平臺系統(tǒng)架構(gòu)
第一層支持IaaS(基礎(chǔ)設(shè)施即服務(wù)),云服務(wù)提供商租賃模式的基礎(chǔ)設(shè)施,本項目使用混合云。第二層支持CaaS(容器即服務(wù)),使用云廠商提供的托管的容器編排引擎部署和運行容器,管理集群,自動擴展和故障管理,并維護共同的基礎(chǔ)設(shè)施層,包括治理和安全,本項目使用的為青云,其內(nèi)置了Kubernetes。第三層支持PaaS(平臺即服務(wù)),使用云服務(wù)提供商云服務(wù)中的軟件,如數(shù)據(jù)庫、對象存儲和緩存等,本項目使用對象存儲OBS。第四層支持SaaS(軟件即服務(wù)),將低代碼開發(fā)模塊封裝為單獨的應(yīng)用,提供給各個租戶。
3.2表單引擎設(shè)計
表單引擎是快速實現(xiàn)表單開發(fā)的輕量級設(shè)計工具。目前,有2種思路可實現(xiàn)表單引擎設(shè)計,具體如下。
1)基于文件:創(chuàng)建表單時,先創(chuàng)建一個網(wǎng)頁文件,在該文件上按需拖放Web控件,表單運行時,給網(wǎng)頁隨機生成一個地址,并將地址配置到菜單。
2)基于關(guān)系數(shù)據(jù)庫:由表單設(shè)計器、表單解析執(zhí)行器、表單模板3部分組成。表單設(shè)計器將表單元素存儲到關(guān)系數(shù)據(jù)庫,并為每個表單生成一個ID;表單模板將從表單設(shè)計器上設(shè)計的組件關(guān)系存儲到數(shù)據(jù)庫,由各個組件表組成的數(shù)據(jù)關(guān)系,組合成表單模板;表單解析執(zhí)行器解析表單模板數(shù)據(jù),并在網(wǎng)頁上展示。
3.3流程引擎設(shè)計
流程引擎用于為表單的審批提供支持,本項目流程引擎使用開源的Camunda,可自定義流程模板和節(jié)點驅(qū)動。
3.3.1數(shù)據(jù)庫設(shè)計
自定義的數(shù)據(jù)庫表主要對Camunda原生的數(shù)據(jù)庫表做進一步擴展,以支持子任務(wù)、任務(wù)與審批對象之間的關(guān)聯(lián)、多人會簽投票、審批歷史等與業(yè)務(wù)強相關(guān)的場景。流程引擎數(shù)據(jù)庫表設(shè)計如圖2所示。
圖 2 流程引擎數(shù)據(jù)庫表設(shè)計(部分)
3.3.2功能實現(xiàn)
各租戶可根據(jù)自身業(yè)務(wù)流程需要自定義流程模板,并可保存后再次編輯。Camunda工作流引擎的流程元素節(jié)點主要包括開始事件、中間/邊界事件、結(jié)束事件、網(wǎng)關(guān)、任務(wù)、子流程、數(shù)據(jù)對象引用、數(shù)據(jù)倉庫引用、參與者和組。其中,最常用的任務(wù)節(jié)點包括常規(guī)任務(wù)、不足的是,空中三角運算的三維模型生成技術(shù)存在一些局限性,例如模型效果受到采集影像影響、生成的較高精度模型仍然需要內(nèi)業(yè)人員進行針對性修繕、重做等,進而導致三維可視化系統(tǒng)制作過程中產(chǎn)生新的開銷。不過可以預(yù)料的是,隨著測量技術(shù)與三維可視化技術(shù)的迭代更新,更加成熟的理論應(yīng)用和研究成果將不斷迸發(fā)。在全面實施鄉(xiāng)村振興戰(zhàn)略背景下,鄉(xiāng)村規(guī)劃作為促進鄉(xiāng)村可持續(xù)發(fā)展的重要治理工具之一,將發(fā)揮更大的作用。這也將為我國鄉(xiāng)村地區(qū)實景三維模型建設(shè)提供技術(shù)參考與應(yīng)用思路,為加快構(gòu)建智慧鄉(xiāng)村平臺提供技術(shù)可行性依據(jù)。