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