在眾多軟件質量指標中,軟件缺陷是最為直觀和最為重要的指標。因此,通過對軟件缺陷的評估來進行軟件質量控制是一種很好的方法。本文將軟件缺陷作為軟件質量的評估指標,引入軟件項目風險管理手段,以影響軟件缺陷的風險因素為切入點,全面綜合軟件開發組織和技術方面的因素,將軟件開發過程中的各種風險因素納入軟件缺陷評估體系。
軟件質量可以通過一系列度量因素來描述。對軟件質量,我們大致可以總結出5個關鍵度量維度,即客戶滿意度、產品價值、關鍵屬性、缺陷率和開發過程質量。高質量的軟件,應具備外部屬性和內部屬性,其中外部屬性包括產品的正確性和精確性、可用性、運行效率、可靠性、健壯性和適應性;內部屬性包括可維護性、易擴展性、平臺靈活性、可復用性、易測試性、代碼可讀性和整體理解性。軟件質量重點強調軟件需求、具體標準和隱含需求。
目前,人們對軟件質量保證體系的研究已比較成熟。世界上關于軟件質量保證體系存在CMM/PSP/TSP、ISO 9000系列和ISO/IEC 15504(SPICE)三個流派,其中,以美國國防部支持的CMM/PSP/TSP流派研究得最為深入,使用得最為廣泛。
在軟件缺陷分析和預測研究方面,人們進行了大量的研究,開發出一些軟件缺陷預測模型。這些模型大致分為兩類:一類是在軟件開發的測試階段,根據歷史數據預測軟件缺陷;另一類是在軟件開發之前,通過對以往項目的缺陷數據進行分析,預測在軟件開發中會出現的缺陷數,這些模型大多可以用于軟件開發過程中的質量控制。
軟件缺陷風險識別框架
軟件生命周期是軟件項目開發的重要階段劃分,風險管理的實踐通常都是與其結合進行的。本文按軟件項目生命周期進行分階段風險因素識別,通過文獻總結和軟件項目從業人員的經驗總結獲取有價值的風險因素。
為了更好地了解基于軟件項目風險分類的風險因素識別方法,下面來看看軟件開發項目風險結構圖(如圖1所示)。該分類從三個方面分析:軟件項目生命周期過程、項目內部環境和項目外部環境。事實上,在軟件項目進展的過程中,項目的內外部環境中的風險因素始終威脅著項目,這些內外部因素隨著軟件項目的進展在不斷演化,不斷影響著項目的產出結果。軟件項目的管理技術將項目團隊置于項目環境之中,正是項目的環境、項目的管理技術和項目團隊影響著整個項目的進展。項目的環境就是項目特性,它包含了項目的本身需求因素、項目的內外部因素等;項目管理包含了項目的管理思想和管理技術;項目團隊包括了項目的技術人員和項目的管理人員。

項目特性、項目管理和項目團隊三者之間,其實是互相影響的關系。當然,項目管理是其他兩者的重要紐帶,是三者關系的重要推力。緊密結合的三者又在項目的進展中不斷改變各自的影響力,互相均衡自己的影響力來推動項目的進展。
在一個軟件項目當中,項目管理人員和項目技術人員是可以在建設階段中熟知一部分風險的,只是從項目組織上無法通過溝通合作對風險形成一致的認識以實現共同抵御風險;在項目建設過程中,持續的風險評估對于風險管理有著重要意義,這就要求風險評估應當跟隨項目進展,應當經歷項目建設的每一個階段,并對項目建設過程中變化的環境因素進行持續的風險評估;為了更有效地進行持續的風險評估,就需要一個結構化的風險評估方法,而且應將風險評估工作放置在一個開放的環境之中;最后,在項目團隊中要形成一種認識,為了取得項目建設的成功并非需要控制所有的風險。
軟件缺陷風險評估模型
項目管理者依靠有效的項目管理方法,組織項目團隊在相應的項目環境下去解決一定的項目需求,而項目環境和項目需求是這個項目最典型的特性。在整個項目階段進展過程中,項目團隊、項目管理和項目特性始終影響各階段的遞進,就好像一條紐帶把它們緊緊聯系起來。
軟件缺陷的評估,可以放在需求階段、設計編碼階段和測試階段進行,軟件開發在不同階段都會有項目團隊的參與,項目團隊的工作能力和效率將直接影響著各個階段的項目產出。
風險模型構造。軟件缺陷的風險識別,是按照軟件生命周期的階段分類進行的,若將各階段的風險因素置于同一個網絡模型中,那么,這個模型無論它的復雜度還是數據存儲空間都會制約著風險模型的評估效率。因此,將風險模型按照軟件生命周期各階段進行分類,每類之間按照階段遞進方式進行參數傳遞,這種分階段評估模型可以提高風險評估的效率。
需求階段產生的需求錯誤和需求變更,經過需求檢測和新需求匹配性審核進入下一個階段;設計編碼階段接受檢測后的需求錯誤、需求分析文檔和新需求匹配性審核,輸出編碼錯誤和設計文檔進入測試階段;測試階段接受設計編碼階段的輸出和用戶方試用的效果共同影響項目的缺陷率。項目團隊工作能力的評估是貫穿三個階段進行的,它的輸出進度壓力、管理者工作能力和技術人員工作能力,這些都作為三個階段的評估輸入。從圖2可以看到,各階段風險模型的輸入和輸出、模型之間的聯系因素等。分階段模型一旦建立,就可以在軟件開發過程中的關鍵時刻設立預測點,從而對整個開發過程進行有效的管理。

