張永鵬
(中國電子科技集團(tuán)公司第三十八研究所 合肥 230088)
隨著制導(dǎo)武器打擊精度的不斷提升,雷達(dá)導(dǎo)引頭作為提升制導(dǎo)打擊精度的重要組成部分,其作用越來越重要。雷達(dá)導(dǎo)引頭系統(tǒng)軟件設(shè)計則是整個導(dǎo)引頭研制過程中的重要環(huán)節(jié)。雷達(dá)導(dǎo)引頭的系統(tǒng)軟件主要包括導(dǎo)引頭數(shù)據(jù)通信、內(nèi)部自檢、時序控制、工作模式控制、參數(shù)計算、伺服控制等功能。當(dāng)前雷達(dá)導(dǎo)引頭軟件設(shè)計側(cè)重于采用自上而下“面向過程”的軟件設(shè)計方法[1-2]。
面向過程的主要設(shè)計思路包含:
1)以“模塊”為中心,根據(jù)軟件功能將軟件以樹狀結(jié)構(gòu)劃分為若干基本模塊,各模塊功能獨立、相互之間關(guān)系簡單;
2)采用“自上而下”、“逐步求精”的開發(fā)方法,明確各模塊之間的組裝和交互,各個模塊設(shè)計完成后,將各模塊組合在一起形成整個系統(tǒng);
3)模塊設(shè)計采用“高內(nèi)聚、低耦合”設(shè)計原則,每個模塊都是具備一個完整的功能,盡可能使得模塊之間相互獨立,不存在信息交互。
面向過程的軟件設(shè)計方法首先在解決問題時是以數(shù)據(jù)流和時間觸發(fā)進(jìn)行的,當(dāng)需求變動時,其程序結(jié)構(gòu)會產(chǎn)生較大變化;其次在計算類型上采用的是數(shù)據(jù)結(jié)構(gòu)進(jìn)行構(gòu)造,用算法表示事物的處理,但是在數(shù)據(jù)結(jié)構(gòu)和算法上的構(gòu)造和形式向分離,不具備對統(tǒng)一性,因而導(dǎo)致程序可繼承性差[3]。
當(dāng)前隨著雷達(dá)導(dǎo)引頭對復(fù)合多模、高性能的不斷發(fā)展,對雷達(dá)導(dǎo)引頭的功能、研制周期等都提出了新的需求。這些最終都體現(xiàn)在更高的軟件設(shè)計,即如何使得雷達(dá)導(dǎo)引頭軟件設(shè)計在實時性、多任務(wù)處理、硬件資源限制、軟件質(zhì)量及安全性、研制周期等都能適應(yīng)當(dāng)前的發(fā)展需求。因此,依舊采用傳統(tǒng)的軟件設(shè)計方法,已經(jīng)不足以滿足當(dāng)前的要求。
因此,針對雷達(dá)導(dǎo)引頭軟件的特點,通過采用面對對象的設(shè)計思想,提出基于UML對雷達(dá)導(dǎo)引頭進(jìn)行系統(tǒng)建模,對導(dǎo)引頭首先進(jìn)行系統(tǒng)分析,再對導(dǎo)引頭在軟件設(shè)計過程中進(jìn)行控制和管理,使系統(tǒng)軟件設(shè)計更加規(guī)范化、合理化,保障軟件設(shè)計的質(zhì)量和安全性。本文以某主動雷達(dá)導(dǎo)引頭系統(tǒng)軟件設(shè)計過程為例,利用了UML為導(dǎo)引頭系統(tǒng)進(jìn)行系統(tǒng)軟件設(shè)計建模。實際應(yīng)用情況表明該方法在雷達(dá)導(dǎo)引頭軟件設(shè)計過程中能夠促進(jìn)軟件設(shè)計的合理性和規(guī)范化,具有很好的應(yīng)用價值。
UML是采用面向?qū)ο蟮姆椒ㄟM(jìn)行分析和設(shè)計的一種標(biāo)準(zhǔn)語言表示,利用圖形化的語言建立能夠表達(dá)各類需求的軟件系統(tǒng)模型,貫穿整個軟件設(shè)計的生命周期,能夠有效的控制和管理軟件設(shè)計過程,提高軟件開發(fā)效率和軟件質(zhì)量[4-5]。
UML包括9種圖形可分為用例圖、行為圖、靜態(tài)圖、交互圖和實現(xiàn)圖等五類圖[4-5]。
1)用例圖主要是從用戶角度描述了系統(tǒng)各項功能,反映了角色與系統(tǒng)用例之間的交互關(guān)系;
2)行為圖展現(xiàn)了系統(tǒng)狀態(tài)間的轉(zhuǎn)換和對象間的相互關(guān)聯(lián),包括狀態(tài)圖和活動圖。狀態(tài)圖描述了類的對象全部可能的狀態(tài)和事件發(fā)生時狀態(tài)間的轉(zhuǎn)移條件;活動圖描述了對象間的流程控制,及系統(tǒng)內(nèi)活動之間的相互約束;
3)靜態(tài)圖展現(xiàn)了系統(tǒng)靜態(tài)設(shè)計視角下事物之間的關(guān)系視圖,包括類圖和對象圖。類圖描述了系統(tǒng)中類屬性、操作、接口等之間關(guān)聯(lián)、依賴、聚合等關(guān)系;對象圖是類圖的實例,描述了類在系統(tǒng)中具體使用的實例;
4)交互圖描述了系統(tǒng)對象之間的交互關(guān)系,包括時序圖和協(xié)作圖。時序圖描述了對象間的動態(tài)交互的順序關(guān)系,顯示出對象與對象之間的相關(guān)交互;協(xié)作圖類似于時序圖,主要描述了對象之間信息交互順序和連接關(guān)系;
5)實現(xiàn)圖則是展現(xiàn)了系統(tǒng)各個構(gòu)件之間的相互依賴關(guān)系以及系統(tǒng)運行時的節(jié)點和配置等,包括組件圖和部署圖。組件圖描述組件之間的動態(tài)關(guān)系;部署圖描述了系統(tǒng)的物理拓?fù)浣Y(jié)構(gòu)和在該結(jié)構(gòu)上的執(zhí)行軟件。
UML通過面向?qū)ο髨D的方式來描述系統(tǒng),具備系統(tǒng)從需求、分析、設(shè)計、實現(xiàn)、測試等各個階段的建模方法,對軟件設(shè)計有著很大的促進(jìn)作用。因此,本文以某主動雷達(dá)導(dǎo)引頭系統(tǒng)軟件研發(fā)過程進(jìn)行說明,具體分析UML在部分系統(tǒng)軟件設(shè)計過程中的應(yīng)用。
本文根據(jù)UML的圖類進(jìn)行主動雷達(dá)導(dǎo)引頭系統(tǒng)軟件設(shè)計建模分析。
用例圖從系統(tǒng)用戶頂層角度進(jìn)行系統(tǒng)規(guī)劃,獲取系統(tǒng)的所需功能要求。主動雷達(dá)導(dǎo)引頭系統(tǒng)軟件根據(jù)其設(shè)計要求,主要包括內(nèi)部自檢功能、伺服控制功能、成像識別功能和主動跟蹤功能等,各個功能的參與者均為主動雷達(dá)導(dǎo)引頭。如圖2為業(yè)務(wù)用例圖模型。
主動雷達(dá)導(dǎo)引頭中業(yè)務(wù)具體行為:導(dǎo)引頭需要進(jìn)行內(nèi)部系統(tǒng)軟硬件自檢,檢驗導(dǎo)引頭內(nèi)部是否存在相關(guān)組件故障;導(dǎo)引頭能夠根據(jù)實際需求計算伺服控制指向位置,并控制導(dǎo)引頭伺服正確指向預(yù)定位置;導(dǎo)引頭能夠完成對預(yù)定位置進(jìn)行主動成像,并完成圖像識別過程,獲取地面目標(biāo)位置等信息;導(dǎo)引頭能夠根據(jù)主動識別的地面目標(biāo)位置信息,完成主動脈沖跟蹤,實時輸出對應(yīng)的目標(biāo)位置、測距等信息。下面主要以主動跟蹤為例詳細(xì)描述導(dǎo)引頭系統(tǒng)軟件建模過程。
行為模型主要包括活動圖和狀態(tài)圖,下面分別通過活動圖和狀態(tài)圖進(jìn)行軟件建模描述。
1)活動圖建模
活動圖是對用戶例圖添加一定具體的操作條件或范圍等限定,主要描述邏輯的設(shè)計過程,是一種概念級的描述過程。主動跟蹤主要包括目標(biāo)檢測、數(shù)據(jù)處理、主動跟蹤等功能,具體活動圖如圖3所示,導(dǎo)引頭根據(jù)指令進(jìn)入目標(biāo)檢測流程,首先設(shè)置參數(shù),并控制伺服指向預(yù)定方向和對信號進(jìn)行脈壓等并行處理,即檢測出目標(biāo)信息;數(shù)據(jù)處理中點跡預(yù)處理、暫航及航跡處理等是以時間為順序的串行處理過程;主動跟蹤過程中也包括跟蹤狀態(tài)處理等串行,以及參數(shù)計算、測角和角速度計算、目標(biāo)信息輸出等并行處理過程。
2)狀態(tài)圖建模
狀態(tài)圖是通過對系統(tǒng)工作狀態(tài)和狀態(tài)變化條件進(jìn)行描述的。狀態(tài)圖可以詳細(xì)地了解系統(tǒng)在整個過程中運行規(guī)則和軌跡。圖4為主動跟蹤的狀態(tài)圖。
圖4詳細(xì)描述了主動跟蹤中未捕獲狀態(tài)、捕獲狀態(tài)、跟蹤狀態(tài)、記憶跟蹤狀態(tài)、丟失狀態(tài)和進(jìn)入盲區(qū)等工作狀態(tài)之間的轉(zhuǎn)換關(guān)系。導(dǎo)引頭通過外部指令進(jìn)入主動跟蹤模式,狀態(tài)進(jìn)入未捕獲狀態(tài),再到捕獲目標(biāo)進(jìn)入捕獲狀態(tài),以及后續(xù)進(jìn)入跟蹤狀態(tài)、記憶跟蹤狀態(tài)和丟失狀態(tài),再回到未捕獲狀態(tài)的主動跟蹤狀態(tài)切換過程。
類和對象是面向?qū)ο蠹夹g(shù)的基本元素,靜態(tài)模型則是通過類圖和對象圖來描述類、接口、對象等之間的關(guān)系。通過利用面向?qū)ο蟮脑O(shè)計思想中的對象、類的封裝性,來實現(xiàn)程序開發(fā)的組件化,使得程序具備“高內(nèi)聚、低耦合”特性,提高程序的可靠性和繼承性。
根據(jù)圖4的狀態(tài)圖,可得出需要完成主動跟蹤功能動作的類,如圖5所示,構(gòu)造了主動跟蹤處理類、FPGA數(shù)據(jù)總線通信類、時序參數(shù)控制類、伺服控制類、工作模式切換類以及串口通信類等,每個構(gòu)造的類都封裝有各自的變量和操作內(nèi)容,根據(jù)這些變量和操作,可以詳細(xì)得出主動跟蹤靜態(tài)動作設(shè)計。
在實際的系統(tǒng)中,對象之間都存在相互之間的信息交互,而不是孤立存在的。交互是一種行為,主要包括時序圖和協(xié)作圖。時序圖強(qiáng)調(diào)消息的時間順序,表示參與交互的多個對象之間發(fā)送消息、接收消息的序列,將這些消息沿垂直方向按時間順序從上到下放置。導(dǎo)引頭主動跟蹤的時序圖表明了在跟蹤過程中相關(guān)對象之間時序的關(guān)聯(lián)關(guān)系。圖6的時序圖描述了對象之間相互的消息傳遞時序,橫坐標(biāo)表示為對象,縱坐標(biāo)表示為時間。如,同對FPGA數(shù)據(jù)總線通信的端口配置串口通信和變量的讀取,串口通信接收指令進(jìn)行主動狀態(tài)切換,主動跟蹤處理通過對目標(biāo)數(shù)據(jù)的處理進(jìn)行伺服控制、時序設(shè)置以及進(jìn)行工作參數(shù)的上報等具體的操作,整個序列詳細(xì)的概括了整個主動跟蹤狀態(tài)變化之間類對象的相關(guān)消息傳遞過程。
軟件最終需要運行在用戶的環(huán)境中才能發(fā)揮作用。在完成導(dǎo)引頭系統(tǒng)軟件的體系結(jié)構(gòu)建模后,便進(jìn)入軟件的實現(xiàn)階段,通過組件圖和部署圖進(jìn)行實現(xiàn)。
組件是軟件系統(tǒng)的一個物理單元,作為一個或多個類的軟件實現(xiàn),可以包括源代碼、二進(jìn)制碼、可執(zhí)行碼以及動態(tài)鏈接庫等。
部署是一種特殊的依賴關(guān)系,一個部署表示一件實例被定位到一個部署目標(biāo)上。通過將應(yīng)用程序的各部分在物理結(jié)構(gòu)上進(jìn)行安裝和部署,需要從應(yīng)用程序本身和運行環(huán)境兩個方法的要求來分析。
綜上所述,本文主要利用UML對雷達(dá)導(dǎo)引頭系統(tǒng)軟件進(jìn)行建模研究,通過用例圖、行為圖、靜態(tài)圖、交互圖和實現(xiàn)圖五類UML圖形的設(shè)計和分析,將導(dǎo)引頭系統(tǒng)軟件設(shè)計通過可視化的圖形進(jìn)行表示,建立清晰、直觀的系統(tǒng)軟件設(shè)計模型,在實際開發(fā)中可以有效對導(dǎo)引頭系統(tǒng)軟件設(shè)計過程進(jìn)行控制和管理,降低了軟件設(shè)計的復(fù)雜性,保障了設(shè)計過程中軟件的可靠性、維護(hù)性,最終保障雷達(dá)導(dǎo)引頭研制周期和軟件質(zhì)量,對后續(xù)產(chǎn)品的開發(fā)都具有極大的借鑒作用。