質量保證

質量保證QA關注在軟件產品生成的整個過程,主要驗證軟件產品開發過程中相關實施過程的完整性、一致性和有效性,確保開發活動和測試活動等遵循正確的過程,為軟件產品達到合適的質量級別提供信心。為了實現過程的可重用性和持續改進,組織往往會把過程進行標準化,例如:定義子過程、過程的里程碑點、過程的階段輸入和輸出、每個時間點需要完成的工作等。軟件產品隨著生命週期不斷增加和成型,想要修復其在早期引入的缺陷,時間和成本都將成倍增加。而質量保證QA的基本假設是過程質量決定了軟件產品質量。當過程正確開展時,確保過程的每個階段得到了良好的遵循,每個階段引入的缺陷盡量在本階段得到發現和修復,最大程度的實現缺陷的階段遏制能力。同時,在當前階段發現和修復的缺陷,有助於後續階段的缺陷預防。另外,通過根本原因分析等技術消除在軟件工作產品中引入缺陷的根本原因,或者在適當時候開展回顧會議以總結經驗和教訓,都有助於過程改進,從而可以在將來更好的實現質量保證。

對於軟件開發項目而言,控制是十分重要的管理活動。軟件質量保證(Software Quality Insurance,SQA)是在軟件過程中的每一步都進行的“保護性活動”。SQA主要由基於非執行的測試(也稱為評審)、基於執行的測試(即通常所說的測試)和程序正確性證明。軟件評審是最為重要的SQA活動之一。它的作用是,在發現及改正錯誤的成本相對較小時就及時發現並排除錯誤。審查和走查是進行正式技術評審的兩類具體方法。審查過程不僅步數比走審多,而且每個步驟都是正規的。由於在開發大型軟件過程中所犯的錯誤絕大數是規格說明錯誤或設計錯誤,而正式的技術評審發現這兩類錯誤的有效性高達75%,因此是非常有效的軟件質量保證方法。

功能測試

性能測試

負載測試

安全測試

擴充測試

設備測試

軟件開發正在經受一場危機。費用超支(特別是在維護階段的花費太大)、生產率低下、 以及質量不高等問題正困擾著它。簡言之,軟件開發經常處於失控狀態。軟件之所以失控是因為沒有度量。Tom Demarco曾經說過:”沒有度量就不能控制。”這種說法是好的,但不完全。並不能說為了獲得控制必須進行度量。度量活動必須有明確的目標或目的,而正是這決定著我們選擇哪種屬性和實體進行度量。這個目標與軟件開發、使用時所涉及的人的層次有關。

對管理者而言

1.需要度量軟件開發過程中的不同階段的費用。
例如:度量開發整個軟件系統的費用(包括從需求分析階段到發布之後的維護階段)。必須清楚這個費用以決定在保證一定的利潤的情況下的價格。
2.為了決定付給不同的開發小組的費用,需要度量不同小組職員的生產率。
3.為了對不同的項目進行比較、對將來的項目進行預測、建立基線以及設定合理的改進目標等,需要度量開發的產品的質量。
4.需要決定項目的度量目標。例如:應達到多大的測試覆蓋率、系統最後的可靠性應有多大等。
5.為了找出是什麼因素影響著費用和生產率,需要反複測試某一特定過程和資源的屬性。
6.需要度量和估計不同軟件工程方法和工具的效用,以便決定是否有必要把它們引入到公司中。

對軟件工程師而言

1.需要製定過程度量以監視不斷演進的系統。這包括設計過程中的改動、在不同的回顧或測試階段發現的錯誤等等。
2.需使用嚴格的度量的術語來指定對軟件質量和性能的要求,以便使這些要求是可測試的。例如:系統必須”可靠”,可用如下的更具體的文字加以描述:”平均錯誤時間必須大於15個CPU時間片。”
3.為了合格需要度量產品和過程的屬性。例如:看一個產品是否合格要看產品的一些可度量的特性如”β測試階段少於20個錯誤。”,”每個模塊的代碼行不超過100行。”,和開發過程的一些屬性如”單元測試必須覆蓋90%以上的用例。”等。
4.需要度量當前已存在的產品和過程的屬性以便預測將來的產品。例如:
(1).通過度量軟件規格說明書的大小來預測目標?的大小。
(2).通過度量設計文檔的結構特性來預測將來維護的”盲點”。
(3).通過度量測試階段的軟件的可靠性來預測軟件今後操作、運行的可靠性。

項目度量

項目度量是針對軟件開發項目的特定度量,目的在於度量項目規模、項目成本、項目進度、顧客滿意度等,輔助項目管理進行項目控制。

規模度量

軟件開發項目規模度量(size measurement)是估算軟件項目工作量、編制成本預算、策劃合理項目進度的基礎。規模度量是軟件項目失敗的重要原因之一。

成本度量

軟件開發成本度量主要指軟件開發項目所需的財務性成本的估算。類比估算法。細分估算法。週期估算法。

滿意度度量

客戶滿意是軟件開發項目的主要目的之一,而客戶滿意目標要得以實現,需要建立客戶滿意度度量體系和指標對客戶滿意度進行度量。

  軟件項目管理是為了使軟件項目能夠按照預定的成本、進度、質量順利完成,而對成本、人員、進度、質量、風險等進行分析和管理的活動。實際上,軟件項目管理的意義不僅僅如此,進行軟件項目管理有利於將軟件開發人員的個人開發能力轉化成企業的開發能力,企業的軟件開發能力越高,表明這個企業的軟件生產越趨向於成熟,企業越能夠穩定發展。同時,隨著軟件開發規模及開發隊伍的逐漸增大,軟件開發不再是向過去那樣一二個開發人員即可解決的事情。迫切需要一種開發規範來規範每個開發人員、測試人員與支持人員的工作,每個項目組成員按約定的規則準時完成自己的工作。同時採用規範化管理,專業分工也可以降低對開發人員的要求,從而降低產品研發成本。

  怎樣才能做好軟件項目的質量管理呢?在理解現代軟件項目的質量管理的理念的基礎上,使項目的質量管理具有可操作性和可衡量性。

預防體系

軟件開發過程中有效地防止工作成果產生缺陷。

檢查體系

在軟件開發過程中能儘早發現問題,儘早解決問題。

搶救體系

在軟件產品發布之後,若發現問題,回應、解決,減少影響,

全面的質量保證

提高溝通效率及服務質量,挖掘商機及保護公司的利益