萬 楊,姜 楠
(北京機(jī)電工程研究所,北京 100074)
軟件重用技術(shù)作為一種開發(fā)策略自從 1968年即開始被人提出,但真正廣泛使用是在 2000年以后。然而自推廣開始就一直是軟件工程應(yīng)用的重要方法和手段[1]。對于彈載飛行控制軟件來說,由于其需求的多變性和進(jìn)度的緊迫性,導(dǎo)致彈載飛行控制軟件從獨(dú)立開發(fā)模式越來越向基于軟件重用的開發(fā)模式轉(zhuǎn)變[2]。這種基于重用開發(fā)方式的轉(zhuǎn)變可以降低軟件產(chǎn)品開發(fā)和維護(hù)的成本,壓縮研制周期,保證軟件設(shè)計質(zhì)量的穩(wěn)定性[3]。
彈載飛行控制軟件是嵌入式軟件,一般采用 C或 C++語言編制。其軟件功能要跟據(jù)每個項(xiàng)目的不同要求和特定硬件進(jìn)行定制,因此無論是底層驅(qū)動還是實(shí)現(xiàn)的功能點(diǎn)都極具個性化。而且由于型號從研發(fā)初期到最后成型,中間的研究迭代過程較多,彈載飛行控制軟件的需求往往隨著研究的過程而不斷變化,且型號對軟件的開發(fā)效率要求非常高。受這樣的現(xiàn)實(shí)條件約束,在彈載飛行控制軟件研制過程中,軟件重用的推進(jìn)非常艱難。軟件設(shè)計人員不得不一次次的進(jìn)行編碼、調(diào)試等重復(fù)性工作[4],而這種開發(fā)模式導(dǎo)致了軟件質(zhì)量因人而異,不能使彈載飛行控制軟件的可靠性保持在同一水準(zhǔn)。
為了避免這種現(xiàn)象發(fā)生,彈載飛行控制軟件的開發(fā)模式必須向軟件重用方向轉(zhuǎn)變[5],軟件開發(fā)人員需要根據(jù)彈載飛行控制軟件的特點(diǎn)研究出本地化的重用解決方法。
現(xiàn)階段彈載飛行控制軟件的軟件重用研制模式一般由自頂而下、自下而上兩個方向相輔相成進(jìn)行重用開發(fā)。
雖然彈載飛行控制軟件的需求多種多樣,功能不盡相同。然而根據(jù)總結(jié)歸納,發(fā)現(xiàn)彈載飛行控制軟件大多擁有三種基本工作模式:射前模式、地面測試模式和飛行模式。這三種模式的切換過渡基本相同。每種模式下,均可抽象出通用性調(diào)度架構(gòu)以及統(tǒng)一化的接口管理方式[6]。這些基本的通用型設(shè)計支撐了可重用架構(gòu)的誕生。
圖1 彈載飛行控制軟件可重用架構(gòu)示意圖Fig.1 The reuse architecture of missileflight control software
當(dāng)基于可重用架構(gòu)開發(fā)的彈載飛行控制軟件完成研制后,其重用度大大提升?;镜闹噶顖?zhí)行、接口管理、協(xié)議處理等內(nèi)容全部可以實(shí)現(xiàn)統(tǒng)一化和重用化,無需開發(fā)者重復(fù)耗費(fèi)精力,而且可以保證不同項(xiàng)目的彈載飛行控制軟件質(zhì)量水平穩(wěn)定。
每個彈載飛行控制軟件中均含有一些基本的功能點(diǎn),比如最基本的對數(shù)據(jù)剔野值操作等等。提煉這些功能點(diǎn)成為基本的構(gòu)件,即可節(jié)省很多重復(fù)的功能開發(fā)工作。
軟件開發(fā)人員根據(jù)功能構(gòu)件制定標(biāo)準(zhǔn),保證了功能構(gòu)件的可靠性和易用性[7],從而提高彈載飛行控制軟件的開發(fā)效率和可靠性。
隨著對軟件重用技術(shù)的需求越來越多,彈載綜合控制軟件的軟件重用技術(shù)勢必會快速的發(fā)展,并且越來越凸顯其重要的作用。
軟件構(gòu)件目前設(shè)計的思路是非常細(xì)化的,基本是一個單一功能的構(gòu)件。其發(fā)展趨勢應(yīng)該由小粒度向大粒度發(fā)展,由單一功能發(fā)展為一個功能群,從而更大限度的滿足基于重用的軟件開發(fā)快速搭建需要。
表1 彈載飛行控制軟件可重用功能構(gòu)件種類示意表Tab.1 The kinds of reuse module
單一功能發(fā)展為一個功能群應(yīng)該可以有兩種方法,一種是同一類型的小構(gòu)件匯成這一類的構(gòu)件集,方便用戶取舍;一種是按工程應(yīng)用的需求選取幾種類型的小構(gòu)件組成構(gòu)件集。
這樣的軟件構(gòu)件,相當(dāng)于原有的小積木塊搭建變成一個積木塊群的整體移植,使開發(fā)者編碼時更加節(jié)省精力[8]。
現(xiàn)在的可重用架構(gòu)設(shè)計操作方式是先把軟件的框架搭建起來,其中如果需要用重用構(gòu)件大多由設(shè)計人員自行向內(nèi)添加。重用構(gòu)件和可重用架構(gòu)并沒有真正聯(lián)合在一起。當(dāng)構(gòu)件的粒度越來越大之后,具備了利用大粒度構(gòu)件支撐可重用架構(gòu)的設(shè)計基礎(chǔ),使軟件設(shè)計者不必在架構(gòu)的基礎(chǔ)上自行搜索合適的構(gòu)件,而是可重用架構(gòu)直接提供了與之相匹配的可選構(gòu)件組,使得軟件設(shè)計更加簡便易行,將設(shè)計者的精力釋放出來用于軟件需求層面設(shè)計。
現(xiàn)在的可重用架構(gòu)僅僅是用于軟件代碼的設(shè)計開發(fā)使用,而隨著重用技術(shù)的不斷推進(jìn),可重用架構(gòu)會發(fā)揮越來越大的作用,其功能也會向著多元化發(fā)展,形成“大”功能通用平臺,涉獵領(lǐng)域變寬。
圖2 小粒度向大粒度轉(zhuǎn)化的兩種方法示意圖Fig.2 Two ways about small size module change into big size module
圖3 可重用架構(gòu)與重用構(gòu)件融合示意圖Fig.3 The reuse architecture and module together of Missile flight control software
此時的通用平臺不僅僅是代碼開發(fā),還可形成開發(fā)測試一體化,產(chǎn)生可重用動態(tài)測試用例、可重用軟件開發(fā)文檔生成等多個重用成果、集驗(yàn)證、質(zhì)量管控、軟件信息統(tǒng)計、軟件數(shù)據(jù)采集等多項(xiàng)功能在一起,使基于通用平臺開發(fā)的彈載飛行控制軟件代碼越來越簡單,而且對于項(xiàng)目組來說,針對代碼的調(diào)試和測試工作也越來越方便,軟件文檔的編制工作量有所減輕,而對軟件質(zhì)量的把關(guān)會更加嚴(yán)格。
將基于平臺的開發(fā)和大規(guī)模定制相結(jié)合,系統(tǒng)地開發(fā)軟件產(chǎn)品,由此產(chǎn)生的軟件開發(fā)范例成為軟件產(chǎn)品線工程[9]。其中大規(guī)模定制的含義是以大規(guī)模的方式生產(chǎn)產(chǎn)品,并滿足每個用戶的不同需求。
圖4 可重用架構(gòu)“大”功能項(xiàng)示意圖Fig.4 The big function of the reuse architecture
在重用構(gòu)件和通用平臺快速發(fā)展到一定階段后,即可逐漸形成軟件產(chǎn)品線。彈載飛行綜合控制軟件的軟件產(chǎn)品線應(yīng)在滿足通用性的前提下強(qiáng)調(diào)可變性,并對可變性進(jìn)行隔離和封裝,使其可支持、可管理、可定義,滿足縮短開發(fā)周期、多項(xiàng)目并行時對軟件產(chǎn)品的需求、人力資源不足等多維度的需要[10]。
本文總結(jié)并描述了彈載飛行控制軟件基于軟件重用技術(shù)開發(fā)的現(xiàn)狀,并通過彈載飛行控制軟件對軟件重用技術(shù)的迫切需要,認(rèn)為大粒度的重用構(gòu)件建設(shè)技術(shù)、可重用架構(gòu)與構(gòu)件的融合技術(shù)、“大”功能通用平臺的建設(shè)以及軟件產(chǎn)品線技術(shù)研究應(yīng)該是重用技術(shù)的著重研究對象,以促進(jìn)彈載飛行控制軟件技術(shù)的快速發(fā)展,具有一定的借鑒意義和推廣價值。