段 斌
(中國航空綜合技術(shù)研究所,北京 100028)
隨著信息技術(shù)的發(fā)展,裝備系統(tǒng)的性能有了很大的提升,但同時裝備變的越來越復(fù)雜,復(fù)雜帶來的是使用和維護(hù)費(fèi)用的不斷攀升,面對有限的經(jīng)費(fèi)預(yù)算,如何在裝備的全壽命周期內(nèi)以較合理的可承受的費(fèi)用實(shí)現(xiàn)有效的綜合保障是一個突出的問題。隨著信息技術(shù)在裝備研制中的大量應(yīng)用,計算機(jī)資源保障作為綜合保障的重要一部分,其重要性也漸漸凸現(xiàn)出來。而對于軟件密集型的裝備系統(tǒng)來說,計算機(jī)資源保障的重點(diǎn)便是軟件保障。研究顯示,典型軟件產(chǎn)品的保障費(fèi)用占整個壽命周期費(fèi)用的60%~80%,同時在軟件密集型系統(tǒng)中,軟件是最主要的系統(tǒng)風(fēng)險源,無論是從經(jīng)濟(jì)可承受性還是系統(tǒng)安全性的角度來說,需要對軟件密集型的大型裝備開展軟件保障工作。
軟件保障是在軟件的整個壽命周期內(nèi)為包容各種變化并持續(xù)保證軟件的效能而采取的一系列活動的總和,這些活動包括從初始的需求分析、設(shè)計研發(fā)、驗(yàn)證鑒定到軟件交付用戶使用,以及對所發(fā)現(xiàn)問題的評估、軟件的修改、變更管理和鑒定等。具體來說軟件保障從兩方面來滿足用戶的需求:一是保證所交付的軟件具有良好的設(shè)計特性來包容軟件整個壽命周期內(nèi)的變化,該設(shè)計特性涵蓋易修改性、交互性、良好的擴(kuò)展性和可移植性,以及軟件可靠性等方面,目的是實(shí)現(xiàn)軟件的好保障;另一方面以可接受的費(fèi)用提供保障能力來滿足用戶對服務(wù)質(zhì)量的需求。這兩方面交織在一起共同實(shí)現(xiàn)對軟件保障的規(guī)劃[1]。
軟件保障性反映的是在軟件全壽命周期內(nèi)有效執(zhí)行軟件保障的能力。同軟件保障相對應(yīng),大體上涉及到兩個方面:一是軟件本身的設(shè)計特性(包括軟件的可靠性、安全性、測試性和維護(hù)性等)及軟件的開發(fā)工具和方法是否健全;二是實(shí)施和推動軟件保障活動(包括軟件的使用、后勤管理和軟件修改等活動)的人員、產(chǎn)品和設(shè)施等資源是否完備。
可以看出,軟件保障不同于軟件維護(hù)。IEEE對軟件維護(hù)的定義是:軟件產(chǎn)品交付使用后,通過修正軟件缺陷,改善性能或其他屬性,或?yàn)檫m應(yīng)變化的環(huán)境而對軟件產(chǎn)品所實(shí)施的修改。軟件維護(hù)分為四類。
(1)修正型維護(hù):軟件產(chǎn)品交付后,對所發(fā)現(xiàn)的問題進(jìn)行及時修正;
(2)預(yù)防型維護(hù):軟件產(chǎn)品交付后,在潛在的缺陷演變成使用故障之前予以修正;
(3)適應(yīng)型維護(hù):軟件產(chǎn)品交付后,為適應(yīng)變化的應(yīng)用環(huán)境所做的修改;
(4)完善型維護(hù):軟件產(chǎn)品交付后,在潛在的缺陷暴露之前發(fā)現(xiàn)其并予以修正。
軟件保障的概念范圍超過軟件維護(hù),在軟件維護(hù)中包括軟件的持續(xù)使用和功能增強(qiáng),而軟件保障除了軟件維護(hù)的內(nèi)容外,還包括了基礎(chǔ)設(shè)施、技能和設(shè)計等可在壽命周期內(nèi)推動保障活動的所有要素。軟件維護(hù)是軟件保障的重要內(nèi)容之一,是軟件保障的主題[2]。軟件保障的費(fèi)用占軟件壽命周期全部費(fèi)用的60%~80%,其用于保障的基礎(chǔ)設(shè)施和組織架構(gòu)比初始的開發(fā)組織規(guī)模大和能力要求高。對于軟件開發(fā)來說,與軟件保障既有相同之處,又有不同之處。不同之處在于軟件開發(fā)人員沒有現(xiàn)成的系統(tǒng)可以參考,而維護(hù)人員需要在現(xiàn)有軟件框架的限制下閱讀并理解已有軟件的源代碼并提出解決方案。相同之處在于維護(hù)人員有時所執(zhí)行的任務(wù)同開發(fā)人員一樣,如定義分析用戶需求、設(shè)計解決方案、編碼實(shí)現(xiàn)、測試并升級軟件文檔。
程序加文檔統(tǒng)稱為軟件,理論上軟件沒有磨損,也不會退化,但實(shí)際情況下軟件同硬件一樣,其故障率符合浴缸曲線。剛開始故障率很高,隨著軟件缺陷的不斷修正,軟件故障率降到較低的水平,但隨后的應(yīng)用中,需要不斷修正軟件潛在的缺陷、適應(yīng)變化的環(huán)境及改善軟件的性能,軟件自身的這些變更會導(dǎo)致軟件產(chǎn)品的故障率陡然升高,隨著不斷完善又漸漸的回歸到較低的故障率。由于軟件沒有備用部件,每次出現(xiàn)故障唯一可行的方式是對軟件進(jìn)行修改,每次對軟件設(shè)計的修改都會帶來新的潛在缺陷,恰恰是對軟件的修改又引入了新的缺陷,進(jìn)而導(dǎo)致了軟件可靠性的降低;而硬件是由于缺乏維護(hù)保障而導(dǎo)致產(chǎn)品功能的退化或故障,這正是軟件保障同物理硬件保障的真正不同之處。因此,基于軟件的固有屬性,可從四個方面來分析影響軟件保障的各種因素。
(1)設(shè)計特性:軟件的可靠性與安全性
軟件的可靠性反映了軟件無故障運(yùn)行的能力??煽啃耘c軟件的變更量有密切的關(guān)系,可靠性越高,擴(kuò)展性和可移植性越好,軟件的變更量越小,所要求的軟件修改工作量越少。
軟件產(chǎn)品的安全性是根據(jù)軟件產(chǎn)品所提供的功能的安全危害度來確定的。系統(tǒng)總的安全危害度應(yīng)通過適當(dāng)?shù)奈kU分析技術(shù)來確定,而具體軟件產(chǎn)品的危害度是在系統(tǒng)設(shè)計過程中對系統(tǒng)功能進(jìn)行劃分的基礎(chǔ)上得出的,設(shè)計時應(yīng)使執(zhí)行關(guān)鍵功能的軟件最小化。系統(tǒng)要求應(yīng)當(dāng)明確安全危害度類別,并規(guī)定適當(dāng)?shù)能浖踩缘燃?。并將軟件開發(fā)、測試和修改的各個約束與要求同各個安全性等級相聯(lián)系。
(2)擴(kuò)展能力:軟件的運(yùn)行環(huán)境(硬件環(huán)境)
擴(kuò)展能力是一種系統(tǒng)設(shè)計屬性,包括CPU、Memory、大容量存儲器和輸入/輸出(I/O)等;反映的是軟件在不受計算資源約束的情況下可以容許被修改的程度。在實(shí)際的軟件開發(fā)中應(yīng)考慮諸如物理、邏輯地址空間等有關(guān)的限制。擴(kuò)展能力不夠可能限制軟件修改的范圍,有時為了克服系統(tǒng)本身的限制,簡單的修改也可能帶來大量的重復(fù)工作。如機(jī)載設(shè)備的擴(kuò)展能力有限,對運(yùn)行在機(jī)載設(shè)備上的軟件的實(shí)時性、空間利用率、代碼效率和代碼的冗余度都有較高的要求。
(3)軟件開發(fā)
——技術(shù)
技術(shù)包括軟件的設(shè)計規(guī)范和設(shè)計方法,以及所用的操作系統(tǒng)、編程語言、編譯器、軟件測試方法和工具,項(xiàng)目專用工具和技術(shù),體系結(jié)構(gòu)。使用專門的某項(xiàng)技術(shù)可能會對系統(tǒng)和軟件設(shè)計方案有約束,還可能會影響軟件工程的生產(chǎn)率和完整性,因此在選擇技術(shù)時要謹(jǐn)慎。
——人員技能
軟件設(shè)計與實(shí)現(xiàn),以及后期的軟件修改要求人員具有相應(yīng)的軟件工程實(shí)踐能力,對具體機(jī)能的要求可能與軟件的應(yīng)用范圍、所用的技術(shù)和方法有關(guān)。應(yīng)當(dāng)根據(jù)系統(tǒng)設(shè)計、軟件設(shè)計和軟件的保障策略來確定技能要求,從而確定人員和培訓(xùn)需求。
——軟件的模塊化數(shù)量
模塊化設(shè)計是軟件底層編碼時的一種策略,軟件模塊化的程度與開發(fā)人員的工程實(shí)踐和所選擇的設(shè)計方法、工具和編程語言有關(guān)。通常來說,模塊化的最佳實(shí)踐應(yīng)當(dāng)是針對可理解和可保障的設(shè)計要求,在功能和性能之間取得最佳平衡。若軟件的模塊化設(shè)計較差,可能會導(dǎo)致在修改某部分軟件代碼時而需要修改其他部分的代碼,從而導(dǎo)致修改費(fèi)用的增加。可用接口管理和標(biāo)準(zhǔn)化的方法來影響軟件的模塊化設(shè)計。
——軟件規(guī)模
軟件的規(guī)模取決于應(yīng)用程序和設(shè)計方案,通常采用代碼行數(shù)來衡量軟件的規(guī)模。相同品質(zhì)的軟件,軟件的潛在缺陷隨著軟件規(guī)模的增加而成倍增加,軟件規(guī)模直接影響到實(shí)施軟件維護(hù)時所需要的保障資源和所花費(fèi)用。由于大多數(shù)軟件保障的測算都基于對軟件規(guī)模和復(fù)雜度的評估,因此在軟件的采辦要求中應(yīng)當(dāng)明確對數(shù)據(jù)收集和分析的要求,以便衡量軟件的規(guī)模。
——文檔
文檔指與軟件相關(guān)的要求、規(guī)范、設(shè)計、分析、實(shí)施、測試和運(yùn)行有關(guān)的所有電子或紙質(zhì)的記錄。文檔作為軟件的重要組成部分,必須按照統(tǒng)一的標(biāo)準(zhǔn)生成,并確保可用并易于使用。在正式接受軟件之前要驗(yàn)證軟件保障活動中所需的各種文檔都得以交付。
——保密
軟件產(chǎn)品的密級取決于應(yīng)用程序和裝備設(shè)計,應(yīng)盡量將高密級的軟件與系統(tǒng)的其他軟件實(shí)現(xiàn)物理隔離。系統(tǒng)保密要求中應(yīng)當(dāng)規(guī)定軟件產(chǎn)品的密級標(biāo)準(zhǔn),并說明與該密級相關(guān)的修改和操作限制。其密級可能會對軟件保障活動和保障環(huán)境有額外的約束和要求,如可能會限制對軟件的訪問及需要專用的軟件保障設(shè)備。
(4)軟件部署
投入使用的裝備數(shù)量(部署數(shù)量)及實(shí)施軟件保障的地點(diǎn),對軟件保障性要求和保障費(fèi)用都有影響。重要的用戶出于自己的實(shí)際需求,可能對軟件有不同的要求,裝備的數(shù)量和分布情況會影響軟件保障的工作量,以及軟件保障設(shè)施的最佳地點(diǎn)設(shè)置。部署量越多,裝備累積的利用率就越高,檢測軟件故障及確認(rèn)修正性更改要求的可能性就越大。
軟件保障的核心是提供合適的功能服務(wù)來分析、優(yōu)化及實(shí)施軟件變更。軟件保障模型也在應(yīng)用中不斷地發(fā)展,軟件模型如圖1所示,不同于先前的基于組織的模型,是基于功能且包含了數(shù)據(jù)保障的模型,該模型是對軟件保障功能的頂層描述,是一個動態(tài)的模型,不僅描述了軟件保障的整個過程,同時涵蓋了外部實(shí)體同軟件保障過程的互動。各個功能單元的具體闡述如下。
(1)外部實(shí)體
包含兩部分:平臺環(huán)境和外部驅(qū)動,為軟件保障過程提供輸入,或接受輸出數(shù)據(jù)。
平臺硬件宿主:軟件寄住的目標(biāo)硬件平臺,軟件可通過多種方式加載到下述硬件中,移動硬盤、PCMICA卡、磁帶、專業(yè)設(shè)備和工業(yè)站點(diǎn)。
外部變更驅(qū)動:由用戶需求或外部環(huán)境的變化所引起的變更源,包括5個方面。
——由于外部威脅變更,從而增強(qiáng)功能;
——由于外部環(huán)境變更,需維持原有能力;
——平臺的能力變更;
——由于預(yù)算減少需降低整個壽命周期費(fèi)用;
——工業(yè)技術(shù)升級。
(2)軟件使用保障
包括用戶使用過程中的所有活動。
——對軟件、數(shù)據(jù)和固件的加載、重載、復(fù)制、標(biāo)注、恢復(fù)和執(zhí)行等;
——數(shù)據(jù)和軟件的準(zhǔn)備、發(fā)布和恢復(fù)。
圖1 軟件和數(shù)據(jù)保障模型[3]
(3)問題評估功能
詢問主要是同用戶進(jìn)行互動,獲取用戶在使用和維護(hù)過程中的各種問題,在軟件的整個壽命周期內(nèi)扮演著十分重要的角色,主要功能如下。
①評估和過濾軟件使用中的各種問題以便識別事件的原因。相應(yīng)組織可通過領(lǐng)域知識的累積,具備清晰的工程決策能力。
②對于任何問題,調(diào)查引起問題的事件特性、去除任何重復(fù)項(xiàng),并證明是接受還是拒絕該問題,同時評估接受的益處、開銷和風(fēng)險。
③確定待解決問題的優(yōu)先次序,生成變更需求,需優(yōu)先解決的問題提交管理決策功能,未提交的問題備案留待后用。
④實(shí)時解決可以解決處理的問題,以防止系統(tǒng)功能的衰退,對于需要修改軟件的重大問題統(tǒng)一備案并提交變更管理功能。
(4)變更管理功能
通過控制和對變更需求排定優(yōu)先次序來管理可用性和完備性。管理功能處理用戶提出的變更需求,以及外部事件驅(qū)動的變更需求。在該過程中,最好使用軟件技術(shù)狀態(tài)管理來監(jiān)控和管理軟件的狀態(tài),來自軍方、工業(yè)部門的專家對軟件修改進(jìn)行評估,對需要修改的軟件授權(quán)并予以修改。
(5)軟件修改功能
軟件修改負(fù)責(zé)實(shí)施已批準(zhǔn)的變更需求。此外,還應(yīng)同變更管理功能進(jìn)行及時的溝通,并反饋實(shí)際的實(shí)施能力已便于管理機(jī)構(gòu)做出準(zhǔn)確的評估。對于實(shí)施軟件修改的機(jī)構(gòu)可以使軍方,也可以是工業(yè)部門,或是兩者的聯(lián)合工作組。
(6)驗(yàn)證及發(fā)布
驗(yàn)證及發(fā)布功能負(fù)責(zé)保證軟件的變更需求得以滿足,并保證軟件安全可用。應(yīng)負(fù)責(zé)制定安全實(shí)例,并提供可靠的耐飛性證明,驗(yàn)證及發(fā)布是一個迭代的過程,貫穿軟件開發(fā)和修改的全過程。在軟件的不同階段要收集測試數(shù)據(jù)和證據(jù),并保證軟件變更需求和安全性都可以滿足。
(7)數(shù)據(jù)保障功能
數(shù)據(jù)保障涉及信息、任務(wù)和工程相關(guān)數(shù)據(jù),軟件的上傳和下載數(shù)據(jù)。數(shù)據(jù)保障活動涵蓋需要創(chuàng)造、保持、修改、分析和發(fā)布數(shù)據(jù)的活動,任務(wù)和工程數(shù)據(jù)包括:
①電子對抗和職能數(shù)據(jù);
②地圖和氣象數(shù)據(jù);
③發(fā)動機(jī)、疲勞和部件使用數(shù)據(jù);
④武器和傳感器信息數(shù)據(jù);
⑤功能故障和故障數(shù)據(jù)。
在傳統(tǒng)的裝備綜合保障中,可通過LSA(保障性分析)確定故障模式和影響、修理級別、維修任務(wù)、壽命周期費(fèi)用等方面的內(nèi)容,保障性分析是綜合保障的所有合理高效的保障活動的源泉,是一切技術(shù)資料的輸入,是裝備可靠性、維修性和測試性設(shè)計的有效反饋的數(shù)據(jù)來源,因此保障性分析是綜合保障的核心和靈魂。軟件與硬件系統(tǒng)的保障思路基本相似,因此軟件保障性分析是軟件保障的核心。通過軟件保障性分析可以得出軟件保障的思路和保障方案,實(shí)施軟件保障的初衷在于減少裝備的使用費(fèi)用,提高裝備的經(jīng)濟(jì)可承受性,一個軟件保障方案的好與壞最終反映在保障費(fèi)用是否最小化,而軟件保障費(fèi)用評估是評價軟件保障是否合理的基準(zhǔn)。因此在軟件保障中,軟件保障性分析和軟件保障費(fèi)用評估是關(guān)鍵技術(shù)之一。
軟件保障的核心是軟件保障性分析(SSA)。軟件保障性分析目的是確定軟件保障的可能要求,以及影響軟件保障的約束,并確定能提高系統(tǒng)可用性和保障性的軟件要求,以此形成適用的軟件保障方案。SSA包含需求分析和過程建模[4]兩項(xiàng)主要的活動。
軟件保障性分析是貫穿軟件產(chǎn)品全壽命周期的一項(xiàng)分析活動,在不同的生命周期階段實(shí)施不同的分析任務(wù),依據(jù)階段的不同,分析任務(wù)的重要性有所增減,如圖2所示。如在設(shè)計和開發(fā)階段,通過實(shí)施SSA,得出加載、服務(wù)或修改軟件等相關(guān)的保障性需求,以此確定保障觸發(fā)因素,借鑒FMEA,確定軟件設(shè)計過程中導(dǎo)致系統(tǒng)故障的功能故障模型,并以此影響軟件架構(gòu)和軟件設(shè)計。在早期的概念階段,通過SSA可以得出基本的軟件保障需求。在服役期,適用于硬件的方方面面同樣對軟件有效。不同階段不同范圍內(nèi)的軟件修改,需要反復(fù)的進(jìn)行SSA/ILS分析,每次分析的深度也不盡相同。所要執(zhí)行的活動同設(shè)計和開發(fā)階段及生產(chǎn)和推廣階段基本相同,但略有擴(kuò)展。報廢階段,對數(shù)據(jù)的處理很重要。報廢硬件時,細(xì)心的處理相應(yīng)的軟件和數(shù)據(jù),敏感數(shù)據(jù)須從報廢硬件上擦除(如在軍事環(huán)境下)。為了存檔,須對廢置硬件中的已有數(shù)據(jù)加以保護(hù)。若現(xiàn)有數(shù)據(jù)需要在新系統(tǒng)中使用,須分析數(shù)據(jù)移植的可能性,并確定數(shù)據(jù)移植的方案。
圖2 不同工程階段的軟件保障性分析活動[5]
在軟件的全壽命周期內(nèi),由于未來變更的種類和范圍的不可預(yù)知性,外加預(yù)算的不確定性給保障費(fèi)用的評估帶來了很大的挑戰(zhàn)。多種軟件評估模型都對軟件保障費(fèi)用進(jìn)行了評估,但是不同的模型之間,軟件保障活動的類型差異度較大。如大多數(shù)基于參數(shù)的軟件保障評估模型都對后續(xù)的工程和保障需求進(jìn)行了粗略估計,但在工程實(shí)踐中實(shí)際的用處并不大,其仍在發(fā)展中。
近年來,隨著裝備綜合保障工作的不斷推進(jìn),國內(nèi)相繼制定了一系列的裝備保障標(biāo)準(zhǔn),軟件保障也剛剛起步,從軟件的固有特性著手,從軟件保障的內(nèi)涵、軟件保障模型和軟件保障費(fèi)用評估等方面進(jìn)行了探討。在后繼工作中將繼續(xù)圍繞著軟件保障的重點(diǎn)——軟件保障性分析,開展軟件采辦措施、軟件保障性分析過程和軟件保障模式的相關(guān)研究。并在工程中積極實(shí)踐,為復(fù)雜的軟件密集型裝備的保障提供科學(xué)依據(jù)和指南。
[1]SAE JA 1004.Software Supportability Program Standard[S].
[2]劉世軍.裝備軟件保障技術(shù)研究[J].中國電子科學(xué)研究院學(xué)報,2008,3(6):639-943.
[3]COOPER LB.Is Partnered Software Support appropriate for Military Aerospace Platforms[D].British:University of Oxford Kellogg College,2007:1-18.
[4]DEF STAN 00-60(Part 3).Integrated Logistic Support Part3:Guidance for Application of Software Support[S].
[5]ASD S3000L.International Procedure Specification for Logistics Support Analysis[S].