曾 燕,饒 潔,張 江
(南京電子技術(shù)研究所, 南京 210039)
?
·軟件技術(shù)·
雷達(dá)情報(bào)分發(fā)軟件復(fù)用技術(shù)應(yīng)用研究
曾燕,饒潔,張江
(南京電子技術(shù)研究所,南京 210039)
采用軟件復(fù)用技術(shù),大大提高軟件開發(fā)效率和質(zhì)量,降低軟件開發(fā)成本, 具有較高的工程價(jià)值與經(jīng)濟(jì)價(jià)值。文中介紹軟件復(fù)用的基本概念,軍用軟件研制單位開展軟件工程化及軟件復(fù)用情況;以雷達(dá)情報(bào)分發(fā)軟件為例,分析了軟件復(fù)用技術(shù)在軟件需求分析、軟件設(shè)計(jì)以及軟件編碼階段的應(yīng)用方法與設(shè)計(jì)思路;提出了插件化模型設(shè)計(jì)和自適應(yīng)通信環(huán)境框架設(shè)計(jì)相結(jié)合的方法,便于又好又快地實(shí)現(xiàn)軟件功能。
軟件工程;軟件復(fù)用;自適應(yīng)通信環(huán)境
隨著計(jì)算機(jī)技術(shù)與軍事指揮技術(shù)的快速發(fā)展,軍事指揮系統(tǒng)更加信息化、智能化、一體化,更新速度更快。傳統(tǒng)的軟件開發(fā)方法由于普遍存在重復(fù)勞動(dòng)、開發(fā)周期長、經(jīng)費(fèi)浪費(fèi)等問題,已經(jīng)不適應(yīng)現(xiàn)階段的軍事指揮系統(tǒng)研制。軟件復(fù)用作為軟件工程中的一個(gè)重要領(lǐng)域,已成為解決上述問題的主要途徑。據(jù)統(tǒng)計(jì),軟件系統(tǒng)的開發(fā)中若復(fù)用程度達(dá)到50%,則其生產(chǎn)率可提高近40%,開發(fā)成本可降低約40%,軟件出錯(cuò)率也可降低近50%[1]。
軟件復(fù)用是在軟件開發(fā)中避免重復(fù)勞動(dòng)的解決方案, 其出發(fā)點(diǎn)是應(yīng)用系統(tǒng)的開發(fā)不再采用一切從零開始的模式,而是以已有的工作為基礎(chǔ), 充分利用過去應(yīng)用系統(tǒng)開發(fā)中積累的知識和經(jīng)驗(yàn),將開發(fā)的重點(diǎn)集中于應(yīng)用的特有構(gòu)成成分[2]。早期的軟件復(fù)用主要是代碼級復(fù)用,后來擴(kuò)大到包括領(lǐng)域知識、開發(fā)經(jīng)驗(yàn)、設(shè)計(jì)決定、體系結(jié)構(gòu)、需求分析、設(shè)計(jì)、代碼和文檔等一切有關(guān)方面。
現(xiàn)代軍事指揮系統(tǒng)中雷達(dá)情報(bào)分發(fā)軟件主要實(shí)現(xiàn)雷達(dá)報(bào)文與指揮系統(tǒng)內(nèi)部數(shù)據(jù)之間的相互轉(zhuǎn)換功能以及將雷達(dá)情報(bào)按需分發(fā)的功能。由于雷達(dá)情報(bào)分發(fā)軟件功能相對單一,雷達(dá)報(bào)文普遍遵循相應(yīng)標(biāo)準(zhǔn)。因此,復(fù)用雷達(dá)情報(bào)分發(fā)軟件可以減少重復(fù)勞動(dòng),縮短開發(fā)周期,保證軟件質(zhì)量。
本文首先介紹軍用軟件復(fù)用情況,然后以雷達(dá)情報(bào)處理軟件為例介紹軟件復(fù)用技術(shù)在軟件開發(fā)過程的應(yīng)用。
1.1軍用軟件研制能力成熟度模型
我國在2009年相繼出臺(tái)了《軍用軟件研制能力成熟度模型》和《軍用軟件開發(fā)通用要求》兩個(gè)標(biāo)準(zhǔn),根據(jù)《軍用軟件開發(fā)通用要求》,將軍用軟件生存周期劃分為系統(tǒng)需求分析、系統(tǒng)設(shè)計(jì)、軟件需求分析等13個(gè)過程,具體內(nèi)容見圖1?!盾娪密浖兄颇芰Τ墒於饶P汀芬?guī)定了軟件研制和維護(hù)活動(dòng)中的主要軟件管理過程和工程過程的實(shí)踐,將成熟度分為初始級、已管理級、已定義級、已定量管理級、優(yōu)化級五個(gè)等級,并定義了配置管理、測量與分析、項(xiàng)目監(jiān)控、項(xiàng)目策劃、過程和產(chǎn)品質(zhì)量保證、需求管理、供方協(xié)議管理、組織創(chuàng)新和部署等22個(gè)過程域,對每個(gè)過程域描述了專有實(shí)踐和公有實(shí)踐。
圖1 軍用軟件生存周期圖
軟件復(fù)用技術(shù)是指重復(fù)使用“為了復(fù)用目的而設(shè)計(jì)的軟件”的過程[3]。軍用軟件研制單位依據(jù)《軍用軟件開發(fā)通用要求》和《軍用軟件研制能力成熟度模型》,結(jié)合本單位軟件研制工作的特點(diǎn)制定出適合本單位軟件研制流程的軟件工程化體系文件,包括各種過程規(guī)定、規(guī)程、指南和規(guī)范;建立相應(yīng)的軟件資產(chǎn)庫,內(nèi)容包括軟件研制過程中需遵循的標(biāo)準(zhǔn),按照標(biāo)準(zhǔn)擬制的各類文檔模板,用于軟件復(fù)用的構(gòu)件庫、軟件框架等。每個(gè)軟件研制項(xiàng)目按照規(guī)定的過程域,使用相關(guān)的模板和構(gòu)件庫,軟件框架等進(jìn)行軟件開發(fā)活動(dòng),像流水線一樣生產(chǎn)出軟件產(chǎn)品。軍用軟件研制單位的軟件開發(fā)過程本身就是結(jié)合項(xiàng)目特點(diǎn)不斷復(fù)用開發(fā)模型和成熟度模型的過程,且在過程中設(shè)計(jì)了可復(fù)用的文檔模板、構(gòu)件庫、軟件框架等,軟件復(fù)用技術(shù)得到廣泛應(yīng)用。
1.2軍用軟件研制單位復(fù)用方法介紹
本單位在實(shí)施軟件工程化過程中,針對不同的軟件研制階段制定出了不同的復(fù)用方法,對軟件復(fù)用的形式以及軟件復(fù)用的過程進(jìn)行了規(guī)定。
1) 軟件復(fù)用形式
首先介紹兩個(gè)基本名詞:
計(jì)算機(jī)軟件配置項(xiàng)(CSCI):指滿足最終使用要求并由需方指定進(jìn)行單獨(dú)配置管理的軟件結(jié)合。
軟件單元(CSU):指CSCI設(shè)計(jì)中的一個(gè)元素,例如CSCI的一個(gè)主要構(gòu)成部分,這種構(gòu)成部分的一個(gè)部件、一個(gè)類、對象、模塊、函數(shù)、子程序或者數(shù)據(jù)庫。
在實(shí)施軟件復(fù)用的過程中,可能的復(fù)用形式分為:
(1)CSCI原樣復(fù)用:即不加修改就可以使用的CSCI。
(2)CSU原樣復(fù)用:即復(fù)用不加修改就可以使用的軟件單元。
(3)CSU修改復(fù)用:即無需修改CSCI軟件體系結(jié)構(gòu),只需要對原有軟件單元的流程、軟件組成進(jìn)行修改。
(4)CSU參數(shù)修改復(fù)用:即無需修改CSCI軟件體系結(jié)構(gòu)、軟件單元的流程和組成,只需要對軟件單元中的處理參數(shù)和配置文件等進(jìn)行修改。
2)軟件復(fù)用過程
從系統(tǒng)分析和設(shè)計(jì)、軟件需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測試五個(gè)階段對“CSU修改復(fù)用”進(jìn)行介紹,如表1所示。
表1 CSU修改復(fù)用
通過對應(yīng)用在不同系統(tǒng)中雷達(dá)情報(bào)分發(fā)軟件功能進(jìn)行研究,將共性功能抽取出來加以抽象,然后在不同系統(tǒng)中進(jìn)行實(shí)例化,可以實(shí)現(xiàn)不同應(yīng)用場景下的雷達(dá)情報(bào)分發(fā)軟件的功能實(shí)現(xiàn),從而減少重復(fù)勞動(dòng),縮短開發(fā)周期,全面提升軟件開發(fā)質(zhì)量。下面從軟件工程中的需求分析階段、軟件設(shè)計(jì)階段、軟件編碼階段詳細(xì)介紹軟件復(fù)用技術(shù)的應(yīng)用。
2.1需求分析階段復(fù)用分析
需求分析階段通常從兩方面考慮軟件復(fù)用:(1)在分析需求的同時(shí)查找軟件資產(chǎn)庫中已經(jīng)研制的類似系統(tǒng)中是否已經(jīng)存在可以直接復(fù)用的通用模塊;(2)分析準(zhǔn)備研制的系統(tǒng)中哪些功能適合設(shè)計(jì)成通用模塊,將其抽象化后加入到軟件資產(chǎn)庫中,便于今后在類似的系統(tǒng)中復(fù)用。下面以雷達(dá)情報(bào)分發(fā)軟件為例分析。
現(xiàn)有的雷達(dá)情報(bào)分發(fā)軟件主要完成協(xié)議轉(zhuǎn)換器、情報(bào)分發(fā)以及通信鏈路管理三個(gè)功能。協(xié)議轉(zhuǎn)換器實(shí)現(xiàn)接入到指揮控制系統(tǒng)中的不同雷達(dá)情報(bào)格式與指揮控制系統(tǒng)內(nèi)部格式之間的相互轉(zhuǎn)換。情報(bào)分發(fā)功能是指情報(bào)用戶定制情報(bào)分發(fā)策略,雷達(dá)情報(bào)分發(fā)軟件根據(jù)情報(bào)分發(fā)策略將用戶需要的情報(bào)實(shí)時(shí)地推送到指定用戶。分發(fā)策略可以由用戶定制情報(bào)類型、情報(bào)格式、情報(bào)分發(fā)頻度等條件。通信鏈路管理功能指對情報(bào)用戶、發(fā)送鏈路、接收鏈路等進(jìn)行增加、刪除、修改等管理。雷達(dá)情報(bào)分發(fā)軟件功能組成如圖2所示。
圖2 雷達(dá)情報(bào)分發(fā)軟件功能組成圖
2.1.1協(xié)議轉(zhuǎn)換器復(fù)用
現(xiàn)有的指揮控制系統(tǒng)接入多種不同格式的雷達(dá)情報(bào),雖然它們采用的協(xié)議各不相同,但是表達(dá)的信息基本相同,如:航跡格式基本上包括產(chǎn)生航跡的雷達(dá)站號、航跡號、航跡位置、航跡產(chǎn)生的時(shí)間等信息。指揮控制系統(tǒng)內(nèi)部格式定義將各種情報(bào)格式描述的內(nèi)容用統(tǒng)一的格式來表示,用于在系統(tǒng)內(nèi)部各席位之間使用,將翻譯工作交給協(xié)議轉(zhuǎn)換器來完成,這樣做保持了指揮控制系統(tǒng)內(nèi)部的穩(wěn)定性,減少了指揮控制系統(tǒng)對情報(bào)格式的耦合性。當(dāng)有新的雷達(dá)情報(bào)格式接入到指揮控制系統(tǒng)時(shí),只需要增加雷達(dá)情報(bào)分發(fā)軟件的協(xié)議轉(zhuǎn)換器,將新的格式轉(zhuǎn)換成指揮控制系統(tǒng)內(nèi)部的格式轉(zhuǎn)換,這樣指揮系統(tǒng)內(nèi)部各席位之間的接口無需變動(dòng)就可以正常工作,大大降低了軟件代碼更改量。
由于雷達(dá)情報(bào)采用的協(xié)議一旦確定就不會(huì)改變,因此該格式的協(xié)議轉(zhuǎn)換器一旦抽象出共性的功能,代碼實(shí)現(xiàn)后可以直接復(fù)用。
2.1.2通信鏈路管理復(fù)用
現(xiàn)有的指揮控制系統(tǒng)中常用的通信方式為串口和網(wǎng)絡(luò)。串口通信常見的工作流程如下:先設(shè)置好串口參數(shù),再開啟串口檢測工作線程,串口檢測工作線程監(jiān)測到串口接收到的數(shù)據(jù)、流控制時(shí)間或其他串口事件后,就以消息方式通知主程序,激發(fā)消息處理函數(shù)來進(jìn)行數(shù)據(jù)處理,這是對接收數(shù)據(jù)而言的;發(fā)送數(shù)據(jù)可直接向串口發(fā)送。網(wǎng)絡(luò)通信常用的協(xié)議為TCP/IP協(xié)議,它提供了流式套接字、數(shù)據(jù)包套接字、原始套接字三種套接字。每種套接字通信都遵循固有的模式。目前對于串口通信和網(wǎng)絡(luò)通信,有大量封裝的類和組件可以直接使用,我們需要做的是根據(jù)編程語言、操作系統(tǒng)、網(wǎng)絡(luò)通信方式等應(yīng)用場景選擇合適的通信類代碼。選擇合適的源碼后對其進(jìn)行測試,符合要求后納入軟件資產(chǎn)庫進(jìn)行管理,需要時(shí)從資產(chǎn)庫直接取出使用。
2.2軟件設(shè)計(jì)階段復(fù)用分析
為便于雷達(dá)情報(bào)分發(fā)軟件在其他系統(tǒng)中復(fù)用,在軟件設(shè)計(jì)階段采用以下兩個(gè)技術(shù)方案。
1)基于插件化模型設(shè)計(jì)
插件是一組基礎(chǔ)功能的集合并通過接口向外部提供服務(wù),所以復(fù)用粒度更大,編譯生成的動(dòng)態(tài)鏈接庫可直接加載,移植更方便。同時(shí),各個(gè)插件之間沒有依賴關(guān)系,符合軟件工程中“高內(nèi)聚低耦合”的思想。在雷達(dá)情報(bào)分發(fā)軟件中抽象出格式轉(zhuǎn)換插件、通信接口插件和分發(fā)管理插件。
一般的插件設(shè)計(jì)主框架不包含具體的功能實(shí)現(xiàn),但是雷達(dá)情報(bào)分發(fā)軟件將通用的工作流程設(shè)計(jì)成一個(gè)應(yīng)用框架,對于不同的應(yīng)用需要改變的部分設(shè)計(jì)成“基本配置項(xiàng)”和“擴(kuò)展配置項(xiàng)”插件,根據(jù)系統(tǒng)的實(shí)際需求,在一個(gè)系統(tǒng)軟件界面環(huán)境下有選擇性的進(jìn)行配置。這種設(shè)計(jì)使得軟件能實(shí)現(xiàn)最大程度的復(fù)用。
在復(fù)用設(shè)計(jì)過程中,插件標(biāo)準(zhǔn)化接口發(fā)揮了至關(guān)重要的角色,一個(gè)具備高度的內(nèi)聚性和擴(kuò)展性的構(gòu)件接口能使軟件的伸縮性、維護(hù)性得到意想不到的提高。接口設(shè)計(jì)正確才能保證可配置的不同插件以同樣的接口“插入”到主框架,主框架才可正確地運(yùn)行。根據(jù)對雷達(dá)情報(bào)分發(fā)軟件工作流程進(jìn)行分析,設(shè)計(jì)雷達(dá)情報(bào)分發(fā)軟件主框架處理流程,如圖3所示。其中,數(shù)據(jù)接收、數(shù)據(jù)分發(fā)功能采用通信接口插件,報(bào)文解析功能采用格式轉(zhuǎn)換插件,分發(fā)規(guī)則判斷功能采用分發(fā)規(guī)則插件,命令處理功能采用命令處理插件。
2)采用自適應(yīng)通信環(huán)境(ACE)框架
ACE是可以自由使用、開放源碼的面向?qū)ο罂蚣?,ACE體系結(jié)構(gòu)包括三個(gè)基本層次:操作系統(tǒng)適配層、C++包裝層、框架組件層[4]。操作系統(tǒng)適配層將ACE中的其他層與OS API相關(guān)聯(lián)的平臺(tái)專有特性屏蔽開來,由于ACE操作適配層所提供的抽象,極大地增強(qiáng)了ACE的可移植性和可維護(hù)性。C++包裝層通過提供類型安全的C++接口簡化通信應(yīng)用程序的開發(fā),各種應(yīng)用可以有選擇地繼承、聚合或?qū)嵗渲械慕M件來使用這些包裝。ACE提供了一組豐富的可復(fù)用C++包裝外觀和框架組件,可跨越多種平臺(tái)完成通用的通信軟件任務(wù)。
圖3 雷達(dá)情報(bào)分發(fā)軟件主框架處理流程
由于雷達(dá)情報(bào)分發(fā)軟件具有跨平臺(tái)運(yùn)行需求,同時(shí)需要處理大量的網(wǎng)絡(luò)數(shù)據(jù)收發(fā),選用ACE框架作為通信中間件可方便地在不同操作系統(tǒng)間移植,利用其豐富的通信組件可以省卻底層操作系統(tǒng)API的繁瑣編程,快速構(gòu)建可復(fù)用的網(wǎng)絡(luò)程序。
2.3編碼階段復(fù)用分析
在編碼階段,代碼復(fù)用主要考慮將公用部分模塊化、抽象化,使代碼可以不改動(dòng)或少改動(dòng)就可以用在其他系統(tǒng)中。下面以報(bào)文解析器插件為例說明。
報(bào)文解析器插件主要功能有兩個(gè):將報(bào)文格式轉(zhuǎn)換成內(nèi)部結(jié)構(gòu);將內(nèi)部結(jié)構(gòu)轉(zhuǎn)換成報(bào)文格式。報(bào)文和內(nèi)部結(jié)構(gòu)都可以看作是按照一定協(xié)議定義的一定長度的字符數(shù)組。因此,將兩個(gè)接口定義如下:
//結(jié)構(gòu)轉(zhuǎn)換成報(bào)文接口聲明
int ConvertStructToReport(const byte* pstruct, int ReportType, unsigned char* preport);
該定義中,pstruct為要轉(zhuǎn)換的結(jié)構(gòu),ReportType為轉(zhuǎn)換后的報(bào)文格式,preport為轉(zhuǎn)換后的報(bào)文,返回值>0為轉(zhuǎn)換成功后報(bào)文的長度,返回值<0為轉(zhuǎn)換不成功的錯(cuò)誤代碼。
//報(bào)文轉(zhuǎn)換成結(jié)構(gòu)接口聲明
int ConvertReportToStruct(const byte* preport,const int& ReportLength, int ReportType,unsigned char* pstruct);
參數(shù)含義:
該定義中,preport為待轉(zhuǎn)換的報(bào)文,ReportLength為待轉(zhuǎn)換的報(bào)文長度,ReportType為待轉(zhuǎn)換報(bào)文的格式,pstruct為轉(zhuǎn)換后的結(jié)構(gòu),返回值>0為轉(zhuǎn)換成功后結(jié)構(gòu)的長度,返回值<0為轉(zhuǎn)換不成功的錯(cuò)誤代碼。
通過以上定義的接口,將報(bào)文解析的共性抽取出來,隱藏了各種報(bào)文解析的處理細(xì)節(jié),對外的接口完全一致,這樣便于將解析器組裝到主框架中。
在雷達(dá)情報(bào)匯集分發(fā)軟件開發(fā)的軟件需求分析、軟件設(shè)計(jì)、軟件編碼等各個(gè)階段,通過復(fù)用分析,對各個(gè)模塊進(jìn)行抽象,有效分離差異,實(shí)現(xiàn)通用模塊,可大大提高軟件開發(fā)效率,縮短軟件開發(fā)周期,降低軟件開發(fā)成本,提高軟件質(zhì)量,具有較高的工程價(jià)值與經(jīng)濟(jì)價(jià)值,為軍用軟件研制單位又好又快地開發(fā)軟件提供了理想的解決途徑。
[1]GU J F.Reuse nonstop car of software decompression. [EB/OL] http://51cmm.csai.cn/media/NO000026.htm.[2005-06-28].
[2]楊芙清, 梅宏, 李克勤, 等. 軟件復(fù)用與軟件構(gòu)件技術(shù)[J]. 電子學(xué)報(bào), 1999, 27(2): 68-75.
YANG Fuqing, MEI Hong, LI Keqin, et al. Software reuse and software component technology[J]. Acta Electronica Sinica, 1999, 27(2): 68-75.
[3]徐正權(quán). 軟件復(fù)用方法與技術(shù)[M]. 武漢: 華中理工大學(xué)出版社, 1998.
XU Zhengquan. Method and technology of software reuse[M]. Wuhan: Central China University of Science and Technology Press, 1998.
[4]王繼剛, 顧國昌, 盧東昕, 等. 構(gòu)架與模式在通信系統(tǒng)軟件中的應(yīng)用研究[J]. 計(jì)算機(jī)應(yīng)用, 2003, 23(11): 43-45.
WANG Jigang, GU Guochang, LU Dongxin, et al. Research on the application of framework and patterns in software of communication system[J]. Computer Applications, 2003, 23(11): 43-45.
曾燕女,1974年生,碩士,高級工程師。研究方向?yàn)閿?shù)據(jù)通信和軟件工程。
A Study on Software Reuse Technology of Radar Information Distribution
ZENG Yan,RAO Jie,ZHANG Jiang
(Nanjing Research Institute of Electronics Technology,Nanjing 210039, China)
Software reuse technology can greatly improve software development efficiency and software quality, and reduce software development costs. It has more engineering and economic value. Software reuse concept is introduced in the paper as well as the software engineering and software reuse situation in military software manufacturer. Taking radar information distribution software as an example, application methods and design ideas of software reuse technology in the periods of software requirement analysis, software design and software encoding are analyzed. To develop software well and quickly, a plug-in combined adaptive communication environment framework was proposed.
software engineering; software reuse; adaptive communication environment
10.16592/ j.cnki.1004-7859.2016.09.016
曾燕Email:zengyan74@sina.com
2016-04-16
2016-06-18
TP3
A
1004-7859(2016)09-0075-04