1、第八章第八章大綱l軟體品質l品質管理 l軟體度量l品質保證與品質控制比較l軟體品質保證與測試l結論軟體品質軟體品質l品質的重要性與特性l何為軟體品質?l品質模型品質的重要性與特性品質的重要性與特性1 1l重要性l品質對於現今社會經濟發展是有很重要的作用。l品質是一種社會進步與生產力發展的指標。l以品質去求生存與發展,是現今各家企業公司最重要的理念。l所以我們應該要高度重視品質問題,並且不斷的盡力提高與發展。品質的重要性與特性品質的重要性與特性2 2l產品品質l效能根據產品主要使用目的所提出的各項功能要求。l可靠性根據規定的時間與條件下,能夠完成規定之功能的能力。l壽命l指得是產品本身所能正常使
2、用的期限。品質的重要性與特性品質的重要性與特性3 3l經濟性指的是產品在壽命周其中的總費用,包括生產與使用成本。l安全性指的是產品在流通後與使用過程期間,保證安全的程度。l外觀性指的是產品本身的外觀、美學、造型、款式、色彩與包裝等等。品質的重要性與特性品質的重要性與特性4 4l品質特性ISO9126 定義軟體品質特性(Software Quality Characteristics)是軟體產品的一組屬性,用來對軟體的能力進行描述和評估。品質特性包含:l品質特性參數品質特性包括效能、可維護性、可靠性、健壯性和使用者有好性。品質的重要性與特性品質的重要性與特性5 5l真正品質特性與代用品質特性 真
3、正品質特性是使用者所要求的使用品質特性。要明確的去區別真正品質特性與代用品質的區別,去研究品質標準和使用品質要求之間的符合程度,並且去做必要性的修改與調整。l品質特性質 品質特性值通常表現為各種數值的指標。根據品質的指標性質不同,可以在區分為兩類:l計數值:指品質特性值只能取某組特定數值,而不能取這 些數值之間的數值。l計量值:品質特性值可以任取範圍內的可能數值。何為軟體品質何為軟體品質?1 1l品質是客戶要求、期望的有關產品或服務的一組特性,落實到軟體上,這些特性就是軟體本身的功能、安全性和效能等,而這些特性決定了一個軟體產品讓顧客的的滿意度,並且這些特性是可以度量的。l品質最後一道的檢驗者
4、就是顧客本身,所以簡單說品質就是顧客滿意度。何為軟體品質何為軟體品質?2 2l保證軟體品質就是要滿足軟體本身所聲明的功能與效能。從以下兩個定義可以理解:l軟體本身需求是品質度量的基礎,與需求不符合的話就是品質不高。l制定一套標準的指導軟體發展定義。並且要按照所定義的標準去實施,否則可能會導致品質不高。何為軟體品質何為軟體品質?3 3lANSE/IEE 規定了六個軟體品質特性要素:l正確性l可靠性l易使用性l效率l可攜性l可維護性品質模型品質模型1 1lBoehms Quality Model:高階層l現狀實用性:使用時是否易操作、可靠並且有效 率。l維護性:修改、測試和理解是否容易。l可攜性:
5、是否可以隨著環境改變,功能還可以使用。品質模型品質模型2 2中階層l可攜性:可以應用在其他電腦環境,而非單 只可被某種電腦環境使用的特性。l可靠性:程式碼可被預期能使人滿意地執行預期的目標功能。l效率:能夠直接達到功能目的且不浪費資源。品質模型品質模型3 3l人性工程:有人性化的特性。l可測性:程式碼有助於建立驗證準則並可支援其性能之評估。l可了解性:可以清楚瞭解程式碼用意。l可變性:有彈性,需要改變時有助於改變。品質模型品質模型4 4圖:Boehm 模型品質模型品質模型5 5lMcCall Model:McCall Model進一步將軟體特性以階層式架構成三種型 態:因子(factors)、
6、準則(criteria)及衡量指標(metrics)。l以下是十一種因子:l正確性:程式滿足其規格及達到顧客要求的程度。l可靠性:程式能精確地執行其預期功能的程度。品質模型品質模型6 6l效率:程式執行其功能時所需的計算資源與程式碼的量。l完整性:對於軟體或資料被非授權者使用的情況可被控制的程度。l可用性:學習、操作、輸入與輸出所需的工作量。l維護性:發現錯誤和修復的所需的工作量。品質模型品質模型7 7l彈性:修改操作程式所需的工作量。l可測性:測試程式以確定其執行功能所需的工作量。l可攜性:將程式轉移至其它軟硬體環境時所需的工作量。l可重用性:指程式可在其它應用程式中重複使用的程度。l合作性
7、:系統間互相配合所需的工作量。品質模型品質模型8 8圖:Mc Call Model(1)品質模型品質模型9 9圖:Mc Call Model(2)品質管理品質管理 l品質管理的定義l品質管理的任務l全面品質管理的定義l全面品質管理的特點l全面品質管理的工作模式品質管理的定義品質管理的定義l品質管理是確定值品的方針、目標與職責。l品質體系中通過將實施的全部管理職能的所有活動。如:品質策劃、品質控制、品質保證和品質改善。l品質管理是各階級管理者的職責,但為最高管理者去領導。l企業管應以管理為綱 品質管理的任務品質管理的任務l基本任務是正確的制訂和貫徹執行品質目標和政策。l不斷提高產品與服務品質去滿
8、足顧客和使用者的需求。l時間表被縮短、壓縮預算、人員變化、使用者需求改變等,都是會導致軟體品質變差的原因。全面品質管理的定義全面品質管理的定義l一個組織以品質為中心,以組織內外部全員參與為基礎,目的在於通過讓顧客滿意和本組織所有成員及社會受益而達到長期成功的管理途徑。全面品質管理的特點全面品質管理的特點1 1有四個特點:l全面品質管理l除了對於產品品質進行管理以外,也需要去針對工作品質和服務品質進行管理。l全程過程品質管理l產品品質會有一個產生、形成和完成的過程。l把整個產品品質形成的各各環節全面管理起來,形成一個綜合性的品質管理體制。全面品質管理的特點全面品質管理的特點2 2l全員參加品質管
9、理l要求企業內外部所有的全體人員要來參加,並且在於自己所處的工作當中,去執行品質管理的工作。l全面品質管理採用的方法是多樣性l因為考慮到影響產品品質的因素越來越多,人本身、心理、外在因素跟企業內部因素,所以單一管理的方法是不夠,需要綜合更多方面的方法才會更有實效。全面品質管理的工作模式全面品質管理的工作模式1l全面品質管理採用一套科學性並合理性的程式模式去運作。lPDCA法CCheckDDoAActPPlan圖:PDCA 循環法全面品質管理的工作模式全面品質管理的工作模式2lStep1:計畫(Plan)階段,就是要適應使用者的要求,以達到為經濟成效的目標。lStep2:執行(Do)階段,按照制
10、定的計畫去執行。lStep3:檢查(Check)階段,對照計畫,檢查執行的情況和效果,以提早發現問題。lStep4:處理(Act)階段,根據最後檢查的結果,去採取措施,並修正。軟體度量軟體度量l軟體度量的概念l軟體度量的類別l品質度量的內容l品質度量的範圍l品質度量作用與目的l軟體度量的活動階段軟體度量的概念軟體度量的概念1l度量是指根據一定的規則,去將數字和符號賦予給系統、組成元件等實體的特定屬性。使我們可以能夠清楚地理解實體與其屬性的量化表示。l為了分析、理解,可以運用指標(Indicator)來表示度量活動的結果。l度量是對軟體產品進行範圍廣泛的測度,並且給系統、組成原件和過程的某個給定
11、屬性的度的定量測量。軟體度量的概念軟體度量的概念2軟體過程資料收集度量計算度量評估軟體專案產品品質指標 度量測量圖:測量、度量和指標的關係圖軟體度量的類別軟體度量的類別主要有三類別:l軟體過程度量l用於過程的最佳化和改進。l軟體專案度量l用於專案控制和生產率評估。l產品品質度量l用於產品評估和決策。品質度量的內容品質度量的內容1一般常用的品質度量有四種:l軟體規模度量l千行程式碼行數(KLOC)。l幫助我們預測完成產品所需要的程式碼和合理的工作量,監控研發進度的正常進行。l軟體複雜度度量l有結構複雜度指標。l預測軟體產品各部分的複雜性,合理分配資源與人力,以獲得為高的效率比。品質度量的內容品質
12、度量的內容2l軟體缺陷度量l等效問題密度=等效問題/KLOC。l可以幫助我們確定產品缺陷變化的狀態,並且可以知道缺陷活動所需的工作量,和分析產品缺陷分布狀況,預測產品發佈後缺陷的影響情況。品質度量的內容品質度量的內容3l軟體可靠性度量l平均失效前時間(MTTF)指軟體在失效前正常工作的平均統計時間。l平均失效恢復時間(MTTR)指軟體失效後恢復正常工作所需的平均統計時間。l平均失效間隔時間(MTBF)指軟體在相繼兩次失效之間正常工作的平均統計時間。lMTBF=MTTF+MTTRl可靠性=MTTF/MTBF*100%品質度量的範圍品質度量的範圍l從需求分析到設計、執行、測試和軟體維護。l從開發者
13、、專案管理者、測試者和使用者。l從程式碼實現到各種評審檢視。品質度量作用與目的品質度量作用與目的1l作用l用資料指標表明驗收標準l分配資源進行量化均衡l監控專家進度和預見風險l預計和控制產品的進度、成本和品質品質度量作用與目的品質度量作用與目的2l目的l(1)理解l通過分析去獲得過程、產品、資源和環境資源。l(2)預測l由己知的要素去推斷其他要素,以便合理分配資源。l(3)評估l分析活動與計畫的符合程度,以便於控制後來執行。l(4)改進l根據量化資訊,幫忙找出問題點,或是可以提高產品品質的和過程效率的方法。軟體度量的活動階段軟體度量的活動階段1目標驅動的軟體度量活動階段主要包括五個l識別目標l
14、根據管理者的不同要求去分析出度量的工作目標,並由管理者審核確認。l定義度量過程l收集要素:定義收集活動和分析活動所需要的資料要素。l收集過程:定義資料收活動的形式、角色及資料的儲存。l分析/回饋:定義資料的分析方法和分析報告的回饋形式。軟體度量的活動階段軟體度量的活動階段2l收集資料l應用IT支援工具進行資料收集工作。l資料分析與回饋l度量小組根據收集結果,完成規定格式圖表,向管理者和資料提供者進行回饋。l過程改進l根據度量的分析報告,管理者基於度量資料作出決策。品質保證與品質控制比較品質保證與品質控制比較l品質保證與品質控制的差異l品質保證的活動l品質控制的活動品質保證與品質控制的差異品質保
15、證與品質控制的差異1圖:QA跟QC的運作品質保證與品質控制的差異品質保證與品質控制的差異2l品質保證(QA,Quality Assurance)l目標是預防缺陷和錯誤的發生。l品質控制(QC,Quality Control)l目標是找出缺陷和錯誤,並解決問題。l這兩種方式在運作上的方向是有所不同的,但兩者皆屬於品質管理的一環。品質保證的活動品質保證的活動l制定計畫l制定出可執行的方案。l需求審查l對於每個需求進行審查。l設計審查l對於每個設計步驟進行審查。l程式碼審查l對於每個程式碼進行審查。l測試案例審查l對於使用的測試案例進行審查。品質控制的活動品質控制的活動1l測試(Testing)l在
16、品質管理中是最實際的行動,但是也是最花人力與時間的。l在指定的狀況下對系統或其中某部分所作的活動去紀錄,並且還要進行審核。l追蹤(Tracking)l追蹤的專案有問題追蹤、需求變更追蹤,以及程式變更追蹤這三大項。l可以瞭解現階段的測試狀態。品質控制的活動品質控制的活動2l監督(Monitoring)l每個測試人員都必須負起個人監督的責任。l在追蹤到問題後,必須要監督這個軟體缺陷直到軟體本身被修改完畢。l並且還要確定修改後不會引起其他問題。軟體品質保證與測試軟體品質保證與測試l軟體品質保證SQAl測試lSQA與測試工作的差異lSQA小組的活動軟體品質保證軟體品質保證l軟體品質保證(Softwar
17、e Quality Assurance,SQA)l主要是針對品質提升及品質確保這兩項而制定的計畫。l主要活動:l協調度量工作l協調風險管理工作l執行評審l協調文件檢查會議l促進/協助流程改進l監察測試工作測試測試l測試(Testing)l針對所要採取的測試活動作出有系統的規劃。l測試流程中的五個子流程:l檢查專案計畫l建立測試計畫l建立測試設計、測試用例、測試軟體和測試過程l執行正式的測試l更新測試文件SQA與測試工作的差異與測試工作的差異l軟體測試是一種有效提高軟體品質的手段,但是測試畢竟是一種事後的、檢驗的,而如何讓軟體在生產過程中保證軟體過程的品質和效率,是比單純的測試工作還更具有重要的
18、意義。SQASQA小組的活動小組的活動1 1l為專案準備SQA計畫l本計畫與開發專案計畫同時制定,而且包含一些要點,如:需要執行評價、評審和審計、專家採用的標準、錯誤追蹤報告、SQA小組給的文件等。l參與開發該項目的軟體過程描述lSE小組要為進行的工作選擇一個過程。l評審軟體工作各項活動l驗證其與已定義的軟體過程的符合程度。SQASQA小組的活動小組的活動2 2l審計指定的軟體工作產品審計指定的軟工產品,並且對已定義的軟體過程去進行驗證。l確保軟體工作和軟體產品中的偏差已被紀錄l確認軟體工作和軟體產品的偏差是否被紀錄在案。l紀錄任何不符合的部分l紀錄任何不符合的部分,並呈報給上級管理部門。結論結論l軟體品質管理既有特殊性,也有品質管理的普遍性。此章節主要是介紹品質管理的各種知識,以幫助軟體品質管理人員可以瞭解傳統的品質管理知識,以加強理論基礎,對於未來更有良好的觀念去作好有關軟體品質管理的工作。