楊 璇 來(lái)晉峰
(1.西安電子工程研究所 西安 710100;2.中國(guó)北方工業(yè)公司 北京 100053)
為了提高軟件開(kāi)發(fā)的效率和軟件質(zhì)量、縮短軟件開(kāi)發(fā)的周期,增強(qiáng)軟件的開(kāi)放性和對(duì)外部適應(yīng)性,減少軟件危機(jī),軟件復(fù)用作為軟件工程中的一個(gè)重要領(lǐng)域,已成為解決上述問(wèn)題的主要途徑。
軟件復(fù)用的概念是由Mellroy 早在1968年的軟件工程會(huì)議上提出,然而軟件復(fù)用技術(shù)對(duì)軟件產(chǎn)業(yè)發(fā)展的支持效果不是如人所愿,這種情況是由技術(shù)方面、非技術(shù)方面中不成熟因素導(dǎo)致而成的[1]。近年來(lái),隨著面向?qū)ο蠹夹g(shù)的出現(xiàn)和成熟,軟件復(fù)用關(guān)鍵技術(shù)瓶頸問(wèn)題得到解決,在軍用雷達(dá)軟件開(kāi)發(fā)中,軟件復(fù)用的研究也正成為焦點(diǎn)。但由于國(guó)內(nèi)研究時(shí)間較短,應(yīng)用并不廣泛,本文利用模塊化與構(gòu)件思想研究分析軟件復(fù)用技術(shù)在雷達(dá)數(shù)據(jù)處理軟件中的應(yīng)用,具有一定先進(jìn)性和指導(dǎo)意義。
近年來(lái),隨著計(jì)算機(jī)技術(shù)與武器裝備技術(shù)的快速發(fā)展,武器系統(tǒng)對(duì)于信息化、智能化的要求越來(lái)越高,導(dǎo)致雷達(dá)數(shù)據(jù)處理軟件的規(guī)模和復(fù)雜性也不斷提高。傳統(tǒng)的軟件開(kāi)發(fā)方法由于普遍存在重復(fù)勞動(dòng)、開(kāi)發(fā)周期長(zhǎng)、經(jīng)費(fèi)浪費(fèi)等問(wèn)題,已經(jīng)不適應(yīng)大型化、復(fù)雜化的系統(tǒng)研制。
通過(guò)對(duì)不同型號(hào)雷達(dá)數(shù)據(jù)處理系統(tǒng)研究可以看出,其系統(tǒng)的功能和原理是基本相同的。因此,可以采用軟件復(fù)用技術(shù)構(gòu)建雷達(dá)數(shù)據(jù)處理軟件,實(shí)現(xiàn)不同型號(hào)雷達(dá)數(shù)據(jù)處理軟件的相互移植,從而減少重復(fù)勞動(dòng),縮短開(kāi)發(fā)周期,全面提升軟件開(kāi)發(fā)質(zhì)量。
軟件復(fù)用技術(shù)是指重復(fù)使用“為了復(fù)用目的而設(shè)計(jì)的軟件”的過(guò)程[2]。其中,在一個(gè)系統(tǒng)中多次使用一個(gè)相同的軟件成分,不能稱為復(fù)用而只能叫軟件共享;對(duì)一個(gè)軟件進(jìn)行修改,使它可運(yùn)行新的軟硬件平臺(tái)也不能稱為復(fù)用而叫做軟件移植。
軟件復(fù)用是在新的軟件開(kāi)發(fā)過(guò)程中,利用已有的、可復(fù)用的軟件成分來(lái)構(gòu)造和生成新的軟件系統(tǒng)[3]。其中可復(fù)用的軟件成分包括軟件設(shè)計(jì)方法、軟件結(jié)構(gòu)框架、程序代碼、分析結(jié)果等。
根據(jù)軟件復(fù)用的實(shí)施性質(zhì)和過(guò)程可將軟件復(fù)用分為抽象技術(shù)、選擇技術(shù)、例化技術(shù)和集成技術(shù)[4]。抽象是對(duì)復(fù)用對(duì)象的概括和提煉,即將操作和對(duì)象從語(yǔ)言、機(jī)器和環(huán)境中提煉出來(lái),是軟件復(fù)用的關(guān)鍵;選擇是根據(jù)功能需求,在庫(kù)中檢索和匹配相關(guān)復(fù)用對(duì)象,完成存放、比較和檢索可復(fù)用軟件對(duì)象的功能;例化是選擇技術(shù)的繼續(xù),完成對(duì)象的參數(shù)設(shè)置、轉(zhuǎn)換和約束;集成是根據(jù)復(fù)用技術(shù)提高的框架,將已例化的復(fù)用對(duì)象組合成軟件系統(tǒng)的過(guò)程。
雷達(dá)數(shù)據(jù)處理軟件用以完成目標(biāo)的航跡建立、航跡相關(guān)、航跡管理、航跡濾波、雜波處理、敵我識(shí)別、威脅估等處理任務(wù),實(shí)現(xiàn)對(duì)目標(biāo)的穩(wěn)定跟蹤[5]。
數(shù)據(jù)處理軟件的核心功能包括點(diǎn)跡凝聚、航跡處理和數(shù)據(jù)交互三個(gè)部分。
點(diǎn)跡凝聚完成對(duì)雷達(dá)信號(hào)處理機(jī)送來(lái)的原始一次點(diǎn)跡進(jìn)行存儲(chǔ),對(duì)符合凝聚條件的原始一次點(diǎn)跡按照采用線性加權(quán)求重心的方法進(jìn)行凝聚。
航跡處理功能模塊是數(shù)據(jù)處理器的核心,它將凝聚點(diǎn)跡經(jīng)過(guò)一系列處理,形成航跡,同時(shí)剔除雜波干擾。
主要包含以下子功能模塊:雜波剔除功能、航跡建立功能、航跡批號(hào)管理功能、自動(dòng)威脅判斷功能、航跡質(zhì)量管理功能、航跡濾波功能、敵我識(shí)別功能、ARM 報(bào)警功能構(gòu)成。各個(gè)功能子模塊功能獨(dú)立,在時(shí)間上是順序執(zhí)行。
數(shù)據(jù)交互功能模塊主要是實(shí)現(xiàn)數(shù)據(jù)處理器同信號(hào)處理器、雷達(dá)控制計(jì)算機(jī)、綜合顯示計(jì)算機(jī)等外部設(shè)備之間的信息交互。主要包括兩類:數(shù)據(jù)信息和指令信息。
數(shù)據(jù)處理軟件功能劃分如圖1所示。
圖1 數(shù)據(jù)處理軟件功能劃分圖
2.3.1 軟件的活動(dòng)圖分析
軟件活動(dòng)圖用于表征軟件系統(tǒng)的工作處理過(guò)程。系統(tǒng)工作時(shí),雷達(dá)數(shù)據(jù)處理軟件實(shí)時(shí)接收空情信息并完成空情信息分類存儲(chǔ);通過(guò)坐標(biāo)變換,將目標(biāo)信息轉(zhuǎn)到數(shù)據(jù)處理系統(tǒng)要求的坐標(biāo)系下,完成點(diǎn)跡預(yù)處理;對(duì)符合凝聚條件的原始一次點(diǎn)跡進(jìn)行合并處理,提高點(diǎn)跡精度,生成凝聚點(diǎn)跡,并作為航跡處理輸入;判定每個(gè)點(diǎn)跡是屬于新發(fā)現(xiàn)目標(biāo)的點(diǎn)跡,還是屬于已經(jīng)發(fā)現(xiàn)并建立航跡的目標(biāo)點(diǎn)跡,對(duì)于新發(fā)現(xiàn)的目標(biāo),及時(shí)建立目標(biāo)航跡,并通過(guò)批號(hào)管理完成航跡批號(hào)的有效分配;對(duì)于用于航跡更新的點(diǎn)跡,建立航跡和點(diǎn)跡的配對(duì)矩陣,完成航跡點(diǎn)跡相關(guān)和航跡濾波更新;依據(jù)目標(biāo)運(yùn)動(dòng)要素和詢問(wèn)結(jié)果,完成目標(biāo)的威脅評(píng)估和目標(biāo)屬性識(shí)別;處理更新后的航跡數(shù)據(jù)一方面實(shí)時(shí)上報(bào),一方面用于航跡數(shù)據(jù)庫(kù)更新,為下次跟蹤維持服務(wù);在航跡處理過(guò)程中,通過(guò)對(duì)航跡質(zhì)量不斷更新,完成航跡的確認(rèn)和撤銷過(guò)程。典型雷達(dá)數(shù)據(jù)處理軟件活動(dòng)圖如圖2所示。
2.3.2 軟件的用例圖分析
圖3 給出了數(shù)據(jù)處理軟件用例圖,表1 給出了數(shù)據(jù)處理軟件核心用例的功能說(shuō)明。進(jìn)一步對(duì)作為數(shù)據(jù)處理器核心功能的航跡處理進(jìn)行更細(xì)致的用例劃分,并給出各個(gè)用例的功能說(shuō)明,如表1所示,航跡處理圖例見(jiàn)圖4。
圖2 數(shù)據(jù)處理系統(tǒng)活動(dòng)圖
圖3 數(shù)據(jù)處理軟件用例圖
表1 數(shù)據(jù)處理軟件用例功能說(shuō)明
表2 航跡處理用例功能說(shuō)明
圖4 航跡處理用例圖
雷達(dá)數(shù)據(jù)處理軟件的過(guò)程和原理大致是相同的,依次完成坐標(biāo)轉(zhuǎn)換、點(diǎn)跡凝聚、航跡建立、航跡批號(hào)管理、航跡相關(guān)、航跡更新、威脅估計(jì)、航跡質(zhì)量管理等處理;但是,由于各個(gè)型號(hào)的雷達(dá)數(shù)據(jù)處理系統(tǒng)采用的數(shù)據(jù)協(xié)議,硬件接口等存在差異。因此,在軟件層面上既有不同也有可以共享的軟件結(jié)構(gòu)和模塊,這使得數(shù)據(jù)處理系統(tǒng)的軟件構(gòu)件復(fù)用成為可能。2.4.1 點(diǎn)跡凝集采用線性加權(quán)求重心的方法將滿足凝聚條件的原始一次點(diǎn)跡與凝聚點(diǎn)跡線性表中的已有點(diǎn)跡進(jìn)行凝集。因此,對(duì)于任何型號(hào)的雷達(dá)數(shù)據(jù)處理系統(tǒng),根據(jù)其凝集條件的不同來(lái)實(shí)現(xiàn)該模塊的復(fù)用。
2.4.2 對(duì)于航跡處理模塊中的雜波剔除包括對(duì)雜波圖和屏蔽區(qū)的處理,對(duì)滿足相關(guān)條件的一次點(diǎn)跡應(yīng)作為雜波進(jìn)行剔除。因此,可以設(shè)置不同的相關(guān)條件來(lái)實(shí)現(xiàn)雜波剔除模塊的復(fù)用。
2.4.3 在航跡建立模塊中,當(dāng)自由點(diǎn)跡與剩余點(diǎn)跡符合建航規(guī)則時(shí)應(yīng)能自動(dòng)建立航跡,只是在初始建航時(shí),不同型號(hào)的雷達(dá)對(duì)目標(biāo)速度的大小與批號(hào)容量大小有所不同。因此,可以通過(guò)設(shè)計(jì)目標(biāo)速度與批號(hào)容量來(lái)實(shí)現(xiàn)該模塊的復(fù)用。
2.4.4 在航跡管理中分為航跡批號(hào)管理和航跡質(zhì)量管理。對(duì)于不同型號(hào)的雷達(dá),其批號(hào)容量不同,因此,根據(jù)批號(hào)容量的設(shè)置來(lái)實(shí)現(xiàn)航跡批號(hào)管理模塊的復(fù)用;航跡質(zhì)量管理采用記分法,航跡的初始質(zhì)量為3,最大為9,小于1 時(shí)航跡自動(dòng)撤銷,通過(guò)關(guān)聯(lián)波門(mén)類型,更新航跡質(zhì)量的大小,動(dòng)態(tài)的實(shí)現(xiàn)航跡的確認(rèn)與撤銷。因此,對(duì)于航跡批號(hào)管理模塊和航跡質(zhì)量管理模塊均可以完全復(fù)用。
2.4.5 航跡濾波模塊根據(jù)航跡歷史數(shù)據(jù)和更新點(diǎn)跡,通過(guò)濾波處理,實(shí)現(xiàn)航跡數(shù)據(jù)更新??赏ㄟ^(guò)調(diào)整濾波器增益系數(shù)來(lái)實(shí)現(xiàn)航跡濾波模塊的復(fù)用。
2.4.6 在自動(dòng)威脅判斷模塊中,數(shù)據(jù)處理軟件根據(jù)目標(biāo)飛臨時(shí)間和距離等因素給出目標(biāo)的威脅等級(jí),通過(guò)建立統(tǒng)一的威脅評(píng)估表,實(shí)現(xiàn)自動(dòng)威脅判斷模塊的復(fù)用。
2.4.7 敵我識(shí)別是根據(jù)詢問(wèn)結(jié)果進(jìn)行敵我屬性的判斷。根據(jù)各個(gè)型號(hào)雷達(dá)詢問(wèn)機(jī)的工作模式對(duì)敵我識(shí)別模塊進(jìn)行復(fù)用。
2.4.8 在ARM 報(bào)警模塊中根據(jù)新建立的航跡的速度、運(yùn)動(dòng)狀態(tài)等特性是否滿足ARM 特性,由于判斷標(biāo)準(zhǔn)唯一,故該模塊可完全復(fù)用。
2.4.9 數(shù)據(jù)交互模塊實(shí)現(xiàn)與信號(hào)處理機(jī)、雷達(dá)控制機(jī)、綜合顯示機(jī)之間的數(shù)據(jù)通信。由于通信協(xié)議不同,因此該模塊不能復(fù)用。
根據(jù)以上各功能模塊的復(fù)用分析,利用條件宏[6]控制模塊復(fù)用條件,實(shí)現(xiàn)對(duì)各個(gè)模塊的復(fù)用。
本次設(shè)計(jì)利用創(chuàng)建duplicate.h 文件(頭文件形式)實(shí)現(xiàn)對(duì)模塊的復(fù)用,通過(guò)對(duì)該文件的個(gè)性化配置,完成各模塊復(fù)用條件的加載、刪除和參數(shù)配置,并通過(guò)和應(yīng)用工程進(jìn)行重新編譯完成數(shù)據(jù)處理可執(zhí)行程序生成。具體實(shí)現(xiàn)如下:
a.根據(jù)系統(tǒng)實(shí)際需求,設(shè)置條件宏,利用軟件模塊化配置軟件,完成模塊的靜態(tài)加載和參數(shù)配置。
例如配置航跡建立模塊,本軟件在設(shè)計(jì)時(shí)創(chuàng)建目標(biāo)速度與批號(hào)容量的條件宏,完成對(duì)不同型號(hào)雷達(dá)數(shù)據(jù)處理軟件航跡建立模塊的控制。duplicate.h包含如下代碼:
…………
//航跡建立模塊
#define H_CREATE_NEW_HJ
#ifdefH_CREATE_NEW_HJ
#define H_TARGET_SPEED_LIM_DOWN 30 //目標(biāo)速度下限
#define H_TARGET_ SPEED_LIM_UP 700 //目標(biāo)速度上限
#define H_TARGET_CAPACITY 250 //目標(biāo)容量
#endif
………
上述代碼包含了功能模塊的靜態(tài)加載項(xiàng)和參數(shù)配置項(xiàng),若靜態(tài)加載項(xiàng)H_CREATE_NEW_HJ 沒(méi)有定義,則后續(xù)參數(shù)配置項(xiàng)不參與軟件編譯。對(duì)于其它軟件功能模塊的加載和參數(shù)配置與此相同,就不再贅述。
b.在DPU 的應(yīng)用工程中加載duplicate.h,重新進(jìn)行編譯,完成數(shù)據(jù)處理軟件可執(zhí)行程序的生成;
c.若想在已有配置文件基礎(chǔ)上進(jìn)行局部修改,通過(guò)打開(kāi)已有配置文件,重新編輯保存后,完成配置更新并重新編譯。
利用上述設(shè)計(jì)方法在實(shí)驗(yàn)室進(jìn)行動(dòng)態(tài)仿真,圖5 為該雷達(dá)數(shù)據(jù)處理軟件航跡跟蹤處理效果。仿真結(jié)果表明,該雷達(dá)數(shù)據(jù)處理軟件各個(gè)模塊功能正確,對(duì)交叉航跡、轉(zhuǎn)彎?rùn)C(jī)動(dòng)航跡等均能有效跟蹤,滿足雷達(dá)數(shù)據(jù)處理對(duì)功能和性能的指標(biāo)要求。
圖5 基于軟件復(fù)用技術(shù)的航跡跟蹤效果圖
在雷達(dá)數(shù)據(jù)處理軟件開(kāi)發(fā)的過(guò)程中,通過(guò)模塊化的復(fù)用分析,對(duì)數(shù)據(jù)處理軟件的各個(gè)模塊進(jìn)行抽象,有效的分離差異,實(shí)現(xiàn)了大部分模塊的復(fù)用,從而提高了軟件開(kāi)發(fā)的效率,縮短了軟件開(kāi)發(fā)的周期,節(jié)約成本、減少勞動(dòng)力,具有較高的工程價(jià)值與經(jīng)濟(jì)價(jià)值。
[1]史浩輝,何煒.基于構(gòu)件的指控軟件復(fù)用[J].計(jì)算機(jī)技術(shù)與發(fā)展.2011,(2):159-165.
[2]徐正權(quán).軟件復(fù)用方法與技術(shù)[M].華中理工大學(xué)出版社,1998.8.
[3]楊芙清,梅宏,李克勤.軟件復(fù)用與軟件構(gòu)件技術(shù)[J].電子學(xué)報(bào),1999.27(2):68-75.
[4]陳升來(lái).軟件復(fù)用技術(shù)及在雷達(dá)標(biāo)校軟件中的應(yīng)用[D].中國(guó)科學(xué)院研究生院.2003.
[5]羅利強(qiáng).張艷艷.高恒.雷達(dá)數(shù)據(jù)處理軟件模塊化研究[J].火控雷達(dá)技術(shù),2013.42(2):38-41.
[6]譚浩強(qiáng).C 程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2008.