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