摘要:在眾多軟件質量指標中,軟件缺陷是最為直觀和最為重要的指標,因此,對軟件缺陷的評估是軟件質量控制的一種很好方法。文章將軟件缺陷作為軟件質量的評估指標,引入軟件項目風險管理手段,以影響軟件缺陷的風險因素為切入點,全面綜合軟件開發組織和技術方面因素,將軟件開發過程中各種風險因素納入軟件缺陷評估體系。
關鍵詞:軟件質量;軟件缺陷;軟件風險管理;評估
0 引言
軟件質量可以通過一系列度量指標來描述。軟件質量的關鍵度量指標大致可以歸結為5個:客戶滿意度、產品價值、關鍵屬性、缺陷率、開發過程質量。高質量的軟件應具備的屬性有:外部屬性,它包括產品的正確性和精確性、可用性、運行效率、可靠性、健壯性及適應性;內部屬性,它包括可維護性、易擴展性、平臺靈活性、可復用性、易測試性、代碼可讀性和整體理解性。軟件質量重點強調滿足:軟件需求、具體標準和隱含需求。
目前軟件質量保證體系已比較成熟,當代世界關于軟件質量保證體系存在三個流派:CMM/PSP/TSP、ISO 9000系列和ISO/IEC 15504(sPICE)。其中以美國國防部支持的CMM/PSP/TSP流派研究得最為深入,使用得最為廣泛。 在軟件缺陷分析和預測方面,人們進行了大量的研究,開發出一些軟件缺陷預測模型。這些模型大致分兩類:一類是在軟件開發的測試階段,根據歷史數據預測軟件缺陷。另一類是在軟件開發之前,通過對以往項目的缺陷進行分析,預測在軟件開發中會出現的缺陷數。這些模型大多可以用于軟件開發過程中的質量控制。
1 軟件缺陷風險識別框架
軟件生命周期是軟件項目開發的重要階段劃分,風險管理的實踐通常都是與其結合進行的。本論文按軟件項目生命周期進行分階段風險因素識別,通過文獻總結和軟件項目從業人員的經驗總結獲取有價值的風險因素。
為了更好地了解基于軟件項目風險分類的風險因素識別方法,下面來看看軟件開發項目風險結構圖(如圖1所示)。圖中將風險歸到三個方面:軟件項目生命周期過程、項目內部環境和項目外部環境。事實上,在軟件項目進展的過程中,項目的內外部環境中的風險因素始終威脅著項目,這些內外部風險因素隨著軟件項目的進展在不斷演化,不斷影響著項目的產出結果。軟件項目的管理技術將項目團隊置于項目環境之中,正是項目的環境、項目的管理技術和項目團隊影響著整個項目的進展。項目的環境就是項目特性,它包含了項目的本身需求因素、項目的內外部因素等;項目管理包含了項目的管理思想和管理技術;項目團隊包括了項目的技術人員和項目的管理人員。
項目特性、項目管理和項目團隊三者互相影響,當然項目管理是其他兩者的重要紐帶,它是三者關系的重要推力。緊密結合的三者又在項目的進展中不斷變化各自的影響力,互相均衡影響力來推動項目的進展。
在一個軟件項目當中,項目管理人員和項目技術人員是可以在建設階段中熟知一部分風險的,只是在項目組織上無法通過溝通合作對風險形成一致的認識以實現共同抵御風險。在項目建設過程中,持續的風險評估對于風險管理有著重要意義,這就要求風險評估應當跟隨項目進展,應當經歷項目建設的每一個階段,并對項目建設過程中變化的環境因素進行持續的風險評估。為了更好地有效地進行持續的風險評估就需要一個結構化的風險評估方法,而且應將風險評估工作放置在一個開放的環境之中。在項目團隊中要形成一種認識,為了取得項目建設的成功并非需要控制所有的風險。
2 軟件缺陷風險評估模型
項目環境和項目需求是項目最典型的特性。在整個項目的進展過程中,項目團隊、項目管理和項目特性始終影響各階段的遞進。軟件缺陷的評估可以放在需求階段、設計編碼階段和測試階段進行,軟件開發在不同階段都會有項目團隊的參與,項目團隊的工作能力和效率將直接影響著各個階段的項目產出,為了減少各個階段對項目團隊工作能力的評估工作量,可以對項目團隊工作能力單獨評估,而且在其他評估之前進行。
2.1 風險模型構造
軟件缺陷的風險識別是按照軟件生命周期的階段分類進行的,若將各階段的風險因素置于同一個網絡模型中,那么這個模型無論是它的復雜度還是數據存儲空間都會制約著風險模型的評估效率。因此,將風險模型按照軟件生命周期各階段進行分類,每類之間按照階段遞進方式進行參數傳遞,這種分階段評估模型可以提高風險評估的效率。

