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

表1 軟件風險管理典型案例示例
軟件風險知識庫通過搜集已
案例1:識別軟件編程不規范為通用風險源。風險概率為可能,風險影響為中等,經風險值計算和風險矩陣統計分析判定風險偏高。在軟件研制初期,確定采取風險控制的應對策略,制定風險應對計劃并監控實施情況;在軟件研制過程中選取評審、過程監控、靜態分析等不同的驗證手段,在不同階段對軟件風險應對措施和實施效果進行驗證與評估。
案例2:某軟件進行初步危險性分析后,確定其接口設計為特定風險源。風險概率為偶然,風險影響為嚴重,經風險值計算和風險矩陣統計分析判定風險偏高。在軟件研制初期確定采取風險控制的應對策略,制定風險應
度進行了研究并探索了軟件風險知識管理的新模式,在軟件研制能力提升的建設中得到初步應用。在知識庫構建團隊的努力下,梳理軟件通用風險源15類,形成風險管理案例41個,提供風險管理措施157條,初步形成了貫穿軟件研制流程的風險知識庫。風險知識庫為航天軟件研制流程中的風險管理提供了顯性知識平臺。在軟件項目研制初期,通過利用知識庫的顯性風險知識可以發現并控制大部分技術風險;利用多種風險識別與分析工具和技術,挖掘隱性風險并將其外顯化,可以降低風險可能給軟件質量和系統型號帶來的危害與損失。▲