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