張望成,張 俊,羅海鷹,周平平
(航空工業洪都,江西 南昌,330024)
機載設備軟件一般是指在高實時性嵌入式平臺上運行,用于實現信號處理、數據解算、數據融合、數據交換、時序控制、系統校準、系統自檢等功能的軟件。這類軟件開發具有以下一些共性特點:軟件規模一般比地面設備軟件規模小;實時性和可靠性要求高;軟件需求不易一次到位;軟件項目研制時間周期緊。從表面上看,規模較小的軟件相對容易開發成功,使人們往往忽視了機載設備軟件的開發風險。其實機載設備軟件的共性特點恰恰透露出機載設備軟件開發可能存在的巨大風險。例如多數機載設備軟件代碼在3萬行以內,參與開發和管理人員配置少,軟件開發過程可能缺乏足夠的監管和測量分析,造成了項目管理進程缺乏統一性和技術可重復性;軟件開發周期緊往往導致驗證不充分,一些隱藏問題無法暴露,造成軟件的可靠性降低;需求的不穩定性,導致工作進度拖延,計劃得不到保證,管理效率低下,從而影響整個軟件的研發工作。
如何應對這些風險呢?根據現有掌握的資料看,與國外同類軟件開發水平相比,我國的機載設備軟件產品開發水平差距較大,因此急需要采用一套科學的工程化方法對機載設備軟件風險進行分析和管理。近些年來,軟件理論界和產業界開始重視軟件的風險管理,并產生了一系列的風險管理過程模型,這些模型所定義的規范對管控軟件風險能夠發揮有效的指導作用。如Charette模型-該模型設計的風險分析和管理的體系分為兩大階段,分別為分析階段和管理階段,這是一個相互重疊和循環的模型;CRM持續風險管理模型-將風險管理劃分為五個步驟:風險識別、分析、計劃、跟蹤、控制。它強調的是對風險管理的各個組成部分的溝通;IEEE風險管理標準-定義了軟件開發生命周期中的風險管理過程。包括以下活動:計劃并實施風險管理、管理項目風險列表、分析風險、監控風險、處理風險、評估風險管理過程;CMMI(集成能力成熟度模型)的風險管理模型-其核心思想在融合上述風險管理模型的基礎上還提出了“風險管理數據庫”的概念。
《國家軍用軟件研制能力成熟度模型(GJB5000A)》規定了軟件研制和維護活動中的主要管理過程和工程過程實踐,其“風險管理過程域”正是基于CMMI風險管理模型所建立的一個獨立的關鍵過程域,使“在過程中進行風險管理”的原則得以真正體現[1]。風險管理過程域包括三個特定目標(SG):進行風險管理準備、識別并分析風險、處理風險,每個目標的實現通過一系列的特定實踐來完成,詳細見表1[2]。

表1 CMMI 3級過程域:風險管理
通過圖1的GJB5000A風險管理過程域模型可以看出,基于CMMI的GJB5000A風險管理過程域模型對軟件風險管理過程作了定義,主要包括確定風險來源和類別、風險參數定義、制定并維護風險管理策略、風險識別及評估、風險跟蹤及控制和風險管理產品的提交等,目的是在風險產生危害之前識別出來,從而有計劃地消除或削弱風險。在項目的生命周期內,循環地執行風險識別分析、減緩跟蹤,直到項目的所有風險都被識別與解決為止[3]。