團隊工作能力評估。團隊工作能力評估主要根據管理者和技術人員之間的溝通以及項目管理的計劃和分工水平來進行,具體來說就是項目客戶代表的工作能力、項目經理的資質、項目成員的技術水準、員工之間的溝通機制、項目管理人員的計劃分工能力和項目團隊的人才管理能力。

圖3描述團隊工作能力的風險模型。圖中給出了設計階段的設計質量目標的影響圖,包括設計質量受到階段進度、開發人員工作能力、采用的技術、管理者工作能力,并且軟件開發其他階段質量目標都有類似的影響結構圖,并進一步細化項目管理人員工作能力的評估、項目技術人員工作能力的評估和整個項目進度的評估。
軟件缺陷評估工具
評估工具的應用,能夠讓項目經理了解到項目目前的管理水平和風險威脅,并根據提前的評估通過有效的管理控制措施來提高項目的成功率,在項目和項目管理者之間架立橋梁。評估工具的核心就是圖4中的四個風險模型,四個風險模型分別描述了項目不同階段風險因素之間的影響關系。

評估工具總體結構。項目經理可以通過評估工具的風險簡要表,向評估系統提供項目的目前基本信息,經過項目團隊工作能力的評估之后,可以分別進入不同階段的風險評估。當然,不同的階段評估將需要管理者提供不同的當前項目基本信息。
評估工具目前可以提供三類評估:一類是全程預測,即軟件開發需求分析前期,對開發質量的整體評估,按照圖4中首先進行團隊工作能力的評估,接著進行需求階段的評估,然后是設計編碼階段評估,最后是測試階段評估,整個評估路線就是① ④ ⑤;第二類是需求后階段評估,即需求分析階段之后的設計編碼和測試階段評估,在這一類評估之前,必須要了解項目在需求階段的產出,包括需求階段引入的缺陷和需求變更的評估,按照圖4中首先進行團隊工作能力的評估,接著進入設計編碼階段的評估,最后進行測試階段評估,整個評估路線就是② ⑤;第三類是測試階段評估,在這類評估之前,必須要了解項目在需求階段和設計編碼階段的產出,包括需求分析質量、設計文檔質量和編碼階段引入的缺陷的評估,按照圖4中首先進行團隊工作能力的評估,接著直接進入測試階段評估,整個評估路線就是圖中的③號路線。
數據流圖。評估流程說明了評估工具應用的場合,而評估工具的數據流圖可以進一步解釋評估工具的輸入和輸出,為具體應用提供更明確的數據操作。
在評估工具的數據流圖中,項目經理首先需要選擇軟件開發的評估階段,接著進入評估工具的輸入狀態,完成相應的風險因素的評估,進入評估工具的整個評估路線,最后得到軟件缺陷的風險狀態和其他風險的狀態值,這些狀態信息可以作為項目經理進行風險管理的可靠依據。
軟件缺陷數目是軟件可靠性的重要度量指標,而軟件可靠性是衡量軟件質量的最重要因素。如何為進行項目管理提高重要的風險信息,對軟件缺陷進行合理、正確的評估,已經成為項目管理的首要任務。這樣,軟件項目的風險管理成為軟件項目管理的重要工作,能否很好地解決這些問題將直接影響到軟件項目風險管理的有效性,同時也影響到軟件開發的質量和軟件項目的完成。
參考文獻:
[1] 朱鴻,金凌紫.軟件質量保障與測試.北京:科學出版社,1997.
[2] 李文靜.軟件缺陷與軟件測試.計算機與網絡,2001,(21):31-32.
[3] 黃國青,田英.改善軟件開發質量的全面質量管理辦法.西北工業
大學學報(社會科學版),2001,21(3):20-22.
[4] 葉俊勇,汪同慶,楊波,彭健.軟件開發的質量保證體系.計算機與現代化,2002,(6):1-4.
[5] 鄭翠芳,吳志杰,夏濤,張偉燕.基于BBNs的軟件殘留缺陷預測模型.微計算機信息,2006,(3):269-271.
[6] Norman Fenton,Martin Neil.A Critique of Software Defect Prediction Models. IEEE Transactions on Software Engineering,1999,25(5):675-689