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