圖1 GJB5000A風險管理過程域模型
我們在GJB5000A實施過程中逐漸摸索和總結出一些適合機載設備軟件風險管理的方法。首先將風險管理看作是一個迭代的過程,風險管理貫穿于項目的全生命周期,項目組所有成員對風險管理都負有責任。其次做好項目風險的策劃,為了管理項目可能存在的風險,在進行項目策劃時需要根據歷史項目所積累的經驗和當前項目的情況進行風險識別和評估,并制訂風險管理計劃。風險管理計劃作為機載設備軟件開發計劃的一部分進行描述。然后依照風險策劃依次開展風險識別、風險評估、制定風險緩解和應急措施、跟蹤和管理風險等活動。
軟件風險識別是對軟件研發的各個方面,特別是對關鍵技術攻關、項目管理、經費控制等方面進行考察研究,從而確定可能影響項目得以實現的事件或情況[4]。對于機載設備軟件的風險識別主要是參照單位資產庫提供的風險信息,分析項目或單位內部造成風險的基本因素,確定項目風險源和風險類別,特別要分析有無項目特有風險源,軟件項目負責人將識別出的風險記錄到項目風險列表中。我們根據機載設備軟件特點將風險源分為項目組內、單位內部和客戶3種,將風險類別分為需求風險、設計和實現風險、計劃編制相關風險、管理風險、人員風險、開發環境風險、客戶風險、過程風險、產品風險9類。
風險評價是指用具體的方法評價具體的風險,能否有效降低不確定性是指導這一過程的主要標準。根據風險理論基本定義,風險不是一個數字,也不是一條曲線或向量,而是一個三元組的完備集,即Risk={
在機載設備軟件風險評估時,我們根據發生概率、風險影響、風險緊迫度,對每一風險做出評估,而項目組內的風險可以根據經驗和相似項目或項目單元參照獲得不確定性的概率和影響程度。同時分析各階段風險的特點,建立其風險評價指標體系并識別出適用的評價方法,包括非正式的推測、數理模型和實踐經驗。
2.2.1 風險發生概率
風險發生概率使用極高、高、中、低、極低五級進行評估,可以參考概率估計表(見表2)估算風險發生的可能性,其中最后一列得分用于計算風險值。

表2 風險發生概率對應分值
2.2.2 風險影響
風險發生的影響可以從成本、進度、用戶滿意度幾個方面來考慮,在有度量數據支持決策的情況下,可以用量化的費用和時間等指標來描述。在通常情況下,可以使用極高、高、中、低、極低五級進行綜合評估。用于評價的評價表如表3,最后一列得分仍然用于計算風險值。

表3 風險影響對應分值
2.2.3 風險緊迫度
風險緊迫度是將風險發生的緊迫度通過時間進行量化,分為緊急、較急、一般、較緩慢四個級別進行預測,得出的最后一列分值仍然用于計算風險值。

表4 風險緊迫度對應分值
對于已識別的風險,軟件項目組根據風險評估結果,參照單位資產庫和《常見風險和措施表》制定風險緩解和應急措施來避免、控制、轉移、監督或接受風險,將記錄納入到《項目風險列表》中。機載設備軟件風險緩解策略包括以下幾種:
1)風險規避:改變或降低要求,但仍然滿足用戶要求。
2)風險控制:采取積極步驟,轉移風險或接受風險。
3)風險轉移:重新分配需求,以緩解風險,將風險轉移其他機構、組織或人員。
4)風險接受:認可風險,但是不采取措施或當風險出現時把它當作問題處理,不再花費額外的資源來管理。
根據嵌入式機載設備軟件開發特點,我們采取的風險應急措施方式已經納入了組織資產庫。如對于需求變更導致開發工作量增大無法預期交付軟件的風險,可采取的應急措施有增加人員、調整人員結構、合理安排加班等;對于硬件資源無法按時到位的風險,可采取的應急措施有調整計劃,優先安排與硬件資源無關的軟件開發活動,采用其他類似硬件替代資源等。
根據帕累托80%原理,項目所有風險中只有小部分對項目威脅較大。由于每個項目的資源都是有限的,所以風險管理(處理、減緩、監視和控制)必須把精力集中在最重要的風險子集上。使用以下方法確定需管理的風險項:
1)所有風險均納入項目風險列表管理。風險根據風險的優先級進行排序,風險的優先級是按照風險對項目的發生概率、影響程度和緊迫度來確定的,風險的值越大,則風險的優先級越高。風險值=發生概率×風險影響×風險緊迫度;
2)風險值小于等于18且所有單項風險參數小于3為低風險,大于18或者某個單項風險參數大于等于3且小于等于60為中風險,大于60為高風險;
3)對于高風險,項目組執行風險緩解策略并制定應急計劃;對于中風險,項目組啟動緩解計劃,采取緩解措施;對于低風險,風險監控,制定風險緩解計劃。
在風險跟蹤時,需確定和標識風險的狀態。風險的狀態包括跟蹤、關閉,按照下面的方法確定和標識風險的狀態:
1)跟蹤狀態指風險處于項目組的監控下并按照風險管理規程進行處理;
2)關閉狀態指風險已經解決不需要跟蹤或者不會再發生,對于這類風險應該將發生概率、風險影響、風險緊迫度設置為0。
軟件風險管理正越來越廣泛地被應用,因為它被證明能夠在風險變為問題之前得到有效的識別和消除”[6]。隨著機載設備信息化和智能化程度不斷提升,機載設備軟件的規模和復雜度也越來越高,伴隨著各種不確定性因素的產生,軍用軟件項目的風險也不斷增大。按照GJB5000A標準要求,在軟件生命周期內有效控制和管理風險,遵循風險管理原則,根據風險狀態,啟動相應的緩解或應急措施,并確保措施成功實施,是提升軍用軟件質量的有效途徑。