軟件工程8軟件質(zhì)量保證



單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,第,8,章 軟件質(zhì)量保證,掌握:,軟件質(zhì)量的定義、軟件質(zhì)量的特性與度量、軟件質(zhì)量保證、軟件質(zhì)量模型、軟件復雜性的度量方法、軟件可靠性、軟件評審、容錯軟件8,.1,軟件質(zhì)量概述,8.1.1,軟件質(zhì)量的定義,清華大學的鄭人杰教授認為,軟件質(zhì)量主要反映了以下,3,方面的問題:,(,1,)軟件需求是度量軟件質(zhì)量的基礎,不符合需求的軟件就不具備質(zhì)量2,)在各種標準中定義了一些開發(fā)準則,用來指導軟件人員用工程化的方法來開發(fā)軟件如果不遵守這些開發(fā)準則,軟件質(zhì)量就得不到保證3,)往往會有一些隱含的需求沒有明確地提出來,例如,軟件應具備良好的可維護性如果軟件只滿足那些精確定義了的需求,而沒有滿足這些隱含的需求,軟件質(zhì)量也不能保證8.1.2,軟件質(zhì)量的特性與度量,軟件測試的目的就是為了發(fā)現(xiàn)錯誤并糾正錯誤,可以將其總結(jié)為以下幾點:,(,1,)測試是一個程序的執(zhí)行過程,它的目的在于發(fā)現(xiàn)錯誤2,)一個好的測試用例極可能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤3,)一個成功的測試是發(fā)現(xiàn)了至今末發(fā)現(xiàn)的錯誤的測試1,功能性,由功能及與其指定的性質(zhì)有關的一組屬性組成,包括:,(,1,)適合性,(,2,)準確性,(,3,)互用性,(,4,)依從性,(,5,)安全性,2,可靠性,由與在規(guī)定的一段時間和條件下,軟件維持其性能水平的能力有關的一組屬性組成,包括:,(,1,)成熟性,(,2,)容錯性,(,3,)易恢復性,3,易用性,由與一組規(guī)定或潛在的用戶為使用軟件所需作的努力和對這樣的使用所作的評價有關的一組屬性組成,包括:,(,1,)易理解性,(,2,)易學性,(,3,)易操作性,4,效率,在規(guī)定的條件下,軟件的性能水平與所使用資源之間存在一定的關系,與這個關系有關的一組屬性,是衡量效率的標準,這些屬性包括:,(,1,)時間特性,(,2,)資源特性,5,可維護性,由與為進行指定的修改而所需的努力有關的一組屬性組成,包括:,(,1,)易分析性,(,2,)易改變性,(,3,)穩(wěn)定性,(,4,)易測試性,6,可移植性,由與軟件可從某一環(huán)境轉(zhuǎn)移到另一環(huán)境的能力有關的一組屬性組成,包括:,(,1,)適應性,(,2,)易安裝性,(,3,)遵循性,(,4,)易替換性,8.1.3,軟件質(zhì)量保證,所謂軟件質(zhì)量保證,就是建立一套有計劃、有系統(tǒng)的方法,來向管理層保證擬定出的標準、步驟、實踐和方法能夠正確地被所有項目所采用。
軟件質(zhì)量保證的主要手段,是對軟件產(chǎn)品和活動進行評審和審計,以此來驗證軟件是合乎標準的在軟件開發(fā)的各個階段實施的軟件質(zhì)量保證檢驗項目如下:,1,需求分析階段,主要檢測開發(fā)目的、目標值、開發(fā)量(程序、文檔)、所需資源、各階段的產(chǎn)品和作業(yè)內(nèi)容、開發(fā)體制等的合理性2,設計階段,檢驗項目包括產(chǎn)品的量(計劃量、實際量)、評審量、差錯數(shù)、檢出差錯的內(nèi)容、評審方法和覆蓋性、出錯原因、處理情況及對該階段的影響、評審結(jié)束和階段結(jié)束的判斷標準等3,實現(xiàn)階段,檢驗項目包括設計階段的所有檢驗項目,另外還包括:計算機使用時間、測試環(huán)境、測試項目設定種類、測試用例的設計方法等4,驗收階段,檢驗項目主要是說明書檢查(檢查與被檢查程序有關的用戶文檔等)和程序檢查(為了評價和保證程序質(zhì)量,采用各種黑盒測試或白盒測試手段進行檢查)5,運行維護階段,主要是掌握用戶使用產(chǎn)品的質(zhì)量情況,并反饋給開發(fā)部門8,.,2,軟件質(zhì)量模型,8.2.1 McCall質(zhì)量度量模型,圖,8-1 McCall,模型的,3,個層次與,11,個特性,8.2.2 ISO,軟件質(zhì)量評價模型,國際標準化組織,ISO,制定的,ISO,質(zhì)量度量模型由,3,層組成,分別是:,(,1,)高層,稱為,“,軟件質(zhì)量需求評價準則,”,。
2,)中層,稱為,“,軟件質(zhì)量設計評價準則,”,3,)低層,稱為,“,軟件質(zhì)量度量評價準則,”,ISO,認為,應對高層和中層建立國際標準,而低層可由各使用單位視實際情況制定相關標準同時,按照,ISO,IEC9126,質(zhì)量特性國際標準,第一層(即,ISO,質(zhì)量度量模型中的,“,高層,”,)稱為質(zhì)量特性,第二層(即,ISO,質(zhì)量度量模型中的,“,中層,”,)稱為質(zhì)量子特性,第三層(即,ISO,質(zhì)量度量模型中的,“,低層,”,)稱為度量該標準定義了,6,個質(zhì)量特性,即功能性、可靠性、可維護性、效率、可使用性、可移植性,并推薦了,21,個子特性,如適合性、準確性、互用性、依從性、安全性、成熟性、容錯性、可恢復性、可理解性、易學習性、操作性、時間特性、資源特性、可分析性、可變更性、穩(wěn)定性、可測試性、適應性、可安裝性、一致性、可替換性,但不作為標準8,.,3,軟件復雜性,8.3.1,軟件復雜性的基本概念,軟件復雜性是指軟件的復雜程度1,)規(guī)模:即總共的指令或源程序行數(shù)2,)難度:通常由程序中出現(xiàn)的操作數(shù)的數(shù)量來表示3,)結(jié)構(gòu):通常用與程序結(jié)構(gòu)有關的度量來表示4,)智能度:即算法的難易程度8.3.2,軟件復雜性的度量方法,軟件復雜性度量是對軟件復雜性的定量描述,是軟件復雜性分析和控制的基礎,它針對不同對象,從不同角度選用不同方法來描述軟件的復雜性。
軟件復雜性主要表現(xiàn)在程序的復雜性程序的復雜性主要指模塊內(nèi)程序的復雜性,它直接關系到軟件開發(fā)費用、開發(fā)周期和軟件內(nèi)部潛伏錯誤的多少,同時也可用于度量軟件的可理解性要求復雜性度量滿足以下假設:,(1),軟件復雜性度量可以用來計算任何一個程序的復雜性2),對于不合理的程序,如長度動態(tài)增長的程序,或者對于原則上無法排錯的程序,則不應當使用軟件復雜性度量進行復雜性計算3),程序中指令條數(shù)、附加存儲量、計算時間增多不會減少程序的復雜性1,長度度量,度量程序的復雜性,最簡單的方法就是統(tǒng)計程序的源代碼行數(shù)此方法的基本考慮是統(tǒng)計一個程序的源代碼行數(shù),并以源代碼行數(shù)作為程序復雜性的質(zhì)量2,Halstead,度量,Halstead,度量法通過計算程序中的運算符和操作數(shù)的數(shù)量對程序的復雜性加以度量設,n1,表示程序中不同運算符的個數(shù),,n2,表示程序中不同操作數(shù)的個數(shù),,N1,表示程序中實際運算符的總數(shù),,N2,表示程序中實際操作數(shù)的總數(shù)令,H,表示程序的預測長度,,Halstead,給出,H,的計算公式為:,H=n1log2n1+n2log2n2,;令,N,表示實際的程序長度,其定義為:,N=N1+N2,3,McCabe,度量,該度量方法由,McCabe,提出,又稱為環(huán)路復雜性度量方法,其步驟是:,(,1,)將程序流程圖中的每個處理符號看作一個節(jié)點,流程圖中的流程線看作有向弧,從而將流程圖轉(zhuǎn)換為一個有向圖。
2,)從圖的入口點到出口點加一條用虛線表示的有向邊,使圖成為強連通圖3,)定義環(huán)路復雜性的計算公式為:,V(G)=m,n+p,其中,,V(G),是有向圖,G,中的環(huán)路數(shù);,m,是圖,G,中的弧數(shù);,n,是圖,G,中的節(jié)點數(shù);,P,是圖,G,中的強連通分量也可簡單地將環(huán)路復雜性看作有向圖中有向弧所封閉的區(qū)域個數(shù)例如,如圖,8-2,(,a,)所示的程序流程圖對應的有向圖如圖,8-2,(,b,)所示因為節(jié)點數(shù),n=11,,弧數(shù),m=13,,強連通分量,p=1,,因此,環(huán)路復雜性,V,(,G,),=3,圖,8-2 McCabe,復雜性度量的例子,8.3.3,軟件復雜性控制,(,1,)控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)復雜的程序較復雜2,)轉(zhuǎn)向語句使用不當?shù)某绦蜉^復雜3,)非局部量較多的程序較復雜4,)按地址調(diào)用參數(shù)比按值調(diào)用參數(shù)復雜5,)模塊及過程之間聯(lián)系密切的程序較復雜6,)嵌套深度越大,程序越復雜7,)循環(huán)結(jié)構(gòu)復雜性大于選擇結(jié)構(gòu)和順序結(jié)構(gòu)的復雜性8,)寬度是軟件復雜性的主要形成原因8,.,4,軟件可靠性,8,.4.1,軟件可靠性的定義,1,軟件故障及其特征,常用以下,3,個術語來描述軟件未正常運行的情況:,(,1,)缺陷:是指軟件的內(nèi)在缺陷。
2,)錯誤:缺陷在一定環(huán)境條件下暴露,導致系統(tǒng)運行中出現(xiàn)可感知的不正常、不正確和不按規(guī)范執(zhí)行的狀態(tài)3,)故障:由于對錯誤未作任何糾正,而導致系統(tǒng)的輸出不滿足預定的要求2,軟件可靠性,軟件可靠性的定義是:,“,軟件可靠性是軟件系統(tǒng)在規(guī)定的時間內(nèi)及規(guī)定的環(huán)境條件下,完成規(guī)定功能的能力,”,1,)規(guī)定的時間,(,2,)規(guī)定的環(huán)境條件,(,3,)規(guī)定的功能,8.4.2,軟件可靠性的指標,(,1,)平均失效間隔時間,MTTF,:即兩次失效之間的平均操作時間2,)平均修復時間,MTTR,:即修復一個故障平均需用的時間3,)有效性:,A=,(,MTTF/,(,MTTF+MTTR,)4,)初期故障率:一般以軟件交付使用方后的,3,個月內(nèi)為初期故障期,初期故障率指軟件在初期故障期內(nèi)單位時間的故障數(shù),一般以每,100h,的故障數(shù)為單位,可以用來評價交付使用的軟件的質(zhì)量,并預測軟件可靠性何時基本穩(wěn)定5,)偶然故障率:一般以軟件交付給使用方后的,4,個月后為偶然故障期偶然故障率指軟件在偶然故障期內(nèi)單位時間的故障數(shù),一般以每千小時的故障數(shù)為單位,它反映了軟件處于穩(wěn)定狀態(tài)時的質(zhì)量6,)使用方誤用率:使用方不按照軟件規(guī)范及說明等文件來使用軟件而造成的錯誤叫,“,使用方誤用,”,。
在總使用次數(shù)中,使用方誤用次數(shù)占的百分率叫,“,使用方誤用率,”,造成使用方誤用的原因之一是使用方對說明理解不深,操作不熟練,但也可能是說明沒有講得非常清楚,引起誤解等7,)用戶提出補充要求數(shù):由于軟件在開發(fā)過程中未能充分滿足用戶需要,或者用戶在軟件開發(fā)時所提要求不全面,軟件開始使用后用戶又提出補充要求,需要生產(chǎn)方對軟件進行修改、完善8.4.3,軟件可靠性模型,(,1,)隨機性分類法:根據(jù)隨機過程的假設(如過程的確定性或非確定性、馬氏過程、泊松過程等)進行分類2,)按軟件出現(xiàn)的故障數(shù)進行分類:主要有錯誤計數(shù)模型和非計數(shù)模型,可數(shù)性或不可數(shù)性模型3,)按模型參數(shù)的估計方法進行分類:主要有貝葉斯方法或非貝葉斯方法,最大似然估計法或最小二乘法,另外還有線性模型等4,)按模型使用的時間方式分類:主要有日歷時間和執(zhí)行時間模型5,)按修復過程分類:主要指強調(diào)對軟件系統(tǒng)修復過程的一類模型,如:完全修復型的和不完全修復型的模型,完全排錯型和不完全排錯型的模型6,)按對軟件的內(nèi)部結(jié)構(gòu)是否了解進行分類:可分為黑箱模型和白箱模型主要根據(jù)對軟件內(nèi)部結(jié)構(gòu)的了解程度,以及對它們的結(jié)構(gòu)能加以利用的程度來進行分類8,.,5,軟件評審,8,.,5,.1,軟件評審的概念,對軟件工程來說,軟件評審是一個,“,過濾器,”,。
在軟件開發(fā)的各個階段都要采用評審的方法,以發(fā)現(xiàn)軟件中的缺陷,然后加以改正8.5.2,軟件評審的階段和內(nèi)容,1,設計質(zhì)量的評審,設計質(zhì)量的評審包括:,(1),評價軟件的規(guī)格說明是否合乎用戶的要求,即總體設計思想和設計方針是否明確;需求規(guī)格說明是否得到了用戶或單位上級機關的批準;需求規(guī)格說明與軟件的概要設計規(guī)格說明是否一致等2),評審可靠性,即是否能避免輸入異常(錯誤或超載等)、硬件失效及軟件失效一旦發(fā)生異常,應能及時采取代替或恢復手段3),評審保密措施實施情況,即是否提供對使用系統(tǒng)資格進行檢查的功能;在檢查出有違反對特定數(shù)據(jù)、特殊功能的使用資格的情況后,能否向系統(tǒng)管理人員報告有關信息;是否提供對系統(tǒng)內(nèi)重要數(shù)據(jù)加密的功能等4),評審操作特性實施情況,即操作命令和操作信息的恰當性;輸入數(shù)據(jù)與輸入控制語句的恰當性;輸出數(shù)據(jù)的恰當性;應答時間的恰當性等5),評審性能實現(xiàn)情況,即是否達到所規(guī)定性能的的目標值6),評審軟件是否具有可修改性、可擴充性、可互換性和可移植性7),評審。