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