http://tech.itdb.cn/n/200503/01/n20050301_31878.shtml
一、 前言
本文作者在企業從事SQA工作,同時兼任SEPG的工作進行基于CMM3的過程改進,在實踐過程中,對SQA的工作有了較多的想法和認識。本文是個人看法,請大家指教,如果要和本人聯系,請發Email到:heqingemail@163.net。
二、SQA的理論探索
2.1、過程的;認識
我們都知道一個項目的主要內容是:成本、進度、質量;良好的項目管理就是綜合三方面的因素,平衡三方面的目標,最終依照目標完成任務。項目的這三個方面是相互制約和影響的,有時對這三方面的平衡策略甚至成為一個企業級的要求,決定了企業的行為,我們知道IBM的軟件是以質量為最重要目標的,而微軟的“足夠好的軟件”策略更是耳熟能詳,這些質量目標其實立足于企業的戰略目標。所以用于進行質量保證的SQA工作也應當立足于企業的戰略目標,從這個角度思考SQA,形成對SQA的理論認識。
軟件界已經達成共識的:影響軟件項目進度、成本、質量的因素主要是“人、過程、技術”。
首先要明確的是這三個因素中,人是第一位的。
現在許多實施CMM的人員沉溺于CMM的理論過于強調“過程”,這是很危險的傾向。這個思想傾向在國外受到了猛烈抨擊,從某種意義上各種敏捷過程方法的提出就是對強調過程的一種反思。
“XP”中的一個思想“人比過程更重要” 是值得我們思考的。我個人的意見在進行過程改進中堅持“以人為本”,強調過程和人的和諧。
根據現代軟件工程對眾多失敗項目的調查,發現管理是項目失敗的主要原因。這個事實的重要性在于說明了“要保證項目不失敗,我們應當更加關注管理”,注意這個事實沒有說明另外一個問題“良好的管理可以保證項目的成功”。現在很多人基于一種粗糙的邏輯,從一個事實反推到的這個結論,在邏輯上是錯誤的,這種錯誤形成了更加錯誤的做法,這點在SQA的理解上是體現較深。
如果我們考證一下歷史的沿革,應當更加容易理解CMM的本質。CMM首先是作為一個“評估標準”出現的,主要評估的是美國國防部供應商保證質量的能力。CMM關注的軟件生產有如下特點:
質量重要
規模較大
這是CMM產生的原因。它引入了“全面質量管理”的思想,尤其側重了“全面質量管理”中的“過程方法”,并且引入了“統計過程控制”的方法??梢哉f這兩個思想是CMM背后的基礎。
上面這些內容形成了我對軟件過程地位、價值的基本理解;在這個基礎上我們可以引申討論SQA。
2.2、生產線的隱喻
如果將一個軟件生產類比于一個工廠的生產。那么生產線就是過程,產品按照生產線的規定過程進行生產。SQA的職責就是保證過程的執行,也就是保證生產線的正常執行。
抽象出管理體系模型的如下,這個模型說明了一個過程體系至少應當包含“決策、執行、反饋”三個重要方面。QA的職責就是確保過程的有效執行,監督項目按照過程進行項目活動;它不負責監管產品的質量,不負責向管理層提供項目的情況,不負責代表管理層進行管理,只是代表管理層來保證過程的執行。

