■ 白 光 張永軍 雍明遠(yuǎn)
軍用軟件可靠性研究
■ 白 光張永軍雍明遠(yuǎn)
我國(guó)在軍用軟件領(lǐng)域的起步較晚,在軍用軟件的可靠性研究和應(yīng)用方面起步更晚且投入的精力明顯不夠。在武器科技化、集成化日益明顯的今天,軟件可靠性方面的不足很容易成為制約我們裝備發(fā)展的瓶頸。對(duì)此,筆者在應(yīng)用開發(fā)方面進(jìn)行了討論。
長(zhǎng)期以來(lái),在實(shí)際使用過(guò)程中暴露的軟件以及和軟件有關(guān)的問(wèn)題逐漸增多,直接影響了整個(gè)武器系統(tǒng)的質(zhì)量。為了避免和消除錯(cuò)誤,確保開發(fā)出的軟件系統(tǒng)工作正確,運(yùn)行可靠,如何提高軟件裝備的可靠性,是軟件質(zhì)量管理的重點(diǎn)工作。
1983年美國(guó)IEEE計(jì)算機(jī)學(xué)會(huì)對(duì)“軟件可靠性”作出了明確定義,此后該定義被美國(guó)標(biāo)準(zhǔn)化研究所接受為國(guó)家標(biāo)準(zhǔn),1989年我國(guó)也接受該定義為國(guó)家標(biāo)準(zhǔn)。新版GJB/Z 102-97的定義包括兩方面的含義:
(1)在規(guī)定的條件下,在規(guī)定的時(shí)間內(nèi),軟件不引起系統(tǒng)失效的概率;
(2)在規(guī)定的時(shí)間周期內(nèi),在所述條件下程序執(zhí)行所要求的功能的能力;
其中的概率是系統(tǒng)輸入和系統(tǒng)使用的函數(shù),也是軟件中存在的故障的函數(shù),系統(tǒng)輸入將確定是否會(huì)遇到已存在的故障(如果故障存在的話)。
同時(shí)我們也都知道,第一,無(wú)論多么成熟的軟件都不會(huì)十全十美,幾乎所有投入使用的軟件仍含有嵌入的錯(cuò)誤,由于軟件測(cè)試時(shí)間和費(fèi)用上的限制,想用連續(xù)不斷的檢查來(lái)獲得100%正確的軟件是幾乎不可能的。第二,軟件一時(shí)的正確運(yùn)行,不等于程序中已不存在任何差錯(cuò)。因?yàn)楹陀邢喈?dāng)規(guī)模的軟件一般總有多條分支和多種功能。在不同的使用目的和輸入條件下,其故障的發(fā)生是隨機(jī)的。
軟件可靠性是關(guān)于軟件能夠滿足需求功能的性質(zhì),軟件不能滿足需求是因?yàn)檐浖械牟铄e(cuò)引起了軟件故障。軟件中有哪些可能的差錯(cuò)呢?
軟件差錯(cuò)是軟件開發(fā)各階段潛入的人為錯(cuò)誤:
1.需求分析定義錯(cuò)誤。如用戶提出的需求不完整,用戶需求的變更未及時(shí)消化,軟件開發(fā)者和用戶對(duì)需求的理解不同等等。
2.設(shè)計(jì)錯(cuò)誤。如處理的結(jié)構(gòu)和算法錯(cuò)誤,缺乏對(duì)特殊情況和錯(cuò)誤處理的考慮等。
3.編碼錯(cuò)誤。如語(yǔ)法錯(cuò)誤,變量初始化錯(cuò)誤等。
4.測(cè)試錯(cuò)誤。如數(shù)據(jù)準(zhǔn)備錯(cuò)誤,測(cè)試用例錯(cuò)誤等。
5.文檔錯(cuò)誤。如文檔不齊全,文檔相關(guān)內(nèi)容不一致,文檔版本不一致,缺乏完整性等。
從上游到下游,錯(cuò)誤的影響是發(fā)散的,所以要盡量把錯(cuò)誤消除在開發(fā)前期階段。
根據(jù)上面對(duì)影響軟件可靠性的分析,造成軟件錯(cuò)誤的因素貫穿于整個(gè)軟件開發(fā)的全過(guò)程,任何的事后彌補(bǔ)措施都是建立在已經(jīng)造成了錯(cuò)誤后果的基礎(chǔ)上的。因此,將軟件錯(cuò)誤盡可能地消滅在萌芽狀態(tài)是投入成本最小的,而通過(guò)采用科學(xué)的軟件工程化要求進(jìn)行軟件系統(tǒng)的設(shè)計(jì)可以將軟件的潛在危險(xiǎn)控制到盡可能小的范圍。
開發(fā)高可靠軟件必須采用軟件工程方法,搞好軟件開發(fā)工程化。當(dāng)前研制的軍用軟件裝備絕大部分擁有龐大的軟件體系結(jié)構(gòu):可重用或公用的功能模塊,多個(gè)分承包方的參與,決定了項(xiàng)目的開發(fā)必然是一個(gè)團(tuán)隊(duì)協(xié)作開發(fā)過(guò)程。根據(jù)GJB 2786-96,需要從以下幾個(gè)方面督促研制方抓好軟件工程的實(shí)施:
(1)軟件開發(fā)方法
軟件開發(fā)方法對(duì)軟件的可靠性有重要影響。面向?qū)ο蟮姆椒ū阌谲浖?fù)雜性控制,有利于生產(chǎn)率的提高,符合人類的思維習(xí)慣,能自然地表達(dá)現(xiàn)實(shí)世界的實(shí)體和問(wèn)題,具有一種自然的模型化能力,達(dá)到從問(wèn)題空間到解空間的較為直接自然的映射。
在面向?qū)ο蟮姆椒ㄖ校捎诖罅渴褂镁哂懈呖煽啃缘膸?kù),其可靠性也就有了保證,用面向?qū)ο蟮姆椒ㄒ怖趯?shí)現(xiàn)軟件重用,所以一般應(yīng)采用面向?qū)ο蟮姆椒ā?/p>
(2)軟件工程環(huán)境
軟件工程環(huán)境應(yīng)該能夠集中支撐開發(fā)階段的操作。
(3)安全性分析
一定要重視軟件的容錯(cuò)性設(shè)計(jì),把執(zhí)行任務(wù)的潛在危險(xiǎn)降到盡可能小。
(4)非開發(fā)軟件
非開發(fā)軟件應(yīng)當(dāng)結(jié)合到交付軟件中,非開發(fā)軟件的結(jié)合應(yīng)用應(yīng)經(jīng)過(guò)簽約機(jī)構(gòu)的批準(zhǔn)和遵守合同中的數(shù)據(jù)權(quán)限要求。
(5)計(jì)算機(jī)軟件組成
應(yīng)根據(jù)軟件開發(fā)計(jì)劃規(guī)定的開發(fā)方法,將軟件配置項(xiàng)進(jìn)行分解并劃分成軟件部件和軟件單元。應(yīng)確保軟件配置項(xiàng)的需求已完全分配,并能進(jìn)一步細(xì)化,以便更好地實(shí)施每個(gè)軟件部件和軟件單元的設(shè)計(jì)與測(cè)試。
(6)從需求到設(shè)計(jì)的可追蹤性
明確劃分各開發(fā)過(guò)程(需求分析過(guò)程、設(shè)計(jì)過(guò)程、測(cè)試過(guò)程、系統(tǒng)集成階段等),在各開發(fā)過(guò)程中實(shí)施進(jìn)度管理,產(chǎn)生階段質(zhì)量評(píng)價(jià)報(bào)告,對(duì)不合要求的部件和單元及早采取對(duì)策。
(7)高級(jí)語(yǔ)言
選擇編程語(yǔ)言對(duì)開發(fā)和維護(hù)階段都是重要的。當(dāng)選擇編程語(yǔ)言時(shí)必須注意特殊的應(yīng)用要求及它對(duì)于軟件工程現(xiàn)代化的質(zhì)量保證原則是否支持,在滿足用戶需求的前提下,還要綜合考慮編譯和編程環(huán)境的有效性、語(yǔ)言的可移植性、編程人員的技術(shù)水平等。
(8)設(shè)計(jì)和編碼標(biāo)準(zhǔn)
必須大力推行標(biāo)準(zhǔn)化的實(shí)施。標(biāo)準(zhǔn)對(duì)于項(xiàng)目的互聯(lián)、互通、互操作,對(duì)于開放性、可維護(hù)性,是一個(gè)先決條件。標(biāo)準(zhǔn)的簡(jiǎn)單或復(fù)雜,決定著系統(tǒng)的簡(jiǎn)單與復(fù)雜。標(biāo)準(zhǔn)的可操作性,影響著系統(tǒng)的一致性和可維護(hù)性;標(biāo)準(zhǔn)的好壞,決定了系統(tǒng)性能。
為標(biāo)準(zhǔn)的實(shí)施相應(yīng)制定許多實(shí)施的細(xì)則與模板,使得標(biāo)準(zhǔn)的實(shí)施不但有章可循,而且可以操作,可以重復(fù)(重用),便于檢查。這些細(xì)則與模板包括需求分析、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)的細(xì)則;包括需求分析、概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)的模板。
(9)軟件開發(fā)文件
軟件開發(fā)文件包括系統(tǒng)文檔、維護(hù)文檔和項(xiàng)目管理文檔等。開發(fā)文檔可以使人們對(duì)已經(jīng)執(zhí)行的開發(fā)過(guò)程有深入的了解,并對(duì)重要的階段成果進(jìn)行初步和清晰的說(shuō)明。
(10)處理資源和預(yù)留量
應(yīng)在合同期內(nèi)對(duì)處理資源的利用情況進(jìn)行監(jiān)測(cè),資源利用情況應(yīng)記載在各軟件配置的產(chǎn)品規(guī)格說(shuō)明。
目前我國(guó)的軍品承制企業(yè)由于受到多種因素的影響和制約,軟件可靠性的要求都重視的不夠,在軟件的開發(fā)、設(shè)計(jì)階段分析不足,缺乏嚴(yán)格的評(píng)審;在軟件的調(diào)試、驗(yàn)收階段也缺乏科學(xué)的測(cè)試手段,無(wú)法對(duì)代碼進(jìn)行充分的測(cè)試;在使用、維護(hù)階段不能嚴(yán)格按照軟件配置進(jìn)行管理,造成軟件在生存周期中存在更改隨意性大,質(zhì)量難控制的問(wèn)題。
(1)軟件開發(fā)過(guò)程透明度差:現(xiàn)有的軟件承制單位依然存在軟件的開發(fā)過(guò)程由開發(fā)者“自編”“自導(dǎo)”“自演”的現(xiàn)象,一旦軟件出現(xiàn)問(wèn)題只能由開發(fā)者本人去進(jìn)行維護(hù),其他人很難介入,而現(xiàn)在的企業(yè)人員流動(dòng)比較大,一但發(fā)生人員變更,后繼者往往要將前任的工作推倒從頭再來(lái),嚴(yán)重影響科研工作的進(jìn)行。
(2)沒(méi)有嚴(yán)格執(zhí)行配置管理:未對(duì)軟件的更改標(biāo)識(shí)、更改控制、更改檢查等進(jìn)行嚴(yán)格控制, 造成軟件的管理混亂, 產(chǎn)品的軟件錯(cuò)誤較多,軟件質(zhì)量控制差。
(3)軟件測(cè)試不夠:軟件的測(cè)試軟件、測(cè)試工具缺乏, 測(cè)試標(biāo)準(zhǔn)、規(guī)范和管理制度不健全。目前絕大多數(shù)的軟件檢驗(yàn)都與硬件一起進(jìn)行。軟件驗(yàn)收時(shí)所謂的測(cè)試也是對(duì)預(yù)先指定的幾個(gè)用例進(jìn)行測(cè)試, 起不到軟件測(cè)試的應(yīng)有作用, 因而造成軟件的缺陷多、故障多。
(4)沒(méi)有明確的軟件可靠性指標(biāo)要求:在戰(zhàn)技指標(biāo)和研制任務(wù)書中沒(méi)有明確提出軟件的可靠性指標(biāo)要求??煽啃灾笜?biāo)通常被認(rèn)為是硬件的可靠性指標(biāo), 在考核中沒(méi)有對(duì)軟件的可靠性進(jìn)行單獨(dú)驗(yàn)證, 對(duì)軟件的可靠性心中無(wú)數(shù)。
(5)尚未建立完善的檢驗(yàn)體系:軟件沒(méi)有像硬件那樣建立嚴(yán)格的“三檢”制度, 軟件檢驗(yàn)基本上是由軟件開發(fā)者完成的。而實(shí)踐證明僅僅依靠自檢不能保證軟件質(zhì)量, 因此交付部隊(duì)使用的產(chǎn)品軟件質(zhì)量問(wèn)題較多。
針對(duì)以上問(wèn)題,需要加強(qiáng)軟件質(zhì)量控制,嚴(yán)格按照軟件工程化的要求執(zhí)行,幫助企業(yè)建立高效可靠的軟件開發(fā)流程,提高軟件系統(tǒng)的可靠性水平。具體做法如下:
(1)實(shí)施軟件工程化管理:杜絕開發(fā)者集多重角色于一身,嚴(yán)格做到設(shè)計(jì)、生產(chǎn)、檢驗(yàn)分開,形成三者相互制約的關(guān)系,由軟件設(shè)計(jì)工程師編制軟件的設(shè)計(jì)圖紙(即詳細(xì)設(shè)計(jì)報(bào)告) , 由合格的軟件編程人員按設(shè)計(jì)報(bào)告編程, 最后由軟件檢測(cè)人員檢查軟件的設(shè)計(jì)、編程是否符合要求。這樣才能有效提高軟件質(zhì)量和可靠性。
(2)按照GJB438B和GBJ2786的要求,對(duì)各階段形成的文檔進(jìn)行審查,實(shí)行配置管理,確保軟件設(shè)計(jì)、生產(chǎn)、維護(hù)過(guò)程是受控的,可重復(fù)的。
(3)嚴(yán)格實(shí)行軟件配置管理,各階段工作完成后把階段成果送入軟件受控庫(kù)中,開發(fā)者只能使用,不得隨意修改,若要修改,需按照相應(yīng)的審批手續(xù)報(bào)備。當(dāng)軟件的集成和綜合測(cè)試階段結(jié)束時(shí), 應(yīng)該匯總并修訂全部軟件文檔, 連同源程序清單和目標(biāo)代碼清單一起送入軟件產(chǎn)品庫(kù)。進(jìn)入系統(tǒng)的運(yùn)行和維護(hù)階段后, 若要對(duì)配置項(xiàng)進(jìn)行修改, 必須依照有關(guān)程序修改, 產(chǎn)生新的軟件版本。
(4)必須對(duì)軟件進(jìn)行充分的測(cè)試:對(duì)于軟件開發(fā)者來(lái)說(shuō), 開發(fā)出的軟件必須具備可測(cè)試性。軟件的缺陷是不可避免的, 不可測(cè)試的軟件,其缺陷將不易被發(fā)現(xiàn)和糾正。所謂軟件測(cè)試, 是通過(guò)對(duì)源程序及其實(shí)際執(zhí)行所產(chǎn)生的結(jié)果進(jìn)行檢查分析, 以找出程序中可能隱藏的錯(cuò)誤的過(guò)程, 即為了發(fā)現(xiàn)程序錯(cuò)誤而執(zhí)行程序的過(guò)程。程序測(cè)試過(guò)程通常要反復(fù)進(jìn)行多次, 直到滿足某種測(cè)試策略為止。
1.王江為,郭新河.武器裝備軟件可靠性研究,《電腦知識(shí)與技術(shù)》2011年32期;
2.楊英清.軟件工程技術(shù)發(fā)展思索,軟件學(xué)報(bào),2005(1);
3.吳福全,蘇小桅.軟件質(zhì)量評(píng)估方法與探討,成都大學(xué)學(xué)報(bào):自然科學(xué)版,2008(1);
(作者單位:空軍駐西北地區(qū)軍事代表室)