http://developer.51cto.com/art/200601/16640.htm
軟件質(zhì)量保證(即SQA——Software Quality Assurance),是CMM2級中的一個關(guān)鍵過程域,它是貫穿整個軟件過程的第三方獨立審查活動,出現(xiàn)在大多數(shù)關(guān)鍵過程域的檢查與驗證的公共特性中,在整個軟件開發(fā)過程中充當重要角色。
從CMM2級中包含的6個關(guān)鍵過程域來看,無論是需求管理、軟件項目計劃、軟件項目跟蹤與監(jiān)控,還是軟件子合同管理、軟件配置管理,都不同程度地存在于我們現(xiàn)在正在進行的軟件項目開發(fā)過程中,對于它們的了解我們已經(jīng)不再陌生,只有SQA這個關(guān)鍵過程域,是在我們準備以CMM2級要求的關(guān)鍵過程域為基礎(chǔ)進行軟件過程改進前未接觸過的。
在很多軟件企業(yè)中還沒有與之相對應(yīng)的人員和工作方法,整套關(guān)注軟件開發(fā)過程的軟件質(zhì)量保證體系還沒有建立起來。所以,在企業(yè)以CMM2級關(guān)鍵過程域為參考進行軟件過程改進時,SQA往往是一個難點,直接涉及到組織結(jié)構(gòu)的變化。
實施SQA的目的
軟件質(zhì)量保證的目標是以獨立審查方式,從第三方的角度監(jiān)控軟件開發(fā)任務(wù)的執(zhí)行,就軟件項目是否正遵循已制定的計劃、標準和規(guī)程給開發(fā)人員和管理層提供反映產(chǎn)品和過程質(zhì)量的信息和數(shù)據(jù),提高項目透明度,同時輔助軟件工程組取得高質(zhì)量的軟件產(chǎn)品。主要包括以下四個方面:
● 通過監(jiān)控軟件開發(fā)過程來保證產(chǎn)品質(zhì)量;
● 保證開發(fā)出來的軟件和軟件開發(fā)過程符合相應(yīng)標準與規(guī)程;
● 保證軟件產(chǎn)品、軟件過程中存在的不符合問題得到處理,必要時將問題反映給高級管理者;
● 確保項目組制定的計劃、標準和規(guī)程適合項目組需要,同時滿足評審和審計需要;
除了以上四點之外,我們還希望SQA能作為軟件工程過程小組(SEPG)在項目組中的延伸,能夠收集項目中好的實施方法和發(fā)現(xiàn)實施不利的原因,為修改企業(yè)內(nèi)部軟件開發(fā)整體規(guī)范提供依據(jù),為其他項目組的開發(fā)過程實施提供先進方法和樣例。
對SQA人員的素質(zhì)要求
1. SQA人員(有時簡稱SQA)要有很強的溝通能力。從實施SQA的目的中可以看出,SQA不在項目中,是獨立于軟件項目的第三方,但他要了解項目的開發(fā)過程和進度,捕捉到項目中不符合要求的問題,這就要求SQA能夠深入項目,和軟件開發(fā)經(jīng)理以及項目組中的開發(fā)人員保持很好的溝通,這樣才能及時獲得真實的項目情況。
2. SQA要熟悉軟件開發(fā)過程。作為SQA,既然要確保項目組制定的計劃、標準和規(guī)程,要符合項目組要求,那么SQA首先自己就要了解軟件項目開發(fā)過程,以及企業(yè)內(nèi)部已經(jīng)有的開發(fā)過程規(guī)范。
3. SQA本身要有很強的計劃性。SQA一方面要監(jiān)督軟件項目組編寫計劃,另一方面SQA自身的工作也要有計劃,并且能夠按照計劃開展工作。
4. SQA要能應(yīng)對繁雜的工作。作為SQA,在跟蹤項目進行過程的時候要對項目組的很多工作產(chǎn)品進行審計,而且會參與項目組中的多種活動。同時一個SQA還有可能會面對多個項目組,所以任務(wù)相對繁雜細碎,這就要求SQA在處理這些事物的時候要耐心細致。
5. SQA要客觀,有責任心。作為第三方對項目過程進行監(jiān)督,SQA要能保持自己的客觀性,不能一味討好項目經(jīng)理,也不能成為項目組中的憲兵,否則會影響工作的開展。對于項目組中多次協(xié)調(diào)解決不了的問題,能夠向項目的高層經(jīng)理進言,完成SQA的使命。
以上五點是作為SQA應(yīng)該具備的基本素質(zhì),除此之外,一個好的SQA還應(yīng)該在軟件開發(fā)過程中作為開發(fā)人員或測試人員參與過一個或多個環(huán)節(jié),這樣他們才能在過程監(jiān)督中比較準確地抓住重點,同時他們的意見和提出的解決辦法也會更貼近項目組,容易被項目組接受。
SQA人員的組成
軟件企業(yè)中的SQA人員既可以由全職人員擔任,也可以由企業(yè)內(nèi)具有相關(guān)素質(zhì)、經(jīng)過SQA培訓的人員兼職擔任。由此組成的SQA小組可能是一個真正的物理上存在的獨立部門,也可以是一個邏輯上存在的平臺。但不管是真正的獨立部門還是邏輯上的平臺,它都需要有一個靈魂人物——SQA小組組長,來組織SQA小組的日常活動。
在給一個項目組分配負責監(jiān)督其項目過程的SQA時,一定要注意一點:就是該項目的SQA不能是該項目組的開發(fā)人員、配置管理人員或測試人員,一個項目的SQA除了監(jiān)控項目過程,完成SQA相關(guān)工作以外,不應(yīng)該參與項目組的其他實質(zhì)性工作,否則他會與項目組捆綁在一起,很難保持客觀性。
SQA工作的內(nèi)容
SQA的工作內(nèi)容主要包括以下六類:
1. 與SQA計劃直接相關(guān)的工作:SQA在項目早期要根據(jù)項目計劃制定與其對應(yīng)的SQA計劃,定義出各階段的檢查重點,標識出檢查、審計的工作產(chǎn)品對象,以及在每個階段SQA的輸出產(chǎn)品。定義越詳細,對于SQA今后的工作的指導性就會越強,同時也便于軟件項目經(jīng)理和SQA組長對其工作的監(jiān)督。編寫完SQA計劃后要組織SQA計劃的評審,并形成評審報告,把通過評審的SQA計劃發(fā)送給軟件項目經(jīng)理、項目開發(fā)人員和所有相關(guān)人員。
2. 參與項目的階段性評審和審計:在SQA計劃中通常已經(jīng)根據(jù)項目計劃定義了與項目階段相應(yīng)的階段檢查,包括參加項目在本階段的評審和對其階段產(chǎn)品的審計。對于階段產(chǎn)品的審計通常是檢查其階段產(chǎn)品是否按計劃按規(guī)程輸出并內(nèi)容完整,這里的規(guī)程包括企業(yè)內(nèi)部統(tǒng)一的規(guī)程也包括項目組內(nèi)自己定義的規(guī)程。但是SQA對于階段產(chǎn)品內(nèi)容的正確性一般不負責任檢查,對于內(nèi)容的正確性通常交由項目中的評審來完成。SQA參與評審是從保證評審過程有效性方面入手,如參與評審的人是否具備一定資格、是否規(guī)定的人員都參見了評審、評審中對被評審的對象的每個部分都進行了評審、并給出了明確的結(jié)論等等。
3. 對項目日常活動與規(guī)程的符合性進行檢查: 這部分的工作內(nèi)容是SQA的日常工作內(nèi)容。由于SQA獨立于項目組,如果只是參與階段性的檢查和審計很難及時反映項目組的工作過程,所以SQA也要在兩個階段點之間設(shè)置若干小的跟蹤點,來監(jiān)督項目的進行情況,以便能及時反映出項目組中存在的問題,并對其進行追蹤。如果只在階段點進行檢查和審計,即便發(fā)現(xiàn)了問題也難免過于滯后,不符合盡早發(fā)現(xiàn)問題、把問題控制在最小的范圍之內(nèi)的整體目標。
4. 對配置管理工作的檢查和審計:SQA要對項目過程中的配置管理工作是否按照項目最初制定的配置管理計劃進行監(jiān)督,包括配置管理人員是否定期進行該方面的工作、是否所有人得到的都是開發(fā)過程產(chǎn)品的有效版本。這里的過程產(chǎn)品包括項目過程中產(chǎn)生的代碼和文檔。
5. 跟蹤問題的解決情況: 對于評審中發(fā)現(xiàn)的問題和項目日常工作中發(fā)現(xiàn)的問題,SQA要進行跟蹤,直至解決。對于在項目組內(nèi)可以解決的問題就在項目組內(nèi)部解決,對于在項目組內(nèi)部無法解決的問題,或是在項目組中跟催多次也沒有得到解決的問題,可以利用其獨立匯報的渠道報告給高層經(jīng)理。
6. 收集新方法,提供過程改進的依據(jù):此類工作很難具體定義在SQA的計劃當中,但是SQA有機會直接接觸很多項目組,對于項目組在開發(fā)管理過程中的優(yōu)點和缺點都能準確的獲得第一手資料。他們有機會了解項目組中管理好的地方是如何做的,采用了什么有效的方法,在SQA小組的活動中與其他SQA共享。這樣這些好的實施實例就可以被傳播到更多的項目組中。對于企業(yè)內(nèi)過程規(guī)范定義的不準確或是不方便的地方,軟件項目組也可以通過SQA小組反映到軟件工程過程小組,便于下一步對規(guī)程進行修改和完善。
SQA與幾類角色間的關(guān)系
一個企業(yè)內(nèi)的部門設(shè)置可能會各有不同,但是很多角色設(shè)置是相同的,從一個項目的SQA出發(fā),我們可以把SQA與其他相關(guān)角色的關(guān)系表示為下圖: 以上圖示只說明SQA與高層經(jīng)理、項目組和其他相關(guān)組之間的關(guān)系,并不是以上幾個角色之間所有關(guān)系的描述,所以即便項目組會直接向高層經(jīng)理匯報,但與SQA無直接關(guān)系,在圖中就沒有表現(xiàn)出來。
SQA工作中常見的幾個問題
1. 最初給項目組配置SQA人員的時候,SQA的價值不被認可因為是新工作的初次開展,已經(jīng)習慣了自己管理項目,向高層經(jīng)理匯報的項目組難免會有抵觸情緒。要從兩個方面解決這個問題:一方面,從組織的角度,要明確SQA的角色及其合法性; 另一方面,SQA也要以其專業(yè)的工作贏得項目組認可,為項目組增加價值。
2. 一個全職的SQA可以同時兼任多少個項目的SQA工作對于不同的項目規(guī)模和組織管理方式,這個問題會有不同的答案,根據(jù)實施中的一些經(jīng)驗總結(jié),通常在第一次實施時,承擔一個20人左右的項目組的SQA工作需要占用一個人30%左右的工作量,隨著SQA的成熟,這個比例會降低到15%。對于一個10人以內(nèi)的項目組,SQA需要投入其10%左右的工作量。當然,項目越大SQA的投入就越多。
3. SQA與項目組的關(guān)系難處理對于SQA與項目組的關(guān)系,應(yīng)該遵循以下兩條原則: 要在過程方面成為項目組的嚴師,有錯必糾,但不能有錯全報;要做項目組的朋友,但不能對項目組包庇縱容。
4. 項目組有了SQA,可是需求文檔和設(shè)計文檔的質(zhì)量還是不高對不起,這不是SQA的直接工作范圍。提高需求和設(shè)計的質(zhì)量,要從人員培訓和嚴格評審入手,讓有經(jīng)驗有資格的人來完成需求和設(shè)計文檔。SQA只能從規(guī)程符合方面進行監(jiān)督。
總之,在軟件企業(yè)中建立SQA體系,是軟件項目管理由人治到法治的一個必經(jīng)階段,也是軟件企業(yè)以CMM模型為參考,進行軟件過程改進中一個不可缺少的部分。軟件企業(yè)只要真正建立了SQA規(guī)范,培養(yǎng)了專業(yè)的SQA人員就會真正從中體會到它的好處。