◎北京航天發(fā)射技術(shù)研究所 康冰 孫謙 衛(wèi)瑞 張利娜 蘇娟
淺談軟件風(fēng)險(xiǎn)知識(shí)庫(kù)建設(shè)
◎北京航天發(fā)射技術(shù)研究所 康冰 孫謙 衛(wèi)瑞 張利娜 蘇娟
隨著航天型號(hào)向信息化、集成化、智能化方向發(fā)展,航天軟件已經(jīng)成為航天型號(hào)研制必不可少的組成部分,直接關(guān)系到型號(hào)飛行試驗(yàn)的成敗。近年來(lái),通過(guò)對(duì)國(guó)內(nèi)外航天型號(hào)研制過(guò)程中的994個(gè)技術(shù)風(fēng)險(xiǎn)案例進(jìn)行統(tǒng)計(jì)分析,結(jié)果顯示其中設(shè)計(jì)類風(fēng)險(xiǎn)461個(gè)(占比46.4%),為排序第一的風(fēng)險(xiǎn)類別,而設(shè)計(jì)類風(fēng)險(xiǎn)中與軟件研制相關(guān)的技術(shù)風(fēng)險(xiǎn)共58個(gè),占設(shè)計(jì)類風(fēng)險(xiǎn)的12.6%。由此可見,航天軟件研制帶來(lái)的風(fēng)險(xiǎn)不容忽視。
航天軟件風(fēng)險(xiǎn)管理作為航天工程技術(shù)風(fēng)險(xiǎn)管理的重要組成部分,對(duì)于確保航天軟件質(zhì)量具有重要意義。建立一套航天軟件風(fēng)險(xiǎn)知識(shí)庫(kù)體系,有效管理相關(guān)知識(shí),并將相關(guān)知識(shí)在軟件開發(fā)團(tuán)隊(duì)中高效傳遞,使航天軟件風(fēng)險(xiǎn)得到全面識(shí)別與有效控制,是知識(shí)管理中的一項(xiàng)重要課題。
航天軟件具有規(guī)模大、功能復(fù)雜、不易驗(yàn)證等特點(diǎn)。在軟件研制與管理過(guò)程中,易產(chǎn)生各種不確定的事件,給軟件產(chǎn)品乃至系統(tǒng)型號(hào)帶來(lái)危害或損失。為確保軟件產(chǎn)品質(zhì)量,需在軟件研制過(guò)程中開展軟件風(fēng)險(xiǎn)管理工作,從軟件項(xiàng)目研制初期開始識(shí)別技術(shù)風(fēng)險(xiǎn)、分析技術(shù)風(fēng)險(xiǎn)、采取技術(shù)風(fēng)險(xiǎn)應(yīng)對(duì)措施,以此開展技術(shù)風(fēng)險(xiǎn)驗(yàn)證活動(dòng)。
軟件風(fēng)險(xiǎn)知識(shí)庫(kù)的建立應(yīng)綜合考慮軟件研制特點(diǎn)和軟件風(fēng)險(xiǎn)管理需求,采用系統(tǒng)工程學(xué)的霍爾三維結(jié)構(gòu),建立基于軟件生命周期的分層次立體結(jié)構(gòu)風(fēng)險(xiǎn)知識(shí)庫(kù)體系,概括地表示風(fēng)險(xiǎn)管理不同階段、不同步驟以及涉及的專業(yè)知識(shí)。
1.時(shí)間維
對(duì)于一個(gè)具體的項(xiàng)目,霍爾三維系統(tǒng)結(jié)構(gòu)包括:規(guī)劃、方案、研制、生產(chǎn)、安裝、運(yùn)行和更新7個(gè)時(shí)間階段。軟件風(fēng)險(xiǎn)管理的時(shí)間維度包含霍爾三維系統(tǒng)結(jié)構(gòu)的7個(gè)階段,并以軟件生存周期模型為主線,重新劃分為系統(tǒng)需求分析階段、軟件需求分析階段、軟件設(shè)計(jì)階段、軟件代碼實(shí)現(xiàn)階段、軟件測(cè)試階段、驗(yàn)收交付階段和運(yùn)行維護(hù)階段。
2.邏輯維
軟件風(fēng)險(xiǎn)管理的邏輯維包括識(shí)別技術(shù)風(fēng)險(xiǎn)以確定風(fēng)險(xiǎn)控制的目標(biāo),綜合分析風(fēng)險(xiǎn)的概率、影響及可能產(chǎn)生的后果,以確定風(fēng)險(xiǎn)應(yīng)對(duì)方案、監(jiān)控風(fēng)險(xiǎn)應(yīng)對(duì)方案的實(shí)施過(guò)程、驗(yàn)證和評(píng)估風(fēng)險(xiǎn)應(yīng)對(duì)方案的實(shí)施效果。
我國(guó)航天工程技術(shù)風(fēng)險(xiǎn)管理定義的風(fēng)險(xiǎn)管理過(guò)程如圖1所示。在軟件生存周期模型的每一個(gè)階段不斷重復(fù)運(yùn)用這一閉環(huán)過(guò)程,持續(xù)優(yōu)化改進(jìn)風(fēng)險(xiǎn)應(yīng)對(duì)方案,不斷減少和降低技術(shù)風(fēng)險(xiǎn)對(duì)軟件及軟件研制過(guò)程的不良影響,逐步達(dá)到風(fēng)險(xiǎn)管控目標(biāo)。
3.知識(shí)維
知識(shí)維度包含軟件技術(shù)風(fēng)險(xiǎn)從系統(tǒng)需求分析到運(yùn)行維護(hù)的全部軟件生命周期的時(shí)間維度,也包含從風(fēng)險(xiǎn)識(shí)別到風(fēng)險(xiǎn)驗(yàn)證的風(fēng)險(xiǎn)管理各個(gè)步驟的邏輯維度,是時(shí)間維和邏輯維所需要知識(shí)的綜合。
知識(shí)管理將知識(shí)分為顯性和隱性知識(shí),而風(fēng)險(xiǎn)也同樣具有顯性和隱性特征。顯性風(fēng)險(xiǎn)是可見的、發(fā)生過(guò)的、可預(yù)知的風(fēng)險(xiǎn);隱性風(fēng)險(xiǎn)是可能正在發(fā)生但未識(shí)別到且尚未顯現(xiàn)出危害結(jié)果的風(fēng)險(xiǎn)。由于隱性風(fēng)險(xiǎn)的隱蔽性,此類風(fēng)險(xiǎn)往往對(duì)軟件研制質(zhì)量和系統(tǒng)型號(hào)的危害巨大。
通過(guò)掌握隱性知識(shí)外顯化方法進(jìn)行技術(shù)風(fēng)險(xiǎn)識(shí)別和分析,完成風(fēng)險(xiǎn)知識(shí)的搜集、整理、儲(chǔ)存、檢索、重組、應(yīng)用和創(chuàng)新,不斷豐富組織的風(fēng)險(xiǎn)知識(shí)庫(kù),達(dá)到隱性風(fēng)險(xiǎn)的外顯化,并將相關(guān)知識(shí)在開發(fā)團(tuán)隊(duì)中高效傳遞,使航天軟件風(fēng)險(xiǎn)得到全面識(shí)別、有效控制。
1.軟件風(fēng)險(xiǎn)識(shí)別
軟件技術(shù)風(fēng)險(xiǎn)識(shí)別是找出風(fēng)險(xiǎn)及其產(chǎn)生的主要原因即風(fēng)險(xiǎn)源,是辨識(shí)和確定潛在的技術(shù)風(fēng)險(xiǎn)的過(guò)程。風(fēng)險(xiǎn)源可分為通用風(fēng)險(xiǎn)源和特定風(fēng)險(xiǎn)源2類。風(fēng)險(xiǎn)知識(shí)庫(kù)給出的軟件通用風(fēng)險(xiǎn)源的樹狀結(jié)構(gòu)圖如圖2所示。
識(shí)別特定風(fēng)險(xiǎn)源可以借助多種方法。軟件風(fēng)險(xiǎn)知識(shí)庫(kù)提供了初步危險(xiǎn)分析法、故障模式影響及危害性分析法、風(fēng)險(xiǎn)樹分析法、歷史記錄統(tǒng)計(jì)法、頭腦風(fēng)暴法等多種識(shí)別技術(shù),分析風(fēng)險(xiǎn)發(fā)生的主要因素,識(shí)別引起項(xiàng)目失敗的特定風(fēng)險(xiǎn)源。
2.軟件風(fēng)險(xiǎn)分析
軟件技術(shù)風(fēng)險(xiǎn)分析是在技術(shù)風(fēng)險(xiǎn)識(shí)別的基礎(chǔ)上,對(duì)軟件風(fēng)險(xiǎn)可能產(chǎn)生的影響進(jìn)行定性或者定量分析的過(guò)程。風(fēng)險(xiǎn)分析的方法有很多種,航天軟件風(fēng)險(xiǎn)管理分析方法考慮了風(fēng)險(xiǎn)的發(fā)生概率和影響程度這2個(gè)因素。首先,估計(jì)風(fēng)險(xiǎn)發(fā)生概率和風(fēng)險(xiǎn)影響,然后依據(jù)發(fā)生概率和影響程度確定每項(xiàng)風(fēng)險(xiǎn)的風(fēng)險(xiǎn)值, 最后根據(jù)風(fēng)險(xiǎn)值進(jìn)行排序分析和風(fēng)險(xiǎn)評(píng)估。
由于工作環(huán)境和功能要求的特殊性,航天軟件具有安全性與可靠性要求高、規(guī)模大與結(jié)構(gòu)復(fù)雜、強(qiáng)實(shí)時(shí)性嵌入式為主、環(huán)境苛刻、自研為主等特點(diǎn)。因此,許多技術(shù)風(fēng)險(xiǎn)的數(shù)據(jù)需要依靠主觀估計(jì)給出,不能完全進(jìn)行定量分析。盡管如此,技術(shù)風(fēng)險(xiǎn)度量還是經(jīng)常會(huì)使用統(tǒng)計(jì)學(xué)、概率學(xué)等多種方法。在進(jìn)行風(fēng)險(xiǎn)嚴(yán)重性分析時(shí),可以采用風(fēng)險(xiǎn)圖、風(fēng)險(xiǎn)矩陣等分析方法,這2種方法都是定性和定量相結(jié)合的風(fēng)險(xiǎn)分析方法,在項(xiàng)目風(fēng)險(xiǎn)分析與評(píng)價(jià)中得到廣泛應(yīng)用。
3.軟件風(fēng)險(xiǎn)應(yīng)對(duì)
技術(shù)風(fēng)險(xiǎn)應(yīng)對(duì)是為了減少和降低技術(shù)風(fēng)險(xiǎn)對(duì)軟件質(zhì)量及系統(tǒng)型號(hào)的不良影響,達(dá)到風(fēng)險(xiǎn)控制目標(biāo)所采取的風(fēng)險(xiǎn)控制措施。風(fēng)險(xiǎn)應(yīng)對(duì)方案是針對(duì)已識(shí)別的具體風(fēng)險(xiǎn),根據(jù)不同的風(fēng)險(xiǎn)嚴(yán)重程度選取不同的風(fēng)險(xiǎn)應(yīng)對(duì)策略,制定緩解措施、應(yīng)急預(yù)案,形成風(fēng)險(xiǎn)應(yīng)對(duì)計(jì)劃并實(shí)施。常用的軟件風(fēng)險(xiǎn)應(yīng)對(duì)策略包括風(fēng)險(xiǎn)規(guī)避、風(fēng)險(xiǎn)控制、風(fēng)險(xiǎn)轉(zhuǎn)移、風(fēng)險(xiǎn)接受。
4.軟件風(fēng)險(xiǎn)驗(yàn)證
選用合適的風(fēng)險(xiǎn)驗(yàn)證方法,不僅要對(duì)風(fēng)險(xiǎn)應(yīng)對(duì)措施進(jìn)行驗(yàn)證,而且需要對(duì)風(fēng)險(xiǎn)管理效果進(jìn)識(shí)別的風(fēng)險(xiǎn),分析和歸納典型案例,為軟件設(shè)計(jì)者提供風(fēng)險(xiǎn)識(shí)別、分析、應(yīng)對(duì)、驗(yàn)證實(shí)例經(jīng)驗(yàn),以便更好的利用知識(shí)管理理論推動(dòng)風(fēng)險(xiǎn)管理,達(dá)到技術(shù)風(fēng)險(xiǎn)管控目標(biāo)。軟件風(fēng)險(xiǎn)管理典型案例示例見表1。對(duì)計(jì)劃并監(jiān)控實(shí)施情況;在軟件研制過(guò)程中選取評(píng)審、過(guò)程檢查、測(cè)試等不同的驗(yàn)證手段,對(duì)軟件風(fēng)險(xiǎn)應(yīng)對(duì)措施和實(shí)施效果進(jìn)行驗(yàn)證與評(píng)估。
筆者對(duì)軟件風(fēng)險(xiǎn)知識(shí)庫(kù)的時(shí)間維度、邏輯維度、知識(shí)維行評(píng)估。軟件技術(shù)風(fēng)險(xiǎn)驗(yàn)證的方法包括軟件測(cè)試、軟件評(píng)審、試驗(yàn)驗(yàn)證等。其中,軟件測(cè)試包括軟件靜態(tài)分析、單元測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試、第三方測(cè)試等;軟件評(píng)審包括軟件技術(shù)評(píng)審、管理過(guò)程評(píng)審、代碼審查等;試驗(yàn)驗(yàn)證包括綜合試驗(yàn)、仿真試驗(yàn)、匹配試驗(yàn)、出廠試驗(yàn)等,每一種驗(yàn)證手段都包含驗(yàn)證規(guī)范或要求。軟件風(fēng)險(xiǎn)驗(yàn)證是針對(duì)每一項(xiàng)技術(shù)風(fēng)險(xiǎn)選取合適的驗(yàn)證手段,按照驗(yàn)證規(guī)范或要求來(lái)驗(yàn)證技術(shù)風(fēng)險(xiǎn)管控目標(biāo)的實(shí)現(xiàn)效果。
表1 軟件風(fēng)險(xiǎn)管理典型案例示例
軟件風(fēng)險(xiǎn)知識(shí)庫(kù)通過(guò)搜集已
案例1:識(shí)別軟件編程不規(guī)范為通用風(fēng)險(xiǎn)源。風(fēng)險(xiǎn)概率為可能,風(fēng)險(xiǎn)影響為中等,經(jīng)風(fēng)險(xiǎn)值計(jì)算和風(fēng)險(xiǎn)矩陣統(tǒng)計(jì)分析判定風(fēng)險(xiǎn)偏高。在軟件研制初期,確定采取風(fēng)險(xiǎn)控制的應(yīng)對(duì)策略,制定風(fēng)險(xiǎn)應(yīng)對(duì)計(jì)劃并監(jiān)控實(shí)施情況;在軟件研制過(guò)程中選取評(píng)審、過(guò)程監(jiān)控、靜態(tài)分析等不同的驗(yàn)證手段,在不同階段對(duì)軟件風(fēng)險(xiǎn)應(yīng)對(duì)措施和實(shí)施效果進(jìn)行驗(yàn)證與評(píng)估。
案例2:某軟件進(jìn)行初步危險(xiǎn)性分析后,確定其接口設(shè)計(jì)為特定風(fēng)險(xiǎn)源。風(fēng)險(xiǎn)概率為偶然,風(fēng)險(xiǎn)影響為嚴(yán)重,經(jīng)風(fēng)險(xiǎn)值計(jì)算和風(fēng)險(xiǎn)矩陣統(tǒng)計(jì)分析判定風(fēng)險(xiǎn)偏高。在軟件研制初期確定采取風(fēng)險(xiǎn)控制的應(yīng)對(duì)策略,制定風(fēng)險(xiǎn)應(yīng)
度進(jìn)行了研究并探索了軟件風(fēng)險(xiǎn)知識(shí)管理的新模式,在軟件研制能力提升的建設(shè)中得到初步應(yīng)用。在知識(shí)庫(kù)構(gòu)建團(tuán)隊(duì)的努力下,梳理軟件通用風(fēng)險(xiǎn)源15類,形成風(fēng)險(xiǎn)管理案例41個(gè),提供風(fēng)險(xiǎn)管理措施157條,初步形成了貫穿軟件研制流程的風(fēng)險(xiǎn)知識(shí)庫(kù)。風(fēng)險(xiǎn)知識(shí)庫(kù)為航天軟件研制流程中的風(fēng)險(xiǎn)管理提供了顯性知識(shí)平臺(tái)。在軟件項(xiàng)目研制初期,通過(guò)利用知識(shí)庫(kù)的顯性風(fēng)險(xiǎn)知識(shí)可以發(fā)現(xiàn)并控制大部分技術(shù)風(fēng)險(xiǎn);利用多種風(fēng)險(xiǎn)識(shí)別與分析工具和技術(shù),挖掘隱性風(fēng)險(xiǎn)并將其外顯化,可以降低風(fēng)險(xiǎn)可能給軟件質(zhì)量和系統(tǒng)型號(hào)帶來(lái)的危害與損失?!?/p>