單文金 張 政 卞德志 胡昌平 胡翔宇
1(中國船舶集團(tuán)有限公司第七一六研究所 江蘇 連云港 222006) 2(中船重工信息科技有限公司 江蘇 連云港 222006) 3(哈爾濱工程大學(xué) 黑龍江 哈爾濱 150001)
當(dāng)前,《中國制造2025》已上升為國家戰(zhàn)略,是建設(shè)中國為制造強(qiáng)國的三個(gè)十年戰(zhàn)略中第一個(gè)十年的行動(dòng)綱領(lǐng)[1]。船舶工業(yè)是《中國制造2025》中提出的十個(gè)重點(diǎn)行業(yè)之一,但是我國船舶領(lǐng)域企業(yè)信息化建設(shè)水平整體偏低,企業(yè)信息化建設(shè)需求急迫。在軟件規(guī)模不斷擴(kuò)大、軟件復(fù)雜性不斷提高的信息化建設(shè)需求下,如何在提高軟件質(zhì)量的同時(shí),縮短軟件建設(shè)周期,保證軟件穩(wěn)定性、維護(hù)性、可拓展性成為一個(gè)急需解決的難題。要解決這個(gè)難題,信息化建設(shè)企業(yè)必須具備快速支撐軟件上線實(shí)施的能力。企業(yè)在快速軟件建設(shè)時(shí)通常會(huì)面臨以下幾個(gè)問題:
1) 軟件開發(fā)周期短,穩(wěn)定性需求高:隨著當(dāng)前信息化建設(shè)環(huán)境存在更高的需求急迫性,對(duì)于軟件的交付周期、軟件的穩(wěn)定性有著更高的期望。
2) 技術(shù)人員水平要求高:基于交付快速化、業(yè)務(wù)復(fù)雜化、性能穩(wěn)定化等需求,對(duì)于開發(fā)人員的技術(shù)水平能力要求不斷拔高。
3) 開發(fā)性價(jià)比低,大量的代碼重復(fù)建設(shè)造成了資源浪費(fèi):在實(shí)際的軟件開發(fā)中,在頁面端,存在大量的類似頁面,頁面布局和處理邏輯比較固定[2]。在服務(wù)端,基于面向?qū)ο蟮拈_發(fā)模式,每個(gè)對(duì)象的基礎(chǔ)服務(wù)代碼運(yùn)行模式一致,從而帶來大量的重復(fù)代碼開發(fā)。
由此,行業(yè)內(nèi)需要一種可以快速可視化完成開發(fā)軟件的平臺(tái)來解決上述問題。目前市面上軟件可視化開發(fā)平臺(tái)大多專注于頁面設(shè)計(jì),缺少頁面對(duì)應(yīng)服務(wù)的設(shè)計(jì)構(gòu)建,從而無法實(shí)現(xiàn)軟件頁面、服務(wù)整體結(jié)構(gòu)的開發(fā)。國外此類平臺(tái)主要代表作品有微軟的PowerApps[3],是一種基于主題的輕業(yè)務(wù)應(yīng)用構(gòu)建工具,PowerApps提供的功能雖然強(qiáng)大,但是在使用中會(huì)出現(xiàn)以下幾個(gè)問題:(1) 對(duì)微軟家族產(chǎn)品依賴性強(qiáng),需要Office 365產(chǎn)品組件的支持。(2) 服務(wù)端由微軟云提供,如果自己搭建服務(wù)端,價(jià)格昂貴。(3) 軟件客戶端運(yùn)行環(huán)境在Office下,平臺(tái)移植性差。國內(nèi)此類平臺(tái)主要代表作品有起步科技的牛道云,是一套基于云服務(wù)器的在線開發(fā)平臺(tái)。牛道云提供在線模板庫依賴引入開發(fā),在制作網(wǎng)站、移動(dòng)App方面具有較強(qiáng)的優(yōu)勢,但在企業(yè)軟件開發(fā)方面具有以下幾個(gè)缺點(diǎn):(1) 側(cè)重于互聯(lián)網(wǎng)應(yīng)用場景開發(fā),偏移動(dòng)App設(shè)計(jì)風(fēng)格。(2) 平臺(tái)價(jià)格授權(quán)按軟件收費(fèi),成本會(huì)很高。(3) 業(yè)務(wù)場景比較固定,拓展性弱,無法適應(yīng)船舶領(lǐng)域內(nèi)定制化需求。
針對(duì)當(dāng)前船舶領(lǐng)域信息化建設(shè)需求急迫、軟件體量小而數(shù)量多的特殊性,市面常見的開發(fā)平臺(tái)所依賴的底層技術(shù)和支持的場景并不適用于船舶領(lǐng)域的信息化軟件快速構(gòu)建的特殊性需求?;诖耍疚奶岢鲆环N軟件可視化快速開發(fā)平臺(tái),該平臺(tái)在船舶行業(yè)內(nèi)具有創(chuàng)先性。通過該平臺(tái)開發(fā)人員可以在線進(jìn)行軟件的整體的構(gòu)建,以業(yè)務(wù)模型為構(gòu)建基礎(chǔ),進(jìn)而進(jìn)行整體軟件的在線開發(fā),可以極大縮減代碼甚至可以實(shí)現(xiàn)無代碼構(gòu)建完整的應(yīng)用軟件,縮短軟件開發(fā)周期,降低軟件開發(fā)門檻。并且已構(gòu)建的軟件創(chuàng)建的業(yè)務(wù)模型可以導(dǎo)入平臺(tái)模型庫,在其他軟件構(gòu)建時(shí)可以進(jìn)行復(fù)用,避免重復(fù)的模型建設(shè),提高軟件開發(fā)效率。
軟件可視化快速開發(fā)平臺(tái)是一種基于頁面可視化配置引擎式快速構(gòu)建軟件的平臺(tái),其總體架構(gòu)如圖1所示。自定義組件庫是平臺(tái)的基礎(chǔ),對(duì)象模型設(shè)計(jì)器、接口設(shè)計(jì)器、頁面設(shè)計(jì)器、執(zhí)行引擎是平臺(tái)的核心組件,基于設(shè)計(jì)器完成模型、接口、頁面的設(shè)計(jì),通過運(yùn)行執(zhí)行引擎完成模型解析、服務(wù)構(gòu)建、建表更新表、頁面編譯等操作。
1) 自定義組件庫:自定義組件庫提供大量開包即用的封裝組件以及設(shè)計(jì)器、引擎的底層實(shí)現(xiàn),是平臺(tái)實(shí)現(xiàn)快速開發(fā)的基礎(chǔ)。
2) 對(duì)象模型設(shè)計(jì)器:提供開發(fā)人員可視化方式實(shí)現(xiàn)構(gòu)建對(duì)象模型,對(duì)象模型是接口設(shè)計(jì)、頁面設(shè)計(jì)的信息來源,是構(gòu)建服務(wù)、表的基礎(chǔ)。
3) 接口設(shè)計(jì)器:提供開發(fā)人員可視化方式實(shí)現(xiàn)開發(fā)接口,通過設(shè)計(jì)器配置工具進(jìn)行接口信息、接口輸入輸出格式維護(hù),并提供接口文檔在線生成查看的功能。
4) 頁面設(shè)計(jì)器:提供開發(fā)人員可視化完成頁面設(shè)計(jì),設(shè)計(jì)器可以通過配置方式進(jìn)行頁面布局,拖拽方式進(jìn)行控件添加,并提供即時(shí)預(yù)覽頁面的功能。
5) 執(zhí)行引擎:編譯頁面設(shè)計(jì)器設(shè)計(jì)頁面,生成可供直接修改使用的頁面元素文件。解析對(duì)象模型結(jié)構(gòu),構(gòu)建對(duì)象模塊服務(wù)與數(shù)據(jù)庫表。
可以看出,自定義組件庫為設(shè)計(jì)器和執(zhí)行引擎的運(yùn)行提供了下層的支撐。對(duì)象模型設(shè)計(jì)器提供對(duì)象模型在線設(shè)計(jì)并最終生成對(duì)象模型,對(duì)象模型是后續(xù)接口設(shè)計(jì)、頁面設(shè)計(jì)的元數(shù)據(jù)。接口設(shè)計(jì)器基于對(duì)象模型通過可視化配置形式生成接口,接口是頁面和服務(wù)端進(jìn)行通信的通道。頁面設(shè)計(jì)器基于之前設(shè)計(jì)的對(duì)象模型、接口進(jìn)行頁面可視化設(shè)計(jì),配置表單字段與對(duì)象模型的映射,表單事件與接口的映射,以此來達(dá)到頁面功能的實(shí)現(xiàn)。
開發(fā)人員通過設(shè)計(jì)頁面進(jìn)行可視化對(duì)象模型設(shè)計(jì),定義模型描述、模型字段、模型字段定義信息,生成模型元數(shù)據(jù),運(yùn)行執(zhí)行引擎將模型元數(shù)據(jù)構(gòu)建為對(duì)象模型。執(zhí)行平臺(tái)自定義組件模型數(shù)據(jù)庫轉(zhuǎn)換器[4]將對(duì)象模型裝換為多數(shù)據(jù)庫識(shí)別的數(shù)據(jù)庫執(zhí)行語句,執(zhí)行代碼生成器組件可以依托對(duì)象模型生成對(duì)象服務(wù)代碼。對(duì)象模型設(shè)計(jì)器架構(gòu)如圖2所示。
1) 模型元數(shù)據(jù):模型設(shè)計(jì)信息的信息對(duì)象,按層級(jí)存放整個(gè)模型屬性信息。
2) 對(duì)象模型:業(yè)務(wù)對(duì)象的完整信息集合,是數(shù)據(jù)庫表和對(duì)象服務(wù)的生成基準(zhǔn),也是接口設(shè)計(jì)、頁面設(shè)計(jì)的基礎(chǔ)元素。
3) 模型數(shù)據(jù)庫轉(zhuǎn)換器:平臺(tái)自定義組件,封裝了模型數(shù)據(jù)庫轉(zhuǎn)換的處理邏輯,可以將對(duì)象模型轉(zhuǎn)換成數(shù)據(jù)庫執(zhí)行語句,支持包括Oracle、MySQL、達(dá)夢、MSSQL等14種數(shù)據(jù)庫。
4) 代碼生成器:平臺(tái)自定義組件,封裝了代碼生成邏輯,以對(duì)象模型為原型,生成對(duì)象基礎(chǔ)服務(wù)代碼。
對(duì)象模型設(shè)計(jì)器頁面如圖3所示。頂部是軟件選擇框、數(shù)據(jù)庫更新文件生成按鈕、服務(wù)端代碼生成按鈕。中間左側(cè)是對(duì)象模型設(shè)計(jì)定義,中間右側(cè)是對(duì)象模型屬性設(shè)計(jì)定義。開發(fā)者可以在線進(jìn)行模型及模型屬性定義,模型設(shè)計(jì)完畢后,可以依托模型生成數(shù)據(jù)庫更新文件和服務(wù)端代碼。
開發(fā)人員通過設(shè)計(jì)頁面進(jìn)行可視化接口設(shè)計(jì),引入對(duì)象模型,定義接口信息,配置接口輸入輸出參數(shù),最終生成接口[5]。文檔生成器通過接口的定義及配置生成接口說明文檔[6]。接口設(shè)計(jì)器的設(shè)計(jì)架構(gòu)如圖4所示。
1) 對(duì)象服務(wù):基于對(duì)象模型生成的后端服務(wù),提供對(duì)象模型結(jié)構(gòu)數(shù)據(jù)查詢、保存、更新、刪除服務(wù)。
2) 文檔生成器:基于設(shè)計(jì)后接口定義及配置信息,文檔生成器可以生成接口說明文檔并提供在線接口文檔的查閱及接口測試。
接口設(shè)計(jì)器頁面如圖5所示。頂部是軟件選擇框、接口文檔生成按鈕。中間左側(cè)是接口設(shè)計(jì)定義,右側(cè)是接口輸入、輸出參數(shù)配置頁面。開發(fā)人員在線進(jìn)行新建、選擇對(duì)象模型,配置輸入、輸出參數(shù)即可完成接口的開發(fā),依托生成的接口,可以生成接口文檔。
頁面設(shè)計(jì)器是頁面可視化設(shè)計(jì)工具,開發(fā)人員可以在線頁面布局[7],通過拖拽控件的方式就能滿足頁面設(shè)想,并可以即時(shí)預(yù)覽頁面,其整體架構(gòu)如圖6所示。
1) 視窗:設(shè)計(jì)頁面的容器[8],引入對(duì)象模型、接口,配置頁面屬性,定義頁面事件。
2) 頁面布局器:頁面設(shè)計(jì)的核心組件,通過拖拽式頁面布局、組件添加進(jìn)行頁面設(shè)計(jì)[9],頁面設(shè)計(jì)后即可即時(shí)預(yù)覽,還提供通過在線編輯頁面代碼修改自定義樣式。
3) 前端自定義組件庫:前端自定義組件庫封裝了大量的前端頁面組件,除了常用的表格、表單、附件等組件,還提供統(tǒng)計(jì)圖表如餅圖、柱狀圖、儀表盤、樹圖等自定義封裝組件,做到拿來即用。
4) 代碼生成器:通過代碼生成器可以將在線設(shè)計(jì)的頁面生成可編輯的頁面代碼以及布局器頁面數(shù)據(jù)對(duì)象,開發(fā)者可以在線直接編譯生成的HTML、JS代碼來進(jìn)行自定義的樣式調(diào)整以及邏輯開發(fā)。
頁面設(shè)計(jì)器界面如圖7所示,左側(cè)是組件選擇面板、布局對(duì)象結(jié)構(gòu)面板,中間是設(shè)計(jì)界面、預(yù)覽界面、HTML源碼面板、JS源碼面板,右側(cè)是屬性配置面板。開發(fā)者可以全程在線進(jìn)行設(shè)計(jì),還可以將設(shè)計(jì)界面源碼下載到本地開發(fā)環(huán)境中進(jìn)行編譯開發(fā)。
執(zhí)行引擎一方面支撐各個(gè)設(shè)計(jì)器中配置工具的運(yùn)行,另一方面要支撐設(shè)計(jì)模型的運(yùn)行[10]。執(zhí)行引擎提供的主要功能如下:
1) 模型解析:軟件運(yùn)行期間,當(dāng)用戶發(fā)起頁面請(qǐng)求后,首先會(huì)將設(shè)計(jì)后的請(qǐng)求頁面解析成瀏覽器識(shí)別的HTML頁面,接著會(huì)將頁面調(diào)用的對(duì)象模型解析成對(duì)象服務(wù)識(shí)別的類對(duì)象。
2) 服務(wù)生成:在模型設(shè)計(jì)期,可以基于對(duì)象模型生成即時(shí)可用的在線對(duì)象模型服務(wù),可以提供在線訪問測試的功能。
3) 數(shù)據(jù)庫操作:基于設(shè)計(jì)期間生成的數(shù)據(jù)庫執(zhí)行語句,可以實(shí)現(xiàn)在線數(shù)據(jù)庫建庫、建表、更新表的操作。對(duì)象模型更新后會(huì)比對(duì)當(dāng)前數(shù)據(jù)庫結(jié)構(gòu)生成差異執(zhí)行語句文件,通過執(zhí)行語句更新數(shù)據(jù)庫表結(jié)構(gòu),記錄執(zhí)行語句,并提供后期回溯、切換數(shù)據(jù)庫的功能。
目前,基于開發(fā)平臺(tái)開發(fā)的中船軍工建設(shè)項(xiàng)目管控系統(tǒng)、中船固定資產(chǎn)投資管理系統(tǒng)、中船產(chǎn)品質(zhì)量信息系統(tǒng)、某大型船廠智能管家系統(tǒng)等項(xiàng)目已上線運(yùn)行,在開發(fā)平臺(tái)支撐下,軟件平均節(jié)省70%的開發(fā)工作量,節(jié)省約40%的人力成本,大幅提高了開發(fā)效率,有效降低了人力成本。
以軍工建設(shè)項(xiàng)目管控系統(tǒng)為例,全體共計(jì)97個(gè)菜單功能,其中21個(gè)菜單功能實(shí)現(xiàn)無代碼開發(fā),56個(gè)菜單功能代碼開發(fā)量在10%以內(nèi),13個(gè)菜單功能代碼開發(fā)量在20%以內(nèi),4個(gè)菜單功能代碼開發(fā)量在30%以內(nèi),僅3個(gè)菜單功能代碼開發(fā)量超過30%,整體節(jié)省約75%的開發(fā)工作量,其上線運(yùn)行軟件頁面如圖8所示。
軟件可視化快速開發(fā)平臺(tái)是一種基于頁面可視化配置設(shè)計(jì)的引擎式開發(fā)平臺(tái),該平臺(tái)在行業(yè)領(lǐng)域內(nèi)具有創(chuàng)新性。平臺(tái)通過封裝的組件調(diào)用、可視化的配置設(shè)計(jì)、引擎式的解析編譯,可以讓普通技術(shù)水平的開發(fā)人員經(jīng)過簡單的培訓(xùn)后即可進(jìn)行快速的軟件開發(fā),降低了開發(fā)成本,提高了開發(fā)效率。在下一步的工作中,一方面將繼續(xù)優(yōu)化模型構(gòu)造能力以及模型適用范圍,另一方面將通過梳理業(yè)務(wù)形成應(yīng)用領(lǐng)域內(nèi)可共享的業(yè)務(wù)模型庫,進(jìn)一步提升平臺(tái)的可用性、豐富性。