李俊 孫潔晶
摘要:隨著裝備的發展,系統控制軟件規模越來越大,研制周期變短,多平臺并存,要求系統控制軟件能充分繼承重用已有項目成果,快速完成軟件研制。
關鍵詞:軟件架構;集成框架;組件;插件
1原有系統控制架構
原有系統控制架構通過集成模塊完成其它應用模塊的加載/卸載和集成,模塊間通過WINDOWS消息、回調、函數調用和共享內存交換等方式進行數據交互。
原系統控制架構在軟件重用、研制效率以及平臺適應方面存在以下不足:
(1)信息交互方式不統一。通過WINDOWS消息、回調、函數調用和共享內存交換等多種方式進行模塊間的信息交互,無統一的信息交互方式。降低了軟件模塊的重用效率。
(2)模塊化程度不夠。單個軟件模塊雖可以分解成更多子模塊,但子模塊的集成完全依賴代碼實現,集成效率低。為提高集成效率,原系統控制架構的軟件模塊劃分粒度較大。這種大粒度的模塊難以在后續項目中復用。
(3)平臺適應性單一。只支持X86和WINDOWS操作系統,不支持國產化硬件平臺和操作系統,不具備跨平臺運行能力。在這種架構下,原有軟件模塊只能應用于WINDOWS操作系統,而后續很多裝備都要求采用國產化操作系統,原有軟件模塊的復用度越來越低。
2 系統控制軟件架構設計
2.1 架構需求
為實現系統控制軟件模塊高效重用和快速開發,系統控制軟件架構需具備以下特征:
(1)信息交互方式統一。信息交互方式主要指軟件模塊信息輸入輸出的方式,統一的信息交互方式可以將軟件模塊外部接口方式標準化,標準化接口便于軟件模塊直接復用集成。
(2)模塊層次化。系統控制軟件需實現軟件模塊不同粒度的復用,需構建多層次、不同粒度的軟件模塊/子模塊。同時,這種模塊構建方式便于將一個軟件模塊分解為多個子模塊,由多人并行開發并直接集成,支持快速開發。
(3)跨平臺適應能力。同時適應X86和國產化硬件平臺,以及WINDOWS和國產化操作系統,即軟件架構能同時運行在兩種硬件平臺和操作系統中。跨平臺適應能力將大幅提高軟件的重用率。
2.2軟件架構設計
基于系統控制架構需求,采用“集成框架&組件/插件”體制,設計了一種基于重用和快速開發的系統控制軟件架構,如圖1所示
整個系統控制軟件架構由跨平臺軟件集成框架、基礎層、核心層和應用層組成。
跨平臺軟件集成框架:提供一組框架目錄、執行程序、動態庫、配置文件和接口文件,能夠將基于此框架開發的“軟件模塊”通過配置文件快速集成為可執行程序,并能夠通過配置文件靈活配置界面布局。
基礎層:由界面配置文件、組件/插件配置文件和日志文件等組成。
a)界面配置文件:用于設置組件/插件窗口標題、啟動界面名稱等顯示屬性,以及單實例控制和顯示方式等。
b)組件/插件配置文件:組件加載配置文件,包含了框架需要加載的各個組件的動態庫名稱、簡要信息、加載順序、目錄名稱和組件UI配置文件名稱;組件UI配置文件,用于配置菜單、工具欄、視圖等;插件配置文件,用于配置窗口主界面的布局組成,可分為主視圖、標簽視圖、切分視圖等組成,布局為任意界面。
c)日志文件:包括調試日志信息和軟件運行日志信息等。
核心層:包括界面管理器和消息中心,界面管理器負責布局管理和事件響應;布局管理負責菜單欄、狀態欄和主界面的初始化,主界面可由組件和插件布局完成;事件響應用于處理菜單欄中各菜單項的響應事件,負責分發到相應的組件或插件中進行處理。消息中心:包括注冊管理和消息分發兩部分,注冊管理記錄了被加載的各個軟件模塊,即插件和組件對應ID到模塊指針的映射,便于根據ID索引;消息分發用于軟件模塊間的內部通信,負責分發消息到指定模塊,完成信息交互功能。
應用層:由組件和插件構成,組件和插件的開發必須基于框架提供的接口類實現,才能夠被框架調用和集成,從而實現模塊間的信息傳遞,響應菜單事件等。一個組件可以包括多個插件。
2.2.1 工作流程
系統控制軟件架構工作流程如圖2所示。
a)配置文件讀取:軟件框架讀取基礎層的界面配置文件、組件/插件配置文件,獲取組件/插件標題、名稱、加載順序和界面布局配置等信息。b)組件/插件加載:軟件框架按照配置文件的順序加載完成組件/插件。c)組件/插件初始化:組件/插件完成業務功能初始化。d)消息訂閱:組件/插件通過消息中心的注冊管理,完成消息訂閱。e)界面布局:軟件框架通過界面管理器的布局管理,完成組件/插件界面布局。f)數據交互:組件/插件間通過消息訂閱發布機制進行數據交互。g)事件響應:組件/插件接收事件通知,響應各種操作事件,觸發相應處理。h)軟件退出:軟件框架反序卸載加載組件/插件。
2.2.2組件/插件實現機制
組件是一種“軟件模塊”的存在形式,以動態庫部署,可具有UI界面,也可只是后臺運行的動態庫。插件是一種“軟件模塊”的存在形式,以動態庫部署,是程序UI界面的劃分單元,可以僅僅是一個窗口,也可以是若干窗口的集合。組件和插件并沒有本質上的區別,都是被軟件框架調用集成的軟件模塊。唯一的區別可以描述為:組件比插件的功能模塊大一些,組件可以為純后臺運行動態庫,也可以是具有UI界面的動態庫,捕件只能是UI單元的動態庫,可以劃分成很小的粒度,當然“組件”和“插件”粒度的劃分沒有絕對統一的標準,基于的原則是軟件可復用度的考慮。
2.2.3跨平臺適應機制
軟件框架和組件/插件采用QT開發庫進行開發,QT開發庫對不同操作系統的應用程序接口進行了封裝,具有跨平臺特性,同時支持WINDOWS和國產操作系統。
同時,由于國產化硬件平臺采用非X86指令集,為同時適應X86和國產化硬件平臺,源代碼需在不同目標機上重新編譯。
3 結束語
目前,系統控制軟件架構具備統一的信息交互方式、多層次模塊構建能力、跨平臺適應能力、良好的外部框架適配能力、高效的模塊集成能力。已經在多個課題中進行了充分驗證,能夠實現軟件級、組件級、插件級的多層次高效重用和快速開發,將在后續系統控制軟件中推廣使用。
(作者單位:南京擎天科技有限公司)