软件项目质量管理
摘要
本文通過中國郎中看病這個案例進而類比軟件項目質量管理,對軟件項目質量管理的論述和分析,并對改善軟件質量的各個因素進行了討論,最后對軟件項目質量管理的現狀進行分析,并對對其發展趨勢進行展望。
通過對中國郎中看病的故事,我們給了軟件項目質量管理一個通俗的解釋和分析,分別用大兒子、二兒子以及三兒子類比軟件項目管理過程中的各個角色和階段。通過對軟件質量的各種定義將“質量”這個詞作了詳盡分析,在以上所討論的基礎之上,我們解說了影響了軟件項目質量管理的多個重要因素,并以多個圖表圖像的形式進行說明,形象生動。最后,筆者查找相關文獻,談了軟件項目管理的現狀和發展趨勢,對于該課程的理解和體會,在文中最后做了較為詳細的陳述。
缺陷降低軟件質量,這是業界公認的事實,對于還未進入軟件事業單位的我們來說,熟練掌握這些知識是百利而無一害的,在以后的的學習生活和研究中,一定不懈奮斗。
?
?
一、案例分析
1.1案例回顧
在中國古代,有一家三兄弟全是郎中。其中老三是名醫,人們問他:“你們兄弟三人誰的醫術最高?”?他回答說:“我常用猛藥給病危者醫治,偶爾有些病危者被我救活,于是我的醫術遠近聞名并成了名醫。我二哥通常在人們剛剛生病的時候馬上就治愈他們,臨近村莊的人說他是好郎中。我大哥不外出治病,他深知人們生病的原因,所以能夠預防家里人生病,他的醫術只有我們家里才知道?!?/p>
?
1.2案例類比分析
郎中三兄弟是三種治病方式的代言人,消除軟件缺陷的三種方式:
老大治病的方式最高明,如果人們能夠預防生病的話,那么沒病就用不著看醫生了。提高軟件質量最好的辦法是:在開發過程中有效地防止工作成果產生缺陷,將高質量內建于開發過程之中。主要措施是“不斷地提高技術水平,不斷地提高規范化水平”,其實就是練內功,通稱為“軟件過程改進”。?
即使一個人嚴守養生之道,身體狀況良好,但總是會意外地得病的,得了病就要去看醫生。??老二治病的方式就是醫院的模式,病人越早看病,就越早治好,治病的代價就越低。
同理,在開發軟件的時候,即使人們的技術水平很高,并且嚴格遵守規范,但是人非機器,總是會犯錯誤的,因此無法完全避免軟件中的缺陷。
老三治病的方式代價最高,只能是不得已而為之。可在現實之中,大多數軟件企業采用老三的方式來對付質量問題。典型現象是:在軟件交付之前,沒有及時消除缺陷。當軟件交付給用戶后,用著用著就出錯了,趕緊請開發者來補救??尚Φ氖?#xff0c;當軟件系統在用戶那里出故障了,那些現場補救成功的人倒成了英雄,好心用戶甚至還寄來感謝信。
?
1.3全面軟件項目管理模型
?
?
結合老大老二的治病方式,我們提煉出以上軟件質量管理模型圖,項目中的所有人員幾乎都參與了活動,只是介入的程度不同。質量的死對頭是缺陷,缺陷是人們在軟件開發過程中不喜歡和不愿看到的東西,但是又是難以避免的事情,缺陷越大,質量越低,提升軟件質量的首要任務是減少軟件缺陷。
二、軟件質量
2.1軟件質量定義
2.1.1詞典定義
①?典型的或本質的特征;
②?事物固有的或區別于其他事物的特征或本質;
③?優良或出色的程度。
2.1.2?CMM定義
①?一個系統、組件或過程符合特定需求的程度;
②?一個系統、組件或過程符合客戶或用戶的要求或期望的程度。
2.1.3百度詞條定義
概括地說,軟件質量就是“軟件與明確的和隱含的定義的需求相一致的程度”。具體地說,軟件質量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發標準、以及所有專業開發的軟件都應具有的隱含特征的程度。
?
2.1.4通俗理解
古時候人們以為長得結實、飯量大就是健康,這顯然是不科學的?,F代人總是通過考察多方面的生理因素來判斷是否健康,如測量身高、體重、心跳、血壓、血液、體溫等。如果上述因素都合格,那么表明這人是健康的。如果某個因素不合格,則表明此人在某個方面不健康,醫生會對癥下藥。?
通過類比,我們這樣理解軟件質量:?軟件質量是許多質量屬性的綜合體現,各種質量屬性反映了軟件質量的方方面面。人們通過改善軟件的各種質量屬性,從而提高軟件的整體質量(否則無從下手)。?
?
2.2影響軟件質量的因素
?
2.3軟件質量度量
?
2.4軟件質量要素
從技術角度講,對軟件整體質量影響最大的那些質量屬性才是質量要素;
從商業角度講,客戶最關心的、能成為賣點的質量屬性才是質量要素。
對于一個特定的軟件而言,我們首先判斷什么是質量要素,才能給出提高質量的具體措施,而不是一股腦地想把所有的質量屬性都做好,否則不僅做不好,還可能得不償失。
如果某些質量屬性并不能產生顯著的經濟效益,我們可以忽略它們,把精力用在對經濟效益貢獻最大的質量要素上。簡而言之,只有質量要素才值得開發人員下功夫去改善。
商業目標決定質量目標。提高軟件質量的最終目的是為了贏利,而不是創造完美無缺的產品。因此對于普通商業軟件而言,并不是“質量越高越好”,而是恰好讓廣大用戶滿意,并且將提高質量所付出的代價控制在預算之內。
?
?
2.5軟件質量度量的實施
2.5.1確定軟件質量需求
(1)軟件的功能需求的確定,存在一定的難度。而非功能需求的確定,則難度更大。這些困難包括:需求如何獲取,需求沖突如何協調、需求的確認和變更的授權等。
?????(2)需求獲取:首先,你要理解用戶的需求,區分哪些是質量需求,
把這些需求記錄下來,獲得用戶的確認。
??(3)需求分析:拿到用戶確認的需求后,你可以開始把用戶的質量需求與我們設定的質量特性聯系起來,一直區分到子特性。這種聯系,就是把用戶語言描述的需求,轉變為計算機工程師語言的需求。建立了這種關聯后,可以根據分類,分級,確定直接度量。
?
?2.5.2確定直接度量
直接度量就是實際的軟件質量測量活動,它的輸入是軟件或軟件過程,輸出是一個測量值。它通過執行一系列的任務,獲得一個質量值。
在確定直接度量前,應該有如下準備:
(1)工具:有助于計算度量值的硬件/軟件工具,如:缺陷跟蹤工具;
(2)應用:描述度量結果的希望值、度量值的意義、作用和對度量結果數? ???據的使用方法;
(3)數據:獲得度量結果所需的數據、程序、過程等度量對象;
(4)計算:度量程序、步驟和方法。
?(5)費用:測試是要花錢(人力、物力、時間等)的。
?
2.5.3分析度量結果
對度量過程進行跟蹤和分析,需要時,可能會對度量程序、度量工具、度量方法,甚至原始數據,做出補充和調整。
?
2.5.4確認質量度量
首先,要確認度量過程是否與事實相符,脫離現實真實的度量,與目標再相符的結果也是沒有意義的。其次,是確認方法的有效性。
?
2.5.5其他度量
??*?分析模型的度量(對分析模型的度量以測試系統的大小)
??*?設計模型的度量(度量體系結構、數據和系統的復雜度)
??*?源代碼的度量(度量程序的長度、層次、開發量、時間等)
??*?對測試的度量(度量測試的寬度、深度、錯誤的級別)
??*?對維護的度量(度量軟件的穩定性)
?
三、全面軟件質量管理
3.1軟件項目成功率調查
?
?
3.2全面軟件質量管理具體步驟
3.2.1制定質量管理計劃
質量管理計劃是全面質量管理的行動綱領。?
事先預防的思想,“缺陷越早發現越早修改越經濟”的原則,缺陷糾正得越晚成本越大?:自從?Deming?的全面質量管理(?TQM?)原則在日本工業界獲得了巨大成功之后,這個原則迅速被傳播到了世界各個地方,同樣,全面質量管理原則也被應用到了軟件開發當中。如前面提到的,軟件開發也是一個工程性的工作,因此必須提高整個工程的質量。
產業界的大量研究(?TRW?、?Nippon?Electric?和?Mitre?Corp.?以及其它一些公司)表明設計活動引入的錯誤占軟件過程中出現所有錯誤(和最終的缺陷)數量的?50?%到?65?%。根據?IBM?的研究表明,假定在分析階段發現的錯誤其改正成本為?1?個單位的話,那么在測試之前(設計編碼階段)發現一個錯誤的修改成本約為?6.5?個貨幣單位,在測試時(集成測試,系統測試和驗收測試)發現一個錯誤的修改成本約為?15?個貨幣單位,而在發布之后(已經交到用戶手上)發現一個錯誤的修改成本約為?60?到?100?個貨幣單位。
?
3.2.2軟件質量保證活動
為項目準備SQA?計劃,參與開發項目的軟件過程描述,評審各項軟件工程活動,以驗證其是否符合定義的軟件過程,審核指定的軟件工作產品,以驗證其是否符合定義的軟件過程中的相應部分,確保軟件工作及工作產品中出現的偏差已文檔化,并且按照文檔化的
規程進行了處理,記錄所有不符合的部分,并報告給高層管理者。
?
3.2.3軟件評審
軟件評審是軟件過程中的“過濾器”,目的是盡早地發現工作成果中的缺陷,并幫助開發人員及時消除缺陷,從而有效地提高產品的質量,軟件評審包括“正式技術評審”、“走查”、“審查”、“輪查”等。
*?發現軟件的任何一種表示形式中的功能、邏輯或實現上的錯誤;
*?驗證評審中的軟件是否滿足其需求;
*?保證軟件的表示符合預先定義的標準;
*?得到以統一的方式開發的軟件;
*?使項目更易于管理。
?
?
正式技術評審流程
技術評審的好處有:
*?通過消除工作成果的缺陷而提高產品的質量;
*?技術評審可以在任何開發階段執行,不必等到軟件可以運行之際,越早消除缺陷就
越能降低開發成本;
*?開發人員能夠及時地得到同行專家的幫助和指導,無疑會加深對工作成果的理解,
更好地預防缺陷,一定程度上提高了開發生產率。
?
3.2.4質量保證,過程檢查
*?過程檢查計劃的要點是確定主要檢查項和檢查時間(或頻度)。
*?質量人員在執行過程檢查的時候,如果發現問題,應該立即記錄下來。過程問題也是缺陷,因此最好使用缺陷跟蹤工具,有助于提高過程檢查的效率。
*?質量人員首先設法在項目內部解決已經發現的質量問題,與項目成員們協商,給出解決措施。在項目內難以解決的質量問題,由上級領導給出解決措施。
?
?
?
3.2.5缺陷跟蹤工具
*?如果沒有缺陷跟蹤工具的話,人們只好用紙張或文件去記錄缺陷,不僅變更缺陷信息很麻煩,而且難以共享信息。缺陷跟蹤工具就是幫助項目成員記錄和跟蹤缺陷用的,一般都有數據庫支持,可以在局域網內運行。
*?由于缺陷跟蹤工具僅僅是一種輔助性的工具,我們沒有必要太在乎該軟件的功能,只要用起來方便就行。
*?缺陷的主要屬性:缺陷ID,?缺陷類型,缺陷狀態,缺陷描述,相關文件,嚴重性,優先級,報告者,報告日期,接受者,解決方案(建議),解決日期?。
*?缺陷跟蹤工具的常見功能:查詢缺陷,添加缺陷,修改缺陷,刪除,缺陷分類圖,缺陷趨勢圖,?Email。
?
3.2.6?人員
*?誰對軟件質量負責??是全員負責。任何與軟件開發、管理工作相關的人員都對質量產生影響,都要對質量負責。所以人們不要把質量問題全部推出質量人員或測試人員。
*?誰對軟件質量負最大的責任??誰的權利越大,他所負的質量責任就越大。質量人員是成天與質量打交道的人,但他個人并不對產品質量產生最大的影響,所以也不負最大的責任。
*?質量人員的主要職責:
(1)負責制定質量計劃(很重要但是工作量比較少);
(2)負責過程檢查(類似于CMM中的質量保證),約占個人工作量的20%;
(3)參與技術評審,約占個人工作量的30%;
(4)參與軟件測試,約占個人工作量的30%;
(5)參與軟件過程改進(面向整個機構),約占個人工作量的20%;
?
四、軟件質量管理現狀及發展趨勢
4.1軟件質量管理現狀
在現實軟件開發過程中,許多軟件產品卻時常陷入質量低下、甚至軟件不符合用戶需求的旋渦.究其根源,有以下幾個方面:
(1)軟件質量保證技術(審查、復審和測試)沒有貫穿到整個軟件開發全過程中去.
(2)在于這些軟件產品對其質量內涵的把握,僅僅停留在減少軟件運行錯誤、加強軟件測試,避免軟件缺陷的一般性層面,而對整個軟件開發生命周期的全過程質量管理,缺乏總體架構.
(3)測試管理的一些誤區也會導致嚴重的質量問題.沒有按照測試原則進行盡早測試、連續測試與自動化測試.是測試本省變得的形式化.
(4)質量是全過程的,不僅是測試.質量管理者應該將質量控制與保證著眼于整個軟件開發生存周期內.而事實上,質量管理者僅僅認為通過嚴格的測試就可以保證軟件質量.
?
4.2軟件項目質量管理的發展趨勢
缺陷分析的提出是由于在質量管理中人們逐漸意識到的一個開發人員如果在某個方面出了問題導致軟件缺陷的產生,那么今后的開發過程中他很可能在整個方面再次出問題,再次導致軟件缺陷的產生。因此,對在軟件開發過程中記錄的軟件缺陷進行分析不僅重要,而且必要。如果了解經常導致缺陷產生的活動,那么在今后開發中就可以著重防范這些活動,提高過程質量進而提高產品質量。
根本原因分析RCA和統計增長模型SGM是兩種常用的軟件缺陷分析方法。由于根本原因分析只有在得到了每個缺陷的所有細節之后才能進行有效的分析,因此它需要進行大量的活動才能完成。與之對比,統計增長模型提供了一個簡單地方法來跟蹤缺陷的走勢,但是由于對缺陷的細節了解太少,它只能進行缺陷的跟蹤卻不能對缺陷的修復活動給出任何建議。
在這種情況下,正交缺陷ODC被提了出來。ODC是一種快速得到缺陷細節的方法,它通過定義和捕獲缺陷屬性使得對缺陷進行數學分析、建模成為可能。正將缺陷分類的數據分析提供了一個又價值的評估軟件生命周期各個階段、需求、設計、開發、測試以及維護以及產品和過程熟度的方法。
ODC是IBM華生研究中心在20實際90年代初提出的一個概念。最初基于ODC的分析方法主要用于在過程中把實際缺陷數據的反饋提供給開發人民和測試人員。此外,作為一種加強ODC的基本方案中已考慮進了面向對象編程這個因素。這些年來,ODC已經被實驗性的用于60多個項目?,F在IBM有超過4000名軟件專業人員受其影響。如Motorola、Tandem和Nortel也已接受了這項技術。
?
五、學習《軟件過程與CMM》課程感受
在現在這個信息發達的時代,軟件質量的重要性也越來越重要,越來越被人們所認識。軟件是產品、是裝備、是工具,同時我也任務軟件產品也是藝術,其質量決定這顧客的滿意度。所以在軟件開發過程中需要一個有力的工具來管理其開發過程,以使軟件產品更加完美。
CMM(Capability?Maturity?Model?for?Software)是指“能力成熟度模型”,它的本質是軟件管理工程的一個部分。它是對于軟件組織在定義、實施、度量、控制和改善其軟件工程的實踐中各個發展階段的描述。CMM的核心是把軟件開發視為一個過程,并根據這一原則對軟件開發和維護進行過程監控和研究,以使其更加科學化、標準化、使企業能夠更好地實現商業目標。其目的是通過一個合理的體系模型來對軟件組織開發能力進行合理有效的評估,幫助軟件組織在模型實施的過程中提高軟件過程管理能力,降低軟件系統開發風險,在預定的項目周期和預算內開發出高質量的軟件產品。它是學術界和工業界公認的有關工程和管理實踐的最佳的軟件過程。為評估軟件組織的生產能力提供了標準,也為提高軟件組織的生產過程指明了方向。
短短八周時間轉瞬即逝,《軟件過程與CMM》這門課程已進入尾聲,作為一門選修課,我對該課程的熱愛程度好不亞于任何必修課,這八周以來,該課程我從未出現過任何遲到早退缺堂的情況,對于這樣的偏管理方面的課程,我是情有獨鐘的,看多了工科性質的專業課,在這門課程的洗禮下,感覺自身在專業的全局體味上有了較大的提升,學習軟件工程,不僅僅是寫代碼編程,相反,這只是一個很小的部分,而更多上層或是設計方面的事情才是一個合格大學生所具備的本領。
我很喜歡汪老師的教學風格和教學理念,也很喜歡這門課程,只是感覺課時太少,以至于早早結束這門課程而留念不已。往后,我定會選修老師的其他課程,爭取在汪老師的帶領下學到更多的專業知識和職業素養。
這篇論文學生花了很長的時間來反復琢磨,一字一句都是經歷了無數次心理斗爭后的產物,每一個圖形圖表都是自己的獨有創作,在上次的課堂課堂討論過程中,我更是踴躍地上臺擔任PPT講解負責人。在往后的學習過程中,學生一定更加努力,不負老師所望!
?
六、參考文獻
[1]?朱少民.?軟件過程管理.?北京:清華大學出版社,2007,4-1
[2]?扎罕.?軟件過程改進.?機械工業出版社,2003,4-1?
[3]?劉孟仁.?能力成熟度模型軟件過程改進指南.?美國卡耐基梅隆大學軟件工程研究所,電子工業出版社.?2003,4-1
?
總結
- 上一篇: 医疗器械软件质量体系等
- 下一篇: 软件项目管理 1.2.PMBOK与软件项