2.3、SQA和其他工作的組合
在很多企業中,將SQA的工作和QC、SEPG、組織級的項目管理者的工作混合在一起了,有時甚至更加注重其他方面的工作而沒有做好SQA的本職工作。
根據hjhza 的意見“中國現在基本有三種QA(按照工作重點不同來分):一是過程改進型,一是配置管理型,一是測試型”。我個人認為是因為SQA工作和其他不同工作組合在一起形成的。
下面根據本人經驗對它們之間的關系進行一個說明。
2.4、QA和QC
兩者基本職責
QC:檢驗產品的質量,保證產品符合客戶的需求;是產品質量檢查者;
QA:審計過程的質量,保證過程被正確執行;是過程質量審計者;
注意區別檢查和審計的不同
檢查:就是我們常說的找茬,是挑毛病的;
審計:來確認項目按照要求進行的證據;仔細看看CMM中各個KPA中SQA的檢查采用的術語大量用到了“證實”,審計的內容主要是過程的;對照CMM看一下項目經理和高級管理者的審查內容,他們更加關注具體內容。
對照上面的管理體系模型,QC進行質量控制,向管理層反饋質量信息;QA則確保QC按照過程進行質量控制活動,按照過程將檢查結果向管理層匯報。這就是QA和QC工作的關系。在這樣的分工原則下,QA只要檢查項目按照過程進行了某項活動沒有,產出了某個產品沒有;而QC來檢查產品是否符合質量要求。如果企業原來具有QC人員并且QA人員配備不足,可以先確定由QC兼任QA工作。但是只能是暫時的,獨立的QA人員應當具備,因為QC工作也是要遵循過程要求的,也是要被審計過程的,這種混合情況,難以保證QC工作的過程質量。
2.5、QA和SEPG
兩者基本職責
SEPG:制定過程,實施過程改進;
QA: 確保過程被正確執行
SEPG應當提供過程上的指導,幫助項目組制定項目過程,幫助項目組進行策劃;從而幫助項目組有效的工作,有效的執行過程。如果項目和QA對過程的理解發生爭持,SEPG作為最終仲裁者。為了進行有效過程改進,SEPG必須分析項目的數據。
QA本也要進行過程規范,那么所有QA中最有經驗、最有能力的QA可以參加SEPG,但是要注意這兩者的區別。
如果企業的SEPG人員具有較為深厚的開發背景,可以兼任SQA工作,這樣利于過程的不斷改進;但是由于立法、執法集于一身也容易造成SQA過于強勢,影響項目的獨立性。管理過程比較成熟的企業,因為企業的文化和管理機制已經健全,SQA職責范圍的工作較少,往往只是針對具體項目制定明確重點的SQA計劃,這樣SQA的審計工作會大大減少,從而可以同時審計較多項目。
另一方面,由于分工的細致化,管理體系的復雜化,往往需要專職的SEPG人員,這些人員要求了解企業的所有管理過程和運作情況,在這個基礎上才能統籌全局的進行過程改進,這時了解全局的SQA人員就是專職SEPG的主要人選;這些SQA人員將逐漸的轉化為SEPG人員,并且更加了解管理知識,而SQA工作漸漸成為他們的兼職工作。
這種情況在許多CMM5企業比較多見,往往有時看不見SQA人員在項目組出現或者很少出現,這種SEPG和SQA的融合特別有利于組織的過程改進工作。SEPG確定過程改進內容,SQA計劃重點反映這些改進內容,從保證有效的改進,特別有利于達到CMM5的要求。從這個角度,國外的SQA人員為什么高薪就不難理解了,也決定了當前中國SQA人員比較被輕視的原因;因為管理過程還不完善,我們的SQA人員還沒有產生這么大的價值嘛!
2.6、QA和組織級的監督管理
有的企業為了更好的監督管理項目,建立了一個角色,我取名為“組織級的監督管理者”,他們的職責是對所有項目進行統一的跟蹤、監督、適當的管理,來保證管理層對所有項目的可視性、可管理性。
為了有效管理項目,“組織級的監督管理者”必須分析項目的數據。
他們的職責對照上圖的模型,就是執行“反饋”職能。
QA本身不進行反饋工作,最多對過程執行情況的信息進行反饋。
SQA職責最好不要和“組織級的項目管理者”的職責混合在一起,否則容易出現SAQ困境:一方面SQA不能準確定位自己的工作,另一方面過程執行者對SQA人員抱有較大戒心。
如果建立了較好的管理過程,那么就會增強項目的可視性,從而保證企業對所有項目的較好管理;而QA來確保這個管理過程的運行。
三、SQA的工作內容和工作方法
3.1、 計劃
針對具體項目制定SQA計劃,確保項目組正確執行過程。制定SQA計劃應當注意如下幾點:
有重點:依據企業目標以及項目情況確定審計的重點
明確審計內容:明確審計哪些活動,那些產品
明確審計方式:確定怎樣進行審計
明確審計結果報告的規則:審計的結果報告給誰
3.2、審計/證實
依據SQA計劃進行SQA審計工作,按照規則發布審計結果報告。
注意審計一定要有項目組人員陪同,不能搞突然襲擊。雙方要開誠布公,坦誠相對。
審計的內容:是否按照過程要求執行了相應活動,是否按照過程要求產生了相應產品。
3.3、問題跟蹤
對審計中發現的問題,要求項目組改進,并跟進直到解決。
四、SQA的素質
過程為中心:應當站在過程的角度來考慮問題,只要保證了過程,QA就盡到了責任。
服務精神:為項目組服務,幫助項目組確保正確執行過程
了解過程:深刻了解企業的工程,并具有一定的過程管理理論知識
了解開發:對開發工作的基本情況了解,能夠理解項目的活動
溝通技巧:善于溝通,能夠營造良好的氣氛,避免審計活動成為一種找茬活動。