萬 楊,姜 楠
(北京機電工程研究所,北京 100074)
軟件重用技術作為一種開發策略自從 1968年即開始被人提出,但真正廣泛使用是在 2000年以后。然而自推廣開始就一直是軟件工程應用的重要方法和手段[1]。對于彈載飛行控制軟件來說,由于其需求的多變性和進度的緊迫性,導致彈載飛行控制軟件從獨立開發模式越來越向基于軟件重用的開發模式轉變[2]。這種基于重用開發方式的轉變可以降低軟件產品開發和維護的成本,壓縮研制周期,保證軟件設計質量的穩定性[3]。
彈載飛行控制軟件是嵌入式軟件,一般采用 C或 C++語言編制。其軟件功能要跟據每個項目的不同要求和特定硬件進行定制,因此無論是底層驅動還是實現的功能點都極具個性化。而且由于型號從研發初期到最后成型,中間的研究迭代過程較多,彈載飛行控制軟件的需求往往隨著研究的過程而不斷變化,且型號對軟件的開發效率要求非常高。受這樣的現實條件約束,在彈載飛行控制軟件研制過程中,軟件重用的推進非常艱難。軟件設計人員不得不一次次的進行編碼、調試等重復性工作[4],而這種開發模式導致了軟件質量因人而異,不能使彈載飛行控制軟件的可靠性保持在同一水準。
為了避免這種現象發生,彈載飛行控制軟件的開發模式必須向軟件重用方向轉變[5],軟件開發人員需要根據彈載飛行控制軟件的特點研究出本地化的重用解決方法。
現階段彈載飛行控制軟件的軟件重用研制模式一般由自頂而下、自下而上兩個方向相輔相成進行重用開發。
雖然彈載飛行控制軟件的需求多種多樣,功能不盡相同。然而根據總結歸納,發現彈載飛行控制軟件大多擁有三種基本工作模式:射前模式、地面測試模式和飛行模式。這三種模式的切換過渡基本相同。每種模式下,均可抽象出通用性調度架構以及統一化的接口管理方式[6]。這些基本的通用型設計支撐了可重用架構的誕生。

圖1 彈載飛行控制軟件可重用架構示意圖Fig.1 The reuse architecture of missileflight control software
當基于可重用架構開發的彈載飛行控制軟件完成研制后,其重用度大大提升。基本的指令執行、接口管理、協議處理等內容全部可以實現統一化和重用化,無需開發者重復耗費精力,而且可以保證不同項目的彈載飛行控制軟件質量水平穩定。
每個彈載飛行控制軟件中均含有一些基本的功能點,比如最基本的對數據剔野值操作等等。提煉這些功能點成為基本的構件,即可節省很多重復的功能開發工作。
軟件開發人員根據功能構件制定標準,保證了功能構件的可靠性和易用性[7],從而提高彈載飛行控制軟件的開發效率和可靠性。
隨著對軟件重用技術的需求越來越多,彈載綜合控制軟件的軟件重用技術勢必會快速的發展,并且越來越凸顯其重要的作用。
軟件構件目前設計的思路是非常細化的,基本是一個單一功能的構件。其發展趨勢應該由小粒度向大粒度發展,由單一功能發展為一個功能群,從而更大限度的滿足基于重用的軟件開發快速搭建需要。

表1 彈載飛行控制軟件可重用功能構件種類示意表Tab.1 The kinds of reuse module
單一功能發展為一個功能群應該可以有兩種方法,一種是同一類型的小構件匯成這一類的構件集,方便用戶取舍;一種是按工程應用的需求選取幾種類型的小構件組成構件集。
這樣的軟件構件,相當于原有的小積木塊搭建變成一個積木塊群的整體移植,使開發者編碼時更加節省精力[8]。
現在的可重用架構設計操作方式是先把軟件的框架搭建起來,其中如果需要用重用構件大多由設計人員自行向內添加。重用構件和可重用架構并沒有真正聯合在一起。當構件的粒度越來越大之后,具備了利用大粒度構件支撐可重用架構的設計基礎,使軟件設計者不必在架構的基礎上自行搜索合適的構件,而是可重用架構直接提供了與之相匹配的可選構件組,使得軟件設計更加簡便易行,將設計者的精力釋放出來用于軟件需求層面設計。
現在的可重用架構僅僅是用于軟件代碼的設計開發使用,而隨著重用技術的不斷推進,可重用架構會發揮越來越大的作用,其功能也會向著多元化發展,形成“大”功能通用平臺,涉獵領域變寬。

圖2 小粒度向大粒度轉化的兩種方法示意圖Fig.2 Two ways about small size module change into big size module

圖3 可重用架構與重用構件融合示意圖Fig.3 The reuse architecture and module together of Missile flight control software
此時的通用平臺不僅僅是代碼開發,還可形成開發測試一體化,產生可重用動態測試用例、可重用軟件開發文檔生成等多個重用成果、集驗證、質量管控、軟件信息統計、軟件數據采集等多項功能在一起,使基于通用平臺開發的彈載飛行控制軟件代碼越來越簡單,而且對于項目組來說,針對代碼的調試和測試工作也越來越方便,軟件文檔的編制工作量有所減輕,而對軟件質量的把關會更加嚴格。
將基于平臺的開發和大規模定制相結合,系統地開發軟件產品,由此產生的軟件開發范例成為軟件產品線工程[9]。其中大規模定制的含義是以大規模的方式生產產品,并滿足每個用戶的不同需求。

圖4 可重用架構“大”功能項示意圖Fig.4 The big function of the reuse architecture
在重用構件和通用平臺快速發展到一定階段后,即可逐漸形成軟件產品線。彈載飛行綜合控制軟件的軟件產品線應在滿足通用性的前提下強調可變性,并對可變性進行隔離和封裝,使其可支持、可管理、可定義,滿足縮短開發周期、多項目并行時對軟件產品的需求、人力資源不足等多維度的需要[10]。
本文總結并描述了彈載飛行控制軟件基于軟件重用技術開發的現狀,并通過彈載飛行控制軟件對軟件重用技術的迫切需要,認為大粒度的重用構件建設技術、可重用架構與構件的融合技術、“大”功能通用平臺的建設以及軟件產品線技術研究應該是重用技術的著重研究對象,以促進彈載飛行控制軟件技術的快速發展,具有一定的借鑒意義和推廣價值。