王鵬飛 呂鵬淦
在眾多軟件質(zhì)量指標(biāo)中,軟件缺陷是最為直觀和最為重要的指標(biāo)。因此,通過對軟件缺陷的評估來進(jìn)行軟件質(zhì)量控制是一種很好的方法。本文將軟件缺陷作為軟件質(zhì)量的評估指標(biāo),引入軟件項(xiàng)目風(fēng)險(xiǎn)管理手段,以影響軟件缺陷的風(fēng)險(xiǎn)因素為切入點(diǎn),全面綜合軟件開發(fā)組織和技術(shù)方面的因素,將軟件開發(fā)過程中的各種風(fēng)險(xiǎn)因素納入軟件缺陷評估體系。
軟件質(zhì)量可以通過一系列度量因素來描述。對軟件質(zhì)量,我們大致可以總結(jié)出5個(gè)關(guān)鍵度量維度,即客戶滿意度、產(chǎn)品價(jià)值、關(guān)鍵屬性、缺陷率和開發(fā)過程質(zhì)量。高質(zhì)量的軟件,應(yīng)具備外部屬性和內(nèi)部屬性,其中外部屬性包括產(chǎn)品的正確性和精確性、可用性、運(yùn)行效率、可靠性、健壯性和適應(yīng)性;內(nèi)部屬性包括可維護(hù)性、易擴(kuò)展性、平臺(tái)靈活性、可復(fù)用性、易測試性、代碼可讀性和整體理解性。軟件質(zhì)量重點(diǎn)強(qiáng)調(diào)軟件需求、具體標(biāo)準(zhǔn)和隱含需求。
目前,人們對軟件質(zhì)量保證體系的研究已比較成熟。世界上關(guān)于軟件質(zhì)量保證體系存在CMM/PSP/TSP、ISO 9000系列和ISO/IEC 15504(SPICE)三個(gè)流派,其中,以美國國防部支持的CMM/PSP/TSP流派研究得最為深入,使用得最為廣泛。
在軟件缺陷分析和預(yù)測研究方面,人們進(jìn)行了大量的研究,開發(fā)出一些軟件缺陷預(yù)測模型。這些模型大致分為兩類:一類是在軟件開發(fā)的測試階段,根據(jù)歷史數(shù)據(jù)預(yù)測軟件缺陷;另一類是在軟件開發(fā)之前,通過對以往項(xiàng)目的缺陷數(shù)據(jù)進(jìn)行分析,預(yù)測在軟件開發(fā)中會(huì)出現(xiàn)的缺陷數(shù),這些模型大多可以用于軟件開發(fā)過程中的質(zhì)量控制。
軟件缺陷風(fēng)險(xiǎn)識(shí)別框架
軟件生命周期是軟件項(xiàng)目開發(fā)的重要階段劃分,風(fēng)險(xiǎn)管理的實(shí)踐通常都是與其結(jié)合進(jìn)行的。本文按軟件項(xiàng)目生命周期進(jìn)行分階段風(fēng)險(xiǎn)因素識(shí)別,通過文獻(xiàn)總結(jié)和軟件項(xiàng)目從業(yè)人員的經(jīng)驗(yàn)總結(jié)獲取有價(jià)值的風(fēng)險(xiǎn)因素。
為了更好地了解基于軟件項(xiàng)目風(fēng)險(xiǎn)分類的風(fēng)險(xiǎn)因素識(shí)別方法,下面來看看軟件開發(fā)項(xiàng)目風(fēng)險(xiǎn)結(jié)構(gòu)圖(如圖1所示)。該分類從三個(gè)方面分析:軟件項(xiàng)目生命周期過程、項(xiàng)目內(nèi)部環(huán)境和項(xiàng)目外部環(huán)境。事實(shí)上,在軟件項(xiàng)目進(jìn)展的過程中,項(xiàng)目的內(nèi)外部環(huán)境中的風(fēng)險(xiǎn)因素始終威脅著項(xiàng)目,這些內(nèi)外部因素隨著軟件項(xiàng)目的進(jìn)展在不斷演化,不斷影響著項(xiàng)目的產(chǎn)出結(jié)果。軟件項(xiàng)目的管理技術(shù)將項(xiàng)目團(tuán)隊(duì)置于項(xiàng)目環(huán)境之中,正是項(xiàng)目的環(huán)境、項(xiàng)目的管理技術(shù)和項(xiàng)目團(tuán)隊(duì)影響著整個(gè)項(xiàng)目的進(jìn)展。項(xiàng)目的環(huán)境就是項(xiàng)目特性,它包含了項(xiàng)目的本身需求因素、項(xiàng)目的內(nèi)外部因素等;項(xiàng)目管理包含了項(xiàng)目的管理思想和管理技術(shù);項(xiàng)目團(tuán)隊(duì)包括了項(xiàng)目的技術(shù)人員和項(xiàng)目的管理人員。
項(xiàng)目特性、項(xiàng)目管理和項(xiàng)目團(tuán)隊(duì)三者之間,其實(shí)是互相影響的關(guān)系。當(dāng)然,項(xiàng)目管理是其他兩者的重要紐帶,是三者關(guān)系的重要推力。緊密結(jié)合的三者又在項(xiàng)目的進(jìn)展中不斷改變各自的影響力,互相均衡自己的影響力來推動(dòng)項(xiàng)目的進(jìn)展。
在一個(gè)軟件項(xiàng)目當(dāng)中,項(xiàng)目管理人員和項(xiàng)目技術(shù)人員是可以在建設(shè)階段中熟知一部分風(fēng)險(xiǎn)的,只是從項(xiàng)目組織上無法通過溝通合作對風(fēng)險(xiǎn)形成一致的認(rèn)識(shí)以實(shí)現(xiàn)共同抵御風(fēng)險(xiǎn);在項(xiàng)目建設(shè)過程中,持續(xù)的風(fēng)險(xiǎn)評估對于風(fēng)險(xiǎn)管理有著重要意義,這就要求風(fēng)險(xiǎn)評估應(yīng)當(dāng)跟隨項(xiàng)目進(jìn)展,應(yīng)當(dāng)經(jīng)歷項(xiàng)目建設(shè)的每一個(gè)階段,并對項(xiàng)目建設(shè)過程中變化的環(huán)境因素進(jìn)行持續(xù)的風(fēng)險(xiǎn)評估;為了更有效地進(jìn)行持續(xù)的風(fēng)險(xiǎn)評估,就需要一個(gè)結(jié)構(gòu)化的風(fēng)險(xiǎn)評估方法,而且應(yīng)將風(fēng)險(xiǎn)評估工作放置在一個(gè)開放的環(huán)境之中;最后,在項(xiàng)目團(tuán)隊(duì)中要形成一種認(rèn)識(shí),為了取得項(xiàng)目建設(shè)的成功并非需要控制所有的風(fēng)險(xiǎn)。
軟件缺陷風(fēng)險(xiǎn)評估模型
項(xiàng)目管理者依靠有效的項(xiàng)目管理方法,組織項(xiàng)目團(tuán)隊(duì)在相應(yīng)的項(xiàng)目環(huán)境下去解決一定的項(xiàng)目需求,而項(xiàng)目環(huán)境和項(xiàng)目需求是這個(gè)項(xiàng)目最典型的特性。在整個(gè)項(xiàng)目階段進(jìn)展過程中,項(xiàng)目團(tuán)隊(duì)、項(xiàng)目管理和項(xiàng)目特性始終影響各階段的遞進(jìn),就好像一條紐帶把它們緊緊聯(lián)系起來。
軟件缺陷的評估,可以放在需求階段、設(shè)計(jì)編碼階段和測試階段進(jìn)行,軟件開發(fā)在不同階段都會(huì)有項(xiàng)目團(tuán)隊(duì)的參與,項(xiàng)目團(tuán)隊(duì)的工作能力和效率將直接影響著各個(gè)階段的項(xiàng)目產(chǎn)出。
風(fēng)險(xiǎn)模型構(gòu)造。軟件缺陷的風(fēng)險(xiǎn)識(shí)別,是按照軟件生命周期的階段分類進(jìn)行的,若將各階段的風(fēng)險(xiǎn)因素置于同一個(gè)網(wǎng)絡(luò)模型中,那么,這個(gè)模型無論它的復(fù)雜度還是數(shù)據(jù)存儲(chǔ)空間都會(huì)制約著風(fēng)險(xiǎn)模型的評估效率。因此,將風(fēng)險(xiǎn)模型按照軟件生命周期各階段進(jìn)行分類,每類之間按照階段遞進(jìn)方式進(jìn)行參數(shù)傳遞,這種分階段評估模型可以提高風(fēng)險(xiǎn)評估的效率。
需求階段產(chǎn)生的需求錯(cuò)誤和需求變更,經(jīng)過需求檢測和新需求匹配性審核進(jìn)入下一個(gè)階段;設(shè)計(jì)編碼階段接受檢測后的需求錯(cuò)誤、需求分析文檔和新需求匹配性審核,輸出編碼錯(cuò)誤和設(shè)計(jì)文檔進(jìn)入測試階段;測試階段接受設(shè)計(jì)編碼階段的輸出和用戶方試用的效果共同影響項(xiàng)目的缺陷率。項(xiàng)目團(tuán)隊(duì)工作能力的評估是貫穿三個(gè)階段進(jìn)行的,它的輸出進(jìn)度壓力、管理者工作能力和技術(shù)人員工作能力,這些都作為三個(gè)階段的評估輸入。從圖2可以看到,各階段風(fēng)險(xiǎn)模型的輸入和輸出、模型之間的聯(lián)系因素等。分階段模型一旦建立,就可以在軟件開發(fā)過程中的關(guān)鍵時(shí)刻設(shè)立預(yù)測點(diǎn),從而對整個(gè)開發(fā)過程進(jìn)行有效的管理。
團(tuán)隊(duì)工作能力評估。團(tuán)隊(duì)工作能力評估主要根據(jù)管理者和技術(shù)人員之間的溝通以及項(xiàng)目管理的計(jì)劃和分工水平來進(jìn)行,具體來說就是項(xiàng)目客戶代表的工作能力、項(xiàng)目經(jīng)理的資質(zhì)、項(xiàng)目成員的技術(shù)水準(zhǔn)、員工之間的溝通機(jī)制、項(xiàng)目管理人員的計(jì)劃分工能力和項(xiàng)目團(tuán)隊(duì)的人才管理能力。
圖3描述團(tuán)隊(duì)工作能力的風(fēng)險(xiǎn)模型。圖中給出了設(shè)計(jì)階段的設(shè)計(jì)質(zhì)量目標(biāo)的影響圖,包括設(shè)計(jì)質(zhì)量受到階段進(jìn)度、開發(fā)人員工作能力、采用的技術(shù)、管理者工作能力,并且軟件開發(fā)其他階段質(zhì)量目標(biāo)都有類似的影響結(jié)構(gòu)圖,并進(jìn)一步細(xì)化項(xiàng)目管理人員工作能力的評估、項(xiàng)目技術(shù)人員工作能力的評估和整個(gè)項(xiàng)目進(jìn)度的評估。
軟件缺陷評估工具
評估工具的應(yīng)用,能夠讓項(xiàng)目經(jīng)理了解到項(xiàng)目目前的管理水平和風(fēng)險(xiǎn)威脅,并根據(jù)提前的評估通過有效的管理控制措施來提高項(xiàng)目的成功率,在項(xiàng)目和項(xiàng)目管理者之間架立橋梁。評估工具的核心就是圖4中的四個(gè)風(fēng)險(xiǎn)模型,四個(gè)風(fēng)險(xiǎn)模型分別描述了項(xiàng)目不同階段風(fēng)險(xiǎn)因素之間的影響關(guān)系。
評估工具總體結(jié)構(gòu)。項(xiàng)目經(jīng)理可以通過評估工具的風(fēng)險(xiǎn)簡要表,向評估系統(tǒng)提供項(xiàng)目的目前基本信息,經(jīng)過項(xiàng)目團(tuán)隊(duì)工作能力的評估之后,可以分別進(jìn)入不同階段的風(fēng)險(xiǎn)評估。當(dāng)然,不同的階段評估將需要管理者提供不同的當(dāng)前項(xiàng)目基本信息。
評估工具目前可以提供三類評估:一類是全程預(yù)測,即軟件開發(fā)需求分析前期,對開發(fā)質(zhì)量的整體評估,按照圖4中首先進(jìn)行團(tuán)隊(duì)工作能力的評估,接著進(jìn)行需求階段的評估,然后是設(shè)計(jì)編碼階段評估,最后是測試階段評估,整個(gè)評估路線就是① ④ ⑤;第二類是需求后階段評估,即需求分析階段之后的設(shè)計(jì)編碼和測試階段評估,在這一類評估之前,必須要了解項(xiàng)目在需求階段的產(chǎn)出,包括需求階段引入的缺陷和需求變更的評估,按照圖4中首先進(jìn)行團(tuán)隊(duì)工作能力的評估,接著進(jìn)入設(shè)計(jì)編碼階段的評估,最后進(jìn)行測試階段評估,整個(gè)評估路線就是② ⑤;第三類是測試階段評估,在這類評估之前,必須要了解項(xiàng)目在需求階段和設(shè)計(jì)編碼階段的產(chǎn)出,包括需求分析質(zhì)量、設(shè)計(jì)文檔質(zhì)量和編碼階段引入的缺陷的評估,按照圖4中首先進(jìn)行團(tuán)隊(duì)工作能力的評估,接著直接進(jìn)入測試階段評估,整個(gè)評估路線就是圖中的③號(hào)路線。
數(shù)據(jù)流圖。評估流程說明了評估工具應(yīng)用的場合,而評估工具的數(shù)據(jù)流圖可以進(jìn)一步解釋評估工具的輸入和輸出,為具體應(yīng)用提供更明確的數(shù)據(jù)操作。
在評估工具的數(shù)據(jù)流圖中,項(xiàng)目經(jīng)理首先需要選擇軟件開發(fā)的評估階段,接著進(jìn)入評估工具的輸入狀態(tài),完成相應(yīng)的風(fēng)險(xiǎn)因素的評估,進(jìn)入評估工具的整個(gè)評估路線,最后得到軟件缺陷的風(fēng)險(xiǎn)狀態(tài)和其他風(fēng)險(xiǎn)的狀態(tài)值,這些狀態(tài)信息可以作為項(xiàng)目經(jīng)理進(jìn)行風(fēng)險(xiǎn)管理的可靠依據(jù)。
軟件缺陷數(shù)目是軟件可靠性的重要度量指標(biāo),而軟件可靠性是衡量軟件質(zhì)量的最重要因素。如何為進(jìn)行項(xiàng)目管理提高重要的風(fēng)險(xiǎn)信息,對軟件缺陷進(jìn)行合理、正確的評估,已經(jīng)成為項(xiàng)目管理的首要任務(wù)。這樣,軟件項(xiàng)目的風(fēng)險(xiǎn)管理成為軟件項(xiàng)目管理的重要工作,能否很好地解決這些問題將直接影響到軟件項(xiàng)目風(fēng)險(xiǎn)管理的有效性,同時(shí)也影響到軟件開發(fā)的質(zhì)量和軟件項(xiàng)目的完成。
參考文獻(xiàn):
[1] 朱鴻,金凌紫.軟件質(zhì)量保障與測試.北京:科學(xué)出版社,1997.
[2] 李文靜.軟件缺陷與軟件測試.計(jì)算機(jī)與網(wǎng)絡(luò),2001,(21):31-32.
[3] 黃國青,田英.改善軟件開發(fā)質(zhì)量的全面質(zhì)量管理辦法.西北工業(yè)
大學(xué)學(xué)報(bào)(社會(huì)科學(xué)版),2001,21(3):20-22.
[4] 葉俊勇,汪同慶,楊波,彭健.軟件開發(fā)的質(zhì)量保證體系.計(jì)算機(jī)與現(xiàn)代化,2002,(6):1-4.
[5] 鄭翠芳,吳志杰,夏濤,張偉燕.基于BBNs的軟件殘留缺陷預(yù)測模型.微計(jì)算機(jī)信息,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