需求階段產生的需求錯誤和需求變更經過需求檢測和新需求匹配性審核后進入下一個階段;設計編碼階段接受檢測后的需求錯誤、需求分析文檔和新需求匹配性審核,輸出編碼錯誤和設計文檔進入測試階段;測試階段接受設計編碼階段的輸出和用戶方試用的效果共同影響項目的缺陷率;項目團隊工作能力的評估是貫穿三個階段進行的,它的輸出:進度壓力、管理者工作能力和技術人員工作能力,這些都作為三個階段的評估輸入。從圖2可以看到各階段風險模型的輸入和輸出、模型之間的聯系因素等。分階段模型一旦建立就可以在軟件開發過程中關鍵時刻設立預測點,從而對整個開發過程進行有效的管理。
2.2 團隊工作能力評估
團隊工作能力評估主要從管理者和技術人員之間的溝通以及項目管理的計劃和分工水平,更為具體點就是項目客戶代表的工作能力、項目經理的資質、項目成員的技術水準、員工之間的溝通機制、項目管理人員的計劃分工能力和項目團隊的人才管理能力。
圖3描述團隊工作能力的風險模型。圖中給出了設計階段相關因素對設計質量的影響圖,這些因素包括階段進度、開發人員工作能力、采用的技術、管理者工作能力。在軟件開發其他階段都有類似的影響結構圖,并且進一步細化了項目管理人員工作能力的評估、項目技術人員工作能力的評估和整個項目進度的評估。
3 軟件缺陷評估工具
評估工具的應用能夠讓項目經理了解到項目目前的管理水平和風險威脅,并根據評估通過有效的管理控制措施來提高項目的成功率。評估工具的核心就是圖4中的四個風險模型,這四個風險模型分別描述了項目不同階段的風險因素之間影響關系。
3.1 評估工具總體結構
項目經理可以通過評估工具的風險簡要表向評估系統提供項目的目前基本信息,經過項目團隊工作能力的評估之后,可以分別進入不同階段的風險評估。當然,不同的階段評估將需要管理者提供不同的當前項目基本信息。 評估工具目前可以提供三類評估:第一類是全程預測,即軟件開發需求分析前期,對開發質量的整體評估:按照圖4,首先進行團隊工作能力的評估,接著進行需求階段的評估,然后是設計編碼階段評估,最后是測試階段評估,整個評估路線就是①→④→⑤。第二類是需求后階段評估,即需求分析階段之后的設計編碼和測試階段評估。在這一類評估之前必須要了解項目在需求階段的產出,包括需求階段引入的缺陷和需求變更的評估。評估的步驟是,按照圖4,首先進行團隊工作能力的評估,接著進入設計編碼階段評估,最后進行測試階段評估,整個評估路線就是②→⑤。第三類是測試階段評估。在這類評估之前必須要了解項目在需求階段和設計編碼階段的產出,包括需求分析質量、設計文檔質量和編碼階段引入的缺陷的評估。其步驟是,按照圖4,首先進行團隊工作能力的評估,接著直接進入測試階段評估,整個評估路線就是圖中的③號路線。
3.2 數據流圖
評估流程只是說明了評估工具應用的場合,而評估工具的數據流圖可以進一步解釋評估工具的輸入和輸出,為具體應用提供更明確的數據操作流程。
在評估工具的數據流圖中,項目經理首先需要選擇軟件生命周期中的評估階段,接著進入評估工具的輸入狀態,完成相應的風險因素的評估,然后進入評估工具的整個評估路線,最后得到軟件缺陷的風險狀態和其他風險的狀態值。這些狀態信息可以作為項目經理進行風險管理的可靠依據。
4 結束語
軟件缺陷數目是軟件可靠性的重要度量指標,而軟件可靠性是衡量軟件質量的最重要因素。為項目管理提供重要的風險信息,對軟件缺陷進行合理、正確的評估已經成為項目管理的首要任務。軟件項目的風險管理是軟件項目管理的重要工作,能否很好地解決這些問題將直接影響到軟件項目風險管理的有效性,同時也影響到軟件開發的質量和軟件項目的完成。