摘 要:在復(fù)雜的無(wú)人直升機(jī)地面控制站系統(tǒng)軟件開發(fā)過(guò)程中,既要保證軟件的開發(fā)效率,又要適應(yīng)不斷變化的需求,文章針對(duì)此問(wèn)題提出了一種基于Qt插件式無(wú)人直升機(jī)航路規(guī)劃軟件框架設(shè)計(jì)。首先介紹了軟件框架模型,分析了其工作原理及采用該框架的優(yōu)勢(shì)。其次對(duì)該框架的結(jié)構(gòu)進(jìn)行分析,描述了插件管理、插件通信及界面布局系統(tǒng)的功能。最后該軟件框架應(yīng)用到實(shí)際項(xiàng)目中,實(shí)現(xiàn)了基于Qt插件式無(wú)人直升機(jī)航路規(guī)劃軟件框架,具有復(fù)用性強(qiáng)、維護(hù)性強(qiáng)、耦合度低等特點(diǎn),滿足系統(tǒng)的需求。
關(guān)鍵詞:Qt;插件;航路規(guī)劃;軟件框架
隨著電子技術(shù)的發(fā)展,防空技術(shù)的日益完善,航路規(guī)劃軟件的復(fù)雜度越來(lái)越高,用戶對(duì)軟件的專業(yè)性和擴(kuò)展性提出了更高的要求[1]。主要體現(xiàn)在兩方面,一是軟件功能的變更需求越來(lái)越多;二是需求變更的頻率相對(duì)之前明顯增加。很大一部分的需求變更是對(duì)軟件的主體功能要求不變,而是對(duì)軟件基本功能快速的升級(jí)更新,適應(yīng)不斷變化的監(jiān)控需求。
目前大多軍用等軟件采用面向過(guò)程的軟件開發(fā)方法,面對(duì)軟件需求的變更,在軟件的開發(fā)及維護(hù)等方面帶來(lái)一些問(wèn)題,一方面軟件開發(fā)初期對(duì)軟件功能模塊和接口需求定義不準(zhǔn)確,開發(fā)速度慢;一方面軟件開發(fā)中后期,模塊間的耦合度較高,軟件維護(hù)難度大[2]。
針對(duì)該問(wèn)題,需要設(shè)計(jì)一種軟件框架模型,適應(yīng)用戶的不斷變化的需求。本文提出基于Qt插件式無(wú)人直升機(jī)航路規(guī)劃軟件框架設(shè)計(jì),是采用“平臺(tái)+插件”的軟件架構(gòu),該架構(gòu)能在不修改程序主體的情況下,根據(jù)變更的需求動(dòng)態(tài)加載對(duì)應(yīng)功能的插件,對(duì)軟件功能進(jìn)行修改和維護(hù),提高了軟件的開發(fā)效率,同時(shí)提高了軟件的擴(kuò)展性,適應(yīng)不斷變化的需求。
一、“平臺(tái)+插件”模型
“平臺(tái)+插件”軟件架構(gòu)的核心思想是將基礎(chǔ)功能和主要邏輯以插件的形式通過(guò)主程序(平臺(tái))統(tǒng)一的管理,平臺(tái)與插件以及插件之間的交互通過(guò)制定一套標(biāo)準(zhǔn)通信協(xié)議接口完成。平臺(tái)完成對(duì)插件的管理,實(shí)現(xiàn)對(duì)插件的調(diào)用、加載及卸載。插件必須依賴主程序才能發(fā)揮自身功能,僅靠插件是無(wú)法正常運(yùn)行的。另一方面,主程序可以不需要依賴插件就可以運(yùn)行。也就是說(shuō),插件可以加載到主程序中并且動(dòng)態(tài)更新而不會(huì)對(duì)主程序造成任何影響。在“平臺(tái)+插件”架構(gòu)下,插件可以進(jìn)行增刪改查,若需求變更,通過(guò)設(shè)計(jì)新插件或者修改已有插件即可,不需要對(duì)主程序進(jìn)行修改及編譯。
主程序(平臺(tái)):程序的主體,實(shí)現(xiàn)基礎(chǔ)架構(gòu)和核心功能。主程序(平臺(tái))提供相應(yīng)的接口給插件調(diào)用,同時(shí),主程序(平臺(tái))通過(guò)相應(yīng)的接口可以插入不同的插件,完成相應(yīng)服務(wù)并提供給用戶,是整個(gè)軟件框架的基礎(chǔ)。
插件:是一種遵循一定規(guī)范的應(yīng)用程序接口編寫的程序,實(shí)現(xiàn)主要邏輯和基礎(chǔ)功能。插件能動(dòng)態(tài)地插入到平臺(tái)中,完善和擴(kuò)展系統(tǒng)整體功能。插件是“平臺(tái)+插件”架構(gòu)的重要組成部分。
接口:實(shí)現(xiàn)“平臺(tái)+插件”架構(gòu)指定的一套標(biāo)準(zhǔn)通信協(xié)議。接口實(shí)現(xiàn)在主程序不變的情況下,通過(guò)加載、刪除或修改插件完善應(yīng)用程序的功能。
采用“平臺(tái)+插件”模型在分析、設(shè)計(jì)、開發(fā)、擴(kuò)展等方面有諸多益處。一是結(jié)構(gòu)清晰、易于理解。借鑒硬件總線的定義,各個(gè)插件之間相互獨(dú)立,實(shí)現(xiàn)軟件的“即插即用”;二是維護(hù)性強(qiáng)。插件與主程序之間通過(guò)接口進(jìn)行通信,類似硬件插卡,可以進(jìn)行加載、調(diào)用及卸載等操作,結(jié)構(gòu)靈活,易修改,方便軟件的升級(jí)和維護(hù);三是復(fù)用性強(qiáng)。插件是一系列小的功能結(jié)構(gòu)組成,通過(guò)接口向外提供服務(wù),移植性好,復(fù)用性強(qiáng);四是耦合度低。插件是通過(guò)與主程序通信實(shí)現(xiàn)插件與插件之間的通信,插件之間的耦合度低。
二、插件分類
隨著計(jì)算機(jī)軟件技術(shù)的不斷發(fā)展,插件技術(shù)的應(yīng)用越來(lái)越廣,插件種類也越來(lái)越多,目前應(yīng)用普遍的插件可以分為四類。一類是類似命令插件。該類型插件應(yīng)用廣泛,使用方便、門檻低,縮短了軟件開發(fā)時(shí)間。但是,該類型插件功能較單一、可擴(kuò)展性小、自由度低且降低軟件運(yùn)行效率;二類是腳本插件。該類型插件方便、簡(jiǎn)單、易學(xué)、易用,但是該類型腳本需要自主開發(fā)內(nèi)核,制作相對(duì)比較復(fù)雜;三類是組件插件。該類型插件提供了組件之間的交互規(guī)范和環(huán)境,不需要知道插件功能,通過(guò)接口可直接訪問(wèn)插件,使主程序與各插件間建立信息交互。但是,該類型插件設(shè)計(jì)需要技術(shù)原理支持,提高了開發(fā)難度;四類是動(dòng)態(tài)鏈接庫(kù)(DLL)插件。該類型插件定義了多個(gè)接口,可以訪問(wèn)主程序中各種資源,自由度大,設(shè)計(jì)者可以充分發(fā)揮主觀意識(shí)和創(chuàng)造思維。但是該類型插件制作復(fù)雜、開發(fā)門檻高。
考慮應(yīng)用場(chǎng)景及運(yùn)行平臺(tái),本文選擇基于動(dòng)態(tài)鏈接庫(kù)插件作為航路規(guī)劃軟件的應(yīng)用框架。
三、框架結(jié)構(gòu)設(shè)計(jì)
軟件框架由插件管理系統(tǒng)、通信管理系統(tǒng)及界面布局管理系統(tǒng)組成,軟件架構(gòu)結(jié)構(gòu)設(shè)計(jì)如下圖所示。
1.插件管理系統(tǒng)
插件管理系統(tǒng)主要功能是對(duì)插件進(jìn)行管理,包括插件配置信息的獲取及判定,插件的加載及卸載等。插件的狀態(tài)包括無(wú)效、準(zhǔn)備、加載、運(yùn)行、關(guān)閉、刪除。無(wú)效:沒有獲取到該插件信息;準(zhǔn)備:插件配置信息獲取成功且判定正常;加載:插件被加載至主程序中;運(yùn)行:插件成功加載且初始化完成;關(guān)閉:插件被關(guān)閉;刪除:釋放插件實(shí)例對(duì)象。
2.通信管理系統(tǒng)
通信管理系統(tǒng)主要功能是實(shí)現(xiàn)主程序與插件及插件之間的通信。軟件在Qt平臺(tái)開發(fā),通過(guò)Qt的信號(hào)與槽機(jī)制完成插件之間的通信。
3.界面布局管理系統(tǒng)
界面布局管理系統(tǒng)在主程序(平臺(tái))中完成。界面布局管理系統(tǒng)主要完成兩方面功能,一是完成菜單欄、工具欄、功能欄及狀態(tài)欄的布局;二是完成菜單欄、工具欄、功能欄及狀態(tài)欄上控件的添加、顯示及功能處理。
四、應(yīng)用
在某項(xiàng)目中,應(yīng)用基于Qt插件式航路規(guī)劃軟件框架進(jìn)行開發(fā)。在Windows環(huán)境下采用Qt5.5.1進(jìn)行軟件開發(fā),用戶界面主要包括五大部分:菜單欄、工具欄、功能欄、狀態(tài)欄及操作區(qū)。軟件中功能模塊采用插件形式開發(fā),主程序(平臺(tái))通過(guò)接口方法對(duì)插件進(jìn)行調(diào)用。
實(shí)踐表明,通過(guò)插件式開發(fā)的航路規(guī)劃軟件框架代碼簡(jiǎn)潔、條理清晰、運(yùn)行穩(wěn)定,能夠滿足無(wú)人直升機(jī)航路規(guī)劃的需求。
五、結(jié)語(yǔ)
地面控制站是無(wú)人直升機(jī)系統(tǒng)的重要組成部分,航路規(guī)劃是地面控制站中的關(guān)鍵部分,是實(shí)現(xiàn)無(wú)人直升機(jī)智能導(dǎo)航和安全飛行的重要保障。本文設(shè)計(jì)的基于Qt插件式無(wú)人直升機(jī)航路規(guī)劃軟件框架,代碼使用Qt和C++進(jìn)行設(shè)計(jì),使用面向?qū)ο箝_發(fā)設(shè)計(jì)思想。插件式框架降低了系統(tǒng)的耦合度,具有復(fù)用性強(qiáng)、維護(hù)性好及擴(kuò)展性強(qiáng)等特點(diǎn)。
參考文獻(xiàn):
[1]肖強(qiáng),朱玉祜,楊丙泉.插件式無(wú)人機(jī)任務(wù)規(guī)劃軟件框架設(shè)計(jì)[J].電光與控制,2014,(12)
[2]勞憲銀.基于插件式的軟件總線構(gòu)件平臺(tái)的設(shè)計(jì)[J].電子世界,2016,(10)
[3]董冰.計(jì)算機(jī)軟件中的插件技術(shù)研究[J].信息與電腦,2017,(23)
[4]王宏強(qiáng),張航峰.戰(zhàn)術(shù)指揮情報(bào)終端的插件式軟件框架設(shè)計(jì)[J].指揮控制與仿真,2012,(6)
作者簡(jiǎn)介:
程滔(1990年-),男,江西省九江市人,碩士學(xué)位,工程師,主要從事無(wú)人機(jī)測(cè)控系統(tǒng)研究。