鄭鈞耀, 王 磊
(電子科技大學 電子科學技術(shù)研究院,四川 成都 611731)
隨著信息技術(shù)的飛速發(fā)展及其在軍事領(lǐng)域的廣泛應用[1],雷達仿真系統(tǒng)日益復雜,仿真軟件開發(fā)周期越來越長。雷達仿真中各種功能模塊如:場景產(chǎn)生、資源調(diào)度、數(shù)據(jù)處理、檢測處理等,這些模塊構(gòu)成了復雜的雷達仿真系統(tǒng)。然而傳統(tǒng)雷達仿真需要對每種雷達功能具體分析設(shè)計,對控制參數(shù)進行大量的調(diào)節(jié)和試驗,仿真軟件開發(fā)將花費大量人力物力,系統(tǒng)的可靠性和重用性低、復雜度高、設(shè)計周期長。因此,如何提高雷達仿真軟件開發(fā)效率,降低開發(fā)成本,縮短開發(fā)周期,改善軟件質(zhì)量變得極為重要,對此引入了組件化雷達仿真技術(shù),以靜態(tài)鏈接庫技術(shù)實現(xiàn)了雷達仿真系統(tǒng),提高了雷達仿真軟件的開發(fā)效率,增強了系統(tǒng)的可靠性與擴展性。
對于比較復雜的雷達系統(tǒng),仿真軟件的設(shè)計需要突破傳統(tǒng)的設(shè)計思想,充分利用信息和軟件產(chǎn)業(yè)的最新進展,根據(jù)組件化技術(shù),設(shè)計了圖 1所示的雷達仿真系統(tǒng),整個軟件系統(tǒng)分為軟件框架和軟件組件,軟件框架為雷達仿真軟件的設(shè)計提供了總體結(jié)構(gòu),實現(xiàn)了各組件之間的通訊;軟件組件是各個具體的模塊,如:場景產(chǎn)生、資源調(diào)度、數(shù)據(jù)處理、檢測處理等,它們可以單獨設(shè)計和測試,而不用考慮系統(tǒng)整體的復雜性。軟件組件打包成靜態(tài)鏈接庫,在不同的雷達仿真軟件框架中調(diào)用,這樣即增加了軟件組件的可重用性,也減小了編程人員的工作量。圖 1為以靜態(tài)鏈接庫技術(shù)實現(xiàn)一種組件化的雷達仿真系統(tǒng),其中 LIB為相應組件的靜態(tài)鏈接庫。下面章節(jié)對涉及的組件化技術(shù)進行了詳細敘述。
圖1 雷達仿真系統(tǒng)與靜態(tài)鏈接庫組件
雷達仿真系統(tǒng)比較復雜,如果每種雷達都全新設(shè)計,將花費大量的人力物力,而且系統(tǒng)的可靠性和復用性降低,所以在雷達仿真軟件設(shè)計中需要引入軟件復用技術(shù)。這是一種由預先構(gòu)造好的、為復用目的而設(shè)計的組件來建立軟件系統(tǒng)的過程,基本思想非常簡單,即放棄那種原始的、一切從頭開始的軟件開發(fā)方式,在兩次或多次不同的軟件開發(fā)過程中重復使用相同或相近的軟件元素,這些可復用的軟件元素包括對象類、通用組件、軟件體系結(jié)構(gòu)、測試用例、設(shè)計文檔等,通常把這些可復用的元素稱作軟構(gòu)件,可重用的軟構(gòu)件越多,重用的粒度越大[2]。使用軟件復用技術(shù)可以減少軟件開發(fā)活動中大量的重復性的工作,提高軟件生產(chǎn)率,降低開發(fā)成本,縮短開發(fā)周期,同時由于軟構(gòu)件大都經(jīng)過嚴格的測試,在實際運行環(huán)境中得到的校驗,因此,重用軟構(gòu)件有助于改善軟件質(zhì)量,提高軟件的靈活性和標準化。
組件復用是最常見的軟件復用形式,一旦寫好一個組件,它就可以被無數(shù)的應用程序使用[3]。組件是指語義完整、語法正確、具有可用價值的單位軟件,它對一組類進行封裝,完成一個或多個功能,隱藏具體的實現(xiàn),只通過接口對外提供服務,能夠獨立工作或能同其他組件協(xié)同工作。目前組件的復用以二進制形式為主,這種復用的特點是無需修改代碼,復用方式直接,在運行級上實現(xiàn),不需要重新編譯即可立即運行,因此容易實現(xiàn)即插即用的復用和分布環(huán)境中的復用。整個系統(tǒng)包括了組件的創(chuàng)建和復用,分為創(chuàng)建人員和復用人員(如圖 2所示)。具體來講,創(chuàng)建人員是指飛行控制項目管理小組,他們將應用系統(tǒng)分解成組件系統(tǒng),標識并找出潛在的可復用軟件單元,為應用系統(tǒng)和組件復用定義一種體系結(jié)構(gòu),并開發(fā)一套與特定業(yè)務有關(guān)的組件,如資源調(diào)度組件、數(shù)據(jù)處理組件等。
基于組件的設(shè)計方法,具有編程語言與開發(fā)環(huán)境的獨立性,不同的開發(fā)人員采用不同的語言開發(fā)不同的組件,只要符合標準,就可以進行集成,形成相應的軟件系統(tǒng);具有組件功能的易擴充性,組件對外提供的服務是通過組件的接口進行的,新服務的增加只需要增加新的接口,添加一些與客戶有關(guān)的新組件,就可以配置特定的客戶系統(tǒng)[4]。如圖3所示,雷達仿真系統(tǒng)組件庫,復用的思想貫穿在整個設(shè)計和實現(xiàn)的過程中。
圖2 系統(tǒng)結(jié)構(gòu)
圖3 雷達仿真系統(tǒng)組件庫
對于復雜的軟件系統(tǒng),系統(tǒng)結(jié)構(gòu)的設(shè)計比算法和數(shù)據(jù)結(jié)構(gòu)的設(shè)計更加重要。為大型的軟件系統(tǒng)創(chuàng)建某種結(jié)構(gòu)或框架,在以后相似的軟件工程中進行復用,可以大幅度降低開發(fā)成本,縮短開發(fā)周期。如雷達仿真系統(tǒng)是具有許多相似行為的應用系統(tǒng)系列,在不同的雷達中一遍又一遍地重復相同處理、不引入體系復用,會造成極大的人力和財力消耗。隨著雷達仿真系統(tǒng)的發(fā)展和完善,一些帶有整體應用性的結(jié)構(gòu)被逐漸“固定”下來,形成特定的系統(tǒng)結(jié)構(gòu),它包括系統(tǒng)的基本構(gòu)成單元和關(guān)系,這就是框架的原始形成。框架的功能在于:把握許多相似應用程序的結(jié)構(gòu),為運行一批對象提供一個有組織的環(huán)境,組件不再相互調(diào)用方法,而是通過框架調(diào)用方法,框架的最終目的是能動態(tài)地集成組件,實現(xiàn)軟件的即插即用。
靜態(tài)鏈接庫即使用的*.LIB文件,庫中的代碼最后需要鏈接到可執(zhí)行文件中。靜態(tài)鏈接庫中,類、函數(shù)和數(shù)據(jù)被編譯進一個二進制文件(通常擴展名為*.LIB),Visual C++的編譯器在鏈接過程中將從靜態(tài)庫中恢復這些函數(shù)和數(shù)據(jù)并把他們和應用程序中的其他模塊組合在一起生成可執(zhí)行文件,這個過程稱為“靜態(tài)鏈接”。
一般雷達仿真系統(tǒng)可能具有以下功能:場景產(chǎn)生、資源調(diào)度、數(shù)據(jù)處理、檢測處理等。針對這些重復性功能模塊,設(shè)計出相應的雷達仿真組件,以靜態(tài)鏈接庫技術(shù)實現(xiàn),并在雷達仿真系統(tǒng)中使用這些組件,組件 Cooperation為中間組件,Cooperation負責增加或刪除某個組件,控制各個組件之間的交互。
本實例是在Visual C++6.0開發(fā)環(huán)境下實現(xiàn)雷達系統(tǒng)仿真軟件組件化。圖4為系統(tǒng)結(jié)構(gòu)圖,系統(tǒng)開發(fā)步驟如下:
圖4 雷達仿真軟件結(jié)構(gòu)
①將場景產(chǎn)生、資源調(diào)度、數(shù)據(jù)處理、檢測處理、Cooperation等組件在Visual C++ 6.0開發(fā)環(huán)境下創(chuàng)建Win32 Static Library工程,在工程下編譯鏈接通過,生成*.lib;
②在Visual C++6.0下創(chuàng)建主工程,為雷達仿真系統(tǒng)主框架工程,在工程中添加步驟1產(chǎn)生的所有靜態(tài)鏈接庫工程;
③在 Visual C++6.0菜單欄 Project->Dependencies.設(shè)置,將主工程依賴于其他組件工程;
④由中間組件Cooperation發(fā)送消息控制整個系統(tǒng)各個組件之間交互,使主系統(tǒng)有序運行。
引入了一種軟件工程中組件化軟件設(shè)計思想,充分考慮了軟件組件和框架的重用,通過集成各種組件,但是要考慮軟件組件的穩(wěn)定性,靈活方便地構(gòu)造整個系統(tǒng),使用靜態(tài)鏈接庫技術(shù)實現(xiàn)了雷達仿真軟件組件化,提高了雷達仿真系統(tǒng)的可擴展性和可靠性,減小了雷達仿真軟件的開發(fā)周期,具有較大的工程應用價值。建議在工程上將其模塊化,再組件化應用。
[1]陸鑫,閻慧,黃勝召. 軍事裝備知識網(wǎng)格的研究與應用[J].通信技術(shù),2010,43(05):124-126.
[2]宋麗紅.COM+編程指南[M]. 李二勇,譯.北京: 機械工業(yè)出版社,2005:1-4.
[3]廖泰安. 軟件復用技術(shù)--在系統(tǒng)開發(fā)過程中考慮復用[M]. 宋志遠,譯.北京:電子工業(yè)出版社, 2007.
[4]宋超.面向?qū)ο缶幊碳夹g(shù)導論[M].北京:機械工業(yè)出版社,2008.