项目管理系列之质量管理
??? 提起軟件質量管理,人們更多地會想起ISO9001、CMM、CMMI這些“質量管理圣經”。但國內企業做了這么多年的質量認證,卻沒有使軟件質量有大幅度地提高。多數企業為了節省成本和趕進度,往往會忽略質量管理,導致軟件質量很差——投產后的軟件經常會被用戶發現很多Bug。實際上,在項目實施中開展質量管理工作十分重要,因為產品上線后的質量問題往往意味著更大的投入。
??? 軟件質量管理包括以下活動:質量計劃編制、質量保證、質量控制、同行評審、軟件測試、軟件缺陷跟蹤等,優秀的軟件質量管理能夠在很大程度上減少軟件開發過程的不確定性。
??? 質量計劃是質量管理的第一過程域,它主要指依據公司的質量方針、產品描述以及質量標準和規則等制定出來實施方略,其內容全面反應用戶的要求,為質量小組成員有效工作提供了指南,為項目小組成員以及項目相關人員了解在項目進行中如何實施質量保證和控制提供依據,為確保項目質量得到保障提供堅實的基礎。
??? 質量保證是貫穿整個項目全生命周期的有計劃和有系統的活動,經常性地針對整個項目質量計劃的執行情況進行評估、檢查與改進等工作,向管理者、顧客或其他方提供信任,確保項目質量與計劃保持一致。軟件質量保證人員以獨立審查方式,從第三方的角度監控項目開發任務的執行,就軟件項目是否遵循已制定的計劃、標準和規程給開發人員和管理層提供反映產品和過程質量的信息和數據,提高項目透明度,確保項目實施中質量問題盡早發現并解決,協助軟件開發組取得高質量的軟件產品。
??? 質量控制是對階段性的成果進行測試、驗證,為質量保證提供參考依據。
??? 同行評審過程利用技術同行與行業專家的專業知識,及早發現軟件問題。
??? 軟件測試是保證軟件質量不可或缺的重要組成部分,經過測試計劃、測試案例的設計與評審,引入專業的測試工具,對測試過程、案例、BUG進行管理,實現自動化回歸測試、性能測試,軟件系統的正確性、穩定性均會有大幅提升。
組織級知識庫綜合了項目經驗教訓,能夠對缺陷的預防和跟蹤提供有效的幫助。
??? 軟件質量管理應該貫穿軟件開發的全過程,而不僅僅是軟件本身,軟件質量不僅僅是一些測試數據、統計數據、客戶滿意度調查回函等等,衡量一個軟件質量的好壞,應該首先考慮完成該軟件生產的整個過程是否達到了一定質量要求。
??? 一、??? 選擇主題的背景及原因/預期結果?
????? 隨著計算機與因特網的普及和社會信息化進程的加快,計算機軟件的地位已發生了巨大的變化,它已成為支撐社會正常運行和發展的重要基礎設施。軟件變得越來越復雜,人們對軟件的要求也越來越高,特別是對軟件的可靠性、易用性、應變性和兼容性等各方面都提出了很高的要求。?
??? 軟件的生產方式也發生了巨大的變化。開始時是手工業生產方式,軟件的質量依賴于軟件編制者個人的技藝和才智。后來,演變為工業化的規模生產,軟件成為軟件公司一批開發人員共同協作的產品。這時,軟件產品的質量在很大程度上取決于軟件公司實施的開發過程的優化程度和具體的管理水平。現在,又進一步擴展為軟件生產的社會化。一個軟件系統常常要由不同軟件專業公司生產的軟件構件產品集成而成。于是為保證軟件的質量,又要求有相關的統一標準和協議,以及按照標準進行的測試和認證。軟件質量的控制和管理技術是一門實踐的技術,它是根據軟件開發的大量實踐經驗積累而來的。這其中有很多成功的經驗,也不乏慘痛的失敗教訓,例如:
??? (1)在美國宇航局的"旅行者"計劃中,天王星探測器就是因為深度太空網絡軟件發送信息遲緩和能力衰竭而處于危險之中。
??? (2)軟/硬件干擾問題是使一些航天飛機經常推遲發射時間的主要原因。
??? (3)在美國國防部某項工程中,事先設計好的先進程序無一可用,從而導致AFTI/F-16的首航時間耽擱了一年。坦誠地講,我們國家軟件產業發展較晚,目前真正能稱得上是有一定規模的,具有大型自主軟件開發能力的軟件公司還不多,還缺乏這種規模化開發軟件的實踐經驗。因而,人們往往對軟件質量管理的重要性和必要性認識不足,理解不深。
??? 近年來,軟件質量問題對整個軟件產業的影響日益加深,軟件質量控制工作已經成為其中不可或缺的部分。同時,進行軟件質量控制也是軟件項目中比較繁重的工作,涉及質量計劃編制、質量保證、質量控制等多個方面。
??? 在很多軟件企業里,軟件質量管理在內部開發產品時做的相對較好:因為產品開發通常在各個軟件企業的研發中心進行,涉及的人員以內部為主,進度壓力相對較小,可以投入時間和精力來開展軟件質量管理。對于有客戶進行參與的軟件實施項目,多數企業為了節省成本和趕進度,往往會忽略質量管理,實際上,很多企業通過ISO9001、CMM、CMMI等質量認證的目的就不是為了提高質量:有的企業是為了跟風,有的企業則是為了向客戶展示證書。
在軟件開發實踐中,軟件質量管理可以依靠流程管理(如缺陷處理過程、開發文檔控制管理、發布過程等),嚴格按軟件工程執行,來保證質量。如:
??? ·通過從"用戶功能確認書"到"軟件詳細設計"過程的過程定義、控制和不斷改善,確保軟件的"功用性";?
??? ·通過測試部門的"系統測試"、"回歸測試"過程的定義、執行和不斷改善,確保軟件的"可靠性"和"可用性";?
??? ·通過測試部門的"性能測試",確保軟件的"效率";?
??? ·通過軟件架構的設計過程及開發中代碼、文檔的實現過程,確保軟件的"可維護性";?
??? ·通過引入適當的編程方法、編程工具和設計思路,確保軟件的"可移植性"等等。
建立項目質量管理體系,能夠較好地解決目前項目開發過程存在的主要問題,大幅提升組織的計劃與監控能力,使目標管理得到落實,有利于發揮信息科技的價值,提高軟件交付質量,提升客戶服務水平。????
??? 1.規范項目立項
??? 項目立項過程強調了項目前期的調研工作,要求項目立項必須進行業務可行性分析、技術可行性分析、投入產出分析和項目風險評估,同時要加強項目過程的財務管理和資源管理。項目結項后及時啟動后評價機制,保證所有項目通過同樣的立項過程,這樣做能夠有效地解決項目前期準備工作不夠充分而浪費信息科技資源的問題。????
??? 2.規范需求管理
??? 需求開發與管理過程為項目組分析、控制和跟蹤需求提供依據,保證項目范圍變化的可控性。在需求階段建立以技術人員為主導、業務專家配合的需求開發分析過程,能夠減少需求定義、非功能需求、運營需求、安全需求、需求可測試等各方面的缺陷。同時,通過同行評審過程、變更管理過程,需求跟蹤矩陣等工具,建立需求準入的有效控制手段和標準,能夠有效解決項目需求不明確以及在開發過程中需求頻繁變更的問題。
??? 3.提升項目整體管理能力
??? 項目整體管理能力主要體現在集成項目計劃、實施、控制的能力,項目整體管理包括如下幾個方面:項目計劃、跟蹤與監控、風險管理、數據統計分析過程、軟件質量保證等。這幾個方面貫穿、交織于整個軟件開發過程之中。其中,項目計劃是項目管理的基礎,主要包括工作量、進度以及成本的估計,并根據估計值制訂項目開發計劃,包括項目范圍、進度計劃、質量管理、配置管理、外包管理、跟蹤與監控、測試管理、資源管理、溝通管理、培訓等子計劃;跟蹤與監控過程、風險管理及數據統計分析過程主要根據項目計劃度量項目進度、成本、質量、風險、用戶滿意度等方面的數據及時分析項目實施過程出現的偏差,有效防范和化解項目的風險;軟件質量保證人員在項目計劃階段協助項目經理制訂項目計劃,提供關于項目估算、標準使用、過程裁剪、生命周期模型選擇等方面的咨詢和指導,在監督過程中一旦發現不一致的情況,及時向項目經理報告,提供解決建議并跟蹤解決,使組織及項目經理對項目的情況及風險管理能力得到進一步提高。
??? 除了規范過程活動,項目經理的個人管理能力、溝通能力以及統一引入適當的項目管理軟件工具和過程知識庫對于提高項目整體管理能力及管理效率也起到十分重要的作用。
??? 4.降低外包管理風險
??? 外包管理過程包括制訂外包管理計劃、外包商選擇、簽訂外包合同、跟蹤監控合同執行、驗收測試、交付驗收、外包商評價等關鍵活動,外包經理與質量保證人員定時組織評審外包商的開發計劃、工作產品,跟蹤外包項目計劃執行情況、配置活動、質量保證活動,將有效減少項目過程中信息不對稱,提高對外包公司的管理能力,外包項目成功率,降低和規避外包風險。
?? ?5.提高軟件質量
?
?一、??? 應用的目的?
???? 軟件是信息技術的核心。軟件產品的質量直接影響到國民經濟信息系統和國際裝備系統的可靠性與安全運行,在國內外軟件市場激烈的競爭中,提高軟件質量已經成為一個軟件企業生存發展的關鍵問題,軟件企業或從事軟件工程項目的機構在實踐工作中在軟件質量問題上應認識到:
???? 1、 軟件本身的特點和目前軟件開發模式使隱藏在軟件內部的質量缺陷不可能完全避免,這包括:
????? 1).軟件需求模糊以及需求的變更,從根本上影響著軟件產品的質量。
????? 2).目前廣為采用的手工開發方式難于避免出現差錯。
????? 3).軟件開發過程中各個環節的接口處不易保證正確性。
????? 4).軟件測試技術具有局限性。
????? 5).軟件質量管理的實際困難。
???????? A. 軟件質量指標許多尚未量化。
???????? B.目前許多軟件機構的產品質量責任尚未落實到人
???????? C.不規范的開發習慣難于糾正。
???????? D.人員之間的溝通容易出現問題。
???????? E.軟件項目組中人員流動會影響產品質量。
?? 2、 從技術上解決軟件質量問題的效果十分有限
???? 1).構件技術尚未普及
???? 2).我們對軟件質量本身的認識還很不成熟
???? 3).我們尚未找到理想的軟件測試技術
? 3、 技術人員和管理人員在軟件開發工作中仍有一些不正確的認識需要糾正,這需要在企業建立和實施質量體系的過程中加以解決。
? 4、 目前多數軟件企業的質量管理尚未得到應有的重視,他們需要認真總結教訓,并將其滲入質量體系形式制度化的規定。
? 5、 軟件開發必須靠加強管理來實現工程化,質量管理要體現在建立和實施開發規范中,保證軟件工作的各個步驟和各個崗位的工作都符合要求,并且即使產品在使用中出現了問題,也能及時的發現,及時妥善解決。
???? 科學的軟件質量管理、控制、度量和保障的方法和手段是可以形成一種面向軟件產業發展的服務能力的,一旦這種能力與軟件產業結合并廣為產業界所接受,它將對軟件產業的發展起到巨大的推動作用。
???? 質量監測分析時,對于已發現的不合格或潛在不合格,應制定相應的糾正措施或預防措施,以消除不合格或潛在不合格的原因,防止不合格的發生。糾正措施或預防措施制定后,應對質量計劃進行相應的調整,保證項目的順利實施。
???? 項目收尾包括項目評估和項目終止兩個階段。項目收尾階段的質量控制是一個非常重要而又容易忽視的內容。
???? 項目質量評估不僅僅是在項目完成后進行,還包括對項目實施過程中的各個關鍵點的質量評估。項目質量評估看起來屬于事后控制,但它的目的不是為了改變那些已經發生的事情,而是試圖抓住項目質量合格或不合格的精髓,以使將來的項目質量管理能從中獲益。
???? 項目終止階段,是在決策項目終止后,檢查項目文件資料完備,包括項目施工質量驗評表、竣工報告等,同時進行項目總結。項目總結是一個把實際運行情況與項目計劃不斷比較以提煉經驗教訓的過程。通過項目質量計劃和總結,項目過程中的經驗和教訓將得到完整的記錄和升華,成為“組織財富”。
???? 3. 軟件產品質量的保證是軟件項目管理的一個重要內容。軟件項目的目標不僅僅是進度目標和成本目標,更重要的就是質量目標,質量直接決定了軟件產品能否生存。前提是我們在做項目計劃的時候首先要根據需求確定質量目標和制定質量計劃。
???? 1) 過程
???? 要提高質量需要強調我們對產品質量的保證不是依靠的團隊中一兩個重要成員,而是我們有相應的過程和方法論來保證質量,保證產品質量的過程是可以持續的。對于很多項目我們都不建議采用CMMI里面較為重量級的各種過程,但是對于產品質量提升有幫助的各種過程我們仍然需要去將其規范化和流程化。與此相關的主要有規范類的文件,比如需求編寫模板和規范,設計規范和模板,代碼編寫規范和模板,數據庫設計的規范和模板,界面設計規范和模板,測試用例模板。對于過程管理方面需要定義的主要有任務和工件的輸入輸出要求,配置管理和源代碼管理,軟件生命周期模型,缺陷跟蹤和管理,問題和風險跟蹤管理,變更管理。
2) 培訓
??? 最重要的質量意識就是預防勝于檢查,強調一次要事情做對,強調上游工序為下游提供合格的中間產出物,盡量減少各種缺陷的泄露。很多時候質量問題并不復雜,更多是團隊成員沒有質量意識,沒有負責任的工作態度。提升質量最關鍵有兩個方面,首先是我們都有意愿和意識來提升產品質量,其次是我們要有相應的能力和技能來保證產出物的質量。
???? 第一點我們依靠的團隊績效規則的建立,團隊建設,質量文化的組建形成,員工態度和責任感的培養等內容。第二點我們強調的是培訓,以師帶徒,自我學習,個人知識管理方法,問題管理,學習型組織,讀書會等各種方式來提升技能。
3) 評審
???? 評審是軟件開發過程中保證質量的一個重要活動,項目軟件開發往往會跟蹤選擇的軟件生命周期模型分為多個階段,對于較大點的項目還有嚴格的崗位角色劃分,每個階段都是不同的成員在進行工作。因此如果各個階段的產出物的質量不能夠很好保證的話,將導致缺陷泄露和后續大量的返工,這些都是我們不希望看到的壞質量成本投入。
???? 首先評審不是來檢查產出物的各種低級錯誤的,每個人在思考問題上都有局限性和盲點。評審是涉及到需求,設計,開發,測試等各種角色的成員共同來從不同的角度來發現工件的各種問題。比如對于需求問題,測試人員在評審的時候重點關注的是該條需求描述和業務規則的可測試性,而設計和開發重點是可實現性。評審涉及到正式同行評審,多人復審,單人復審,代碼走查等各種方式,需要根據項目的實際情況來選擇使用。我們需要重點防止的就是需求和總體設計階段的缺陷泄露,對于這種泄露往往都會造成大量的返工。
4) 測試
???? 測試是保證軟件質量的最后一道關口,是一種迫不得已的行為,根據我們的質量意識應該要盡量做到問題不是到測試階段才發現和暴露出來。很多問題在測試階段才發現返工成本都是很大的。測試有單元測試,集成測試和系統測試,驗收測試等各個階段。在某一個功能或模塊在交付給測試人員進行測試的時候,開發人員應該根據需求和設計進行較為充分的自測。這樣的話系統測試的重點才能夠真正去關注全流程的貫通和各種可能的業務場景組合和編輯,而不是關注某一個具體的實現功能點。
???? 敏捷開發里面強調測試驅動和單元測試,但敏捷里面的單元測試還有個重要的作用是通過單元測試的編寫來細化需求和設計,這對團隊每個成員都會有較高的技能要求。同時要注意單元測試的投入成本,很多時候我們來開發人員的自測和系統測試都做不好就去盲目的實施單元測試是得不償失的。
? ??? 總結?
??? 每個項目的實施總是擁有同樣的總體目標:質量、時間和成本。三者是一個相互制約、相互影響的統一體,其中任一項目標變化,都會引起另兩個目標變化,并受其制約。如何合理的保證項目質量,正確處理質量與時間、成本之間的矛盾是項目質量管理的一個難點,這需要整合項目所有方面的內容,保證按時、低成本地實現預定的質量目標。
???? 根據側重點不同,項目可分為質量傾斜型、工期傾斜型及成本傾斜型體系。我們在編制項目計劃時,一般而言是時間、成本、質量標準均已確定,在項目實施過程中就需在從客觀因素、具體情況出發,根據將要采取的行動和可能導致的后果進行綜合分析研究;按切合實際的原則,使項目進展平衡有節奏地進行,以求達到預期目標。避免出現工期緊張或成本減少,導致質量降低的現象,而質量下降又往往造成返工等后果而導致延長工期和增加成本。
???? 在IT業處于發展的初級階段時,由于大多數軟件比較簡單,軟件質量較容易控制,對其的測試工作也不復雜,往往是軟件開發企業在開發完成后進行一下簡單的檢測就可以了。但在IT業發展到一個高級階段后,系統越來越精密,而軟件也越來越復雜,影響的范圍也不斷擴大。因此,這時期開發的軟件就必須進行十分嚴格的測試。否則,不僅會引發企業銷售收入下降和運營成本的增加,甚至給企業帶來法律責任。而在金融、電信這種系統趨于全國集中,風險波及面大,業務影響廣泛的行業,其產生的后果更是不堪設想。全面、嚴謹的測試和評估是降低企業IT系統風險的最佳實踐,沒有經過質量測試就上線運行的IT系統猶如一顆“定時炸彈”。
???? 人是一切人類活動的基礎,要提高軟件開發質量,就必須以人為本,首先提高人的質量。通過標準化、規范化的建設和落實,通過創建良好的社會和企業質量環境,在企業內部不斷改進開發過程質量、項目管理質量,改進質量措施。針對具體項目進行良好的分析設計規劃,編寫出質量優良的系統程序,確保數據(信息)及其管理的質量,為客戶、為社會提供滿意的產品和服務。
? 相信隨著企業對軟件質量重視程度的提高,質量管理在項目中的應用越來越規范,不久的將來,我國的軟件行業的水平將會得到巨大的提升。
轉載于:https://www.cnblogs.com/activiti/p/7088672.html
總結
以上是生活随笔為你收集整理的项目管理系列之质量管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用模块-----configparse
- 下一篇: FaceBook推出的Android图片