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