版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章軟件驗證技術(shù)
(第5.9-5.10節(jié))武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院主要內(nèi)容程序正確性證明調(diào)試武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.9程序正確性證明
測試可以幫助人們發(fā)現(xiàn)程序中的錯誤,但它卻不能證明程序中沒有錯誤。早在50年代,圖林(Turing)等人就開始注意并開展了程序正確性證明這方面的早期研究工作;60年代后半期,F(xiàn)loyd和Hoare等人提出了不變式斷言法和公理化方法,使得這一研究進(jìn)入了一個蓬勃發(fā)展的新階段;在此之后,出現(xiàn)了許多不同的程序正確性證明方法。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.9.1程序正確性定義
所謂一段程序是正確的,是指這段程序能準(zhǔn)確無誤地完成預(yù)定的功能?;蛘哒f,對任何一組允許的輸入,程序執(zhí)行后能得到一組相應(yīng)的正確的輸出。在研究程序正確性證明時,將一段程序的輸入和輸出應(yīng)滿足的條件的邏輯關(guān)系式分別稱為此段程序的輸入斷言(或初始斷言、前置斷言)和輸出斷言(或結(jié)果斷言、后置斷言),通常用謂詞φ(x)和ψ(x,z)表示,其中x和z分別表示輸入和輸出數(shù)據(jù)(可以是一個或一組變量)。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院例子unsignedpower(unsignedx,unsignedy){unsignedz;z=1;while(x!=0){z=z*y;x=x-1;}returnz;}則φ(x,y):x≥0,y>0;ψ(x,y,z):z=yx。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院程序正確性三種類型程序的部分正確性程序的終止性程序的完全正確性武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院程序的部分正確性若每一個使得φ(x)為真且程序計算終止的輸入數(shù)據(jù)x,ψ(x,p(x))都為真,則稱程序p關(guān)于φ和ψ是部分正確的。這里p(x)表示與輸入數(shù)據(jù)x相對應(yīng)的程序p的輸出數(shù)據(jù)。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院程序的終止性若每一個使得φ(x)為真的輸入數(shù)據(jù)x,程序計算都終止,則稱程序P對φ是終止的。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院程序的完全正確性若每一個使得φ(x)為真的輸入數(shù)據(jù)x,程序計算都終止且ψ(x,P(x))為真,則稱程序P關(guān)于φ和ψ是完全正確的。顯然,一個程序是完全正確的等價于該程序是部分正確的同時又是終止的。轉(zhuǎn)到武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院程序正確性證明方法FLOYD的不變式斷言法(證明部分正確性)FLOYD良序集方法(證明終止性)Hoare的公理化方法(證明部分正確性)及其推廣(證明完全正確性)Dijstra的弱謂詞置換法(證明完全正確性)武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.9.2Floyd不變式斷言法
建立斷言
一個程序除了需要建立輸入/輸出斷言外,如程序中出現(xiàn)循環(huán),還要建立相應(yīng)于該循環(huán)的不變式斷言,稱之為循環(huán)不變式斷言。所謂循環(huán)不變式斷言,是在循環(huán)中選一個斷點,在斷點處建立一個適當(dāng)?shù)臄嘌?,使循環(huán)每次執(zhí)行到斷點時,斷言都為真。建立檢驗條件
所謂檢驗條件就是程序運行通過某通路時應(yīng)滿足的條件。證明檢驗條件
證明上面給定的所有檢驗條件,如果每一條通路的檢驗條件都為真,則該程序是部分正確的。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院例子設(shè)x1,x2是正整數(shù),求最大公約數(shù)Z=gcd(x1,x2),其流程圖如下圖所示。試證明它的部分正確性。
武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院建立斷言
輸入斷言φ(x):x1>0∧x2>0輸出斷言ψ(x,z):z=gcd(x1,x2)在斷點B建立不變式斷言P(x,y):
x1>0∧x2>0∧y1>0∧y2>0∧gcd(y1,y2)=gcd(x1,x2)這里,約定所有變量均為整型,且x表示(x1,x2),y表示(y1,y2)。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院建立檢驗條件
選擇B為斷點,則程序的執(zhí)行通路為:Path1:A→BPath2:B→D→BPath3:B→E→BPath4:B→G→C對每條通路可建立相應(yīng)的檢驗條件。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院檢驗條件表示設(shè)通路i的輸入/輸出斷言分別為φi(x,y)和ψi(x,y),而通過此通路的條件為Ri(x,y),通過此通路后y的值變?yōu)閞i(x,y),則應(yīng)有檢驗條件:φi(x,y)∧Ri(x,y)ψi(x,ri(x,y))其中,y表示程序執(zhí)行中的一組中間變量,x是輸入量。符號表示蘊(yùn)涵邏輯關(guān)系。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院Path1檢驗條件φ1(x,y)為φ(x);R1(x,y)恒真,即無條件通過;ψ1(x,y)為P(x,y);通過此通路后y的值取值x。故有:φ(x)P(x,x),即[x1>0∧x2>0][x1>0∧x2>0∧x1>0∧x2>0∧gcd(x1,x2)=gcd(x1,x2)]其它路徑的檢驗條件(略)武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院證明檢驗條件
對任意正整數(shù)y1和y2有如下關(guān)系:1°若y1>y2則gcd(y1,y2)=gcd(y1-y2,y2);2°若y2>y1則gcd(y1,y2)=gcd(y1,y2-y1);3°若y1=y2則gcd(y1,y2)=y1=y2。
對于Path1,其檢驗條件顯然是成立的;
其它(略)武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.9.3Floyd良序集方法
如果一個非空集合W關(guān)于二元關(guān)系-<是良序的,則集合W應(yīng)滿足:①W為具有關(guān)系-<的偏序集。即關(guān)系-<滿足下列性質(zhì):1°傳遞性,即對一切a,b,c∈W,如果a-<b,b-<c則有a-<c。2°反對稱性,即對一切a,b∈W,如果a-<b,則有b-<a。3°反自反性,即對一切a∈W,a-<a。②W的每一非空子集都有一個“最小”元素。即不存在由W中的元素構(gòu)成的無限遞減序列:a0>-a1>-a2>-……其中a0,a1,a2,...∈W。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院證明步驟
設(shè)程序P的輸入斷言為φ(x),良序集法證明P關(guān)于φ(x)是終止的證明步驟
(1)選取一個點集合截斷程序的各個循環(huán)部分,在每一個截斷點i處建立一個中間斷言qi(x,y)。(2)選取一個良序集(W,-<),在每一個截斷點i處定義一個終止表達(dá)式Ei(x,y)。(3)證明所選取的斷言是“良斷言”。即對每一個從程序入口到斷點j的通路α有:φ(x)∧Rα(x,y)qj(x,rα(x,y))成立;而對每一個由斷點i到斷點j的通路α有:qi(x,y)∧Rα(x,y)qj(x,rα(x,y))成立。這里Rα和rα分別表示通過通路α的條件及通過通路α以后變量y的值。另外,在這兩個蘊(yùn)涵式中省略了全稱量詞xy,以下兩步亦如此。(4)證明終止表達(dá)式是“良函數(shù)”。即對每個斷點i有:qi(x,y)Ei(x,y)∈W(5)證明終止條件成立。即對于每一條從斷點i到斷點j,且是某個循環(huán)的一部分的通路α有:qi(x,y)∧Rα(x,y)[Ei(x,y)>-Ej(x,rα(x,y))]顯然,如果所有的終止條件成立,則程序P一定終止。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院例子對任一給定的自然數(shù)X,計算Z=[](即Z等于x的平方根取整)的程序流程圖如圖所示。
武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院截斷程序的循環(huán)部分
該程序只有一個循環(huán),在B點將循環(huán)斷開,并建立斷點斷言:q(x,y):y3>0∧y2≤x武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院選取良序集
選取良序集為(N,<),N為自然數(shù)集合。定義B點的終止表達(dá)式為:E(x,y):x-y2武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院證明所選取的斷言是“良斷言”
1°對通路A→B(從程序入口點A到截斷點B)有:φ(x)∧RA→B(x,y)q(x,rA→B(x,y))顯然RA→B(x,y)恒為真,即走A→B的條件恒真;rA→B(x,y)為(0,0,1),即y的值通過A→B后變?yōu)?0,0,1)。y表示(y1,y2,y3)。故有φ(x)q(x,0,0,1)即x≥0[1>0∧0≤x]顯然,此蘊(yùn)涵式成立;其它(略)武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院證明終止表達(dá)式是良函數(shù)
即證明:q(x,y)E(x,y)∈N即[y3>0∧y2≤x]x-y2≥0x-y2∈N此蘊(yùn)涵式顯然也成立。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院證明終止條件成立
即對于斷點B到斷B的通路(B→C→D→B)有:q(x,y)∧RB→C→D→B(x,y)[E(x,y)>E(x,rB→C→D→B(x,y))]即:[y3>0∧y2≤x∧y2+y3≤x][x-y2>x-(y2+y3)]由蘊(yùn)涵式的前項有:y2≤x且y2+y3≤x故x-y2≥0即x-y2∈Nx-(y2+y3)≥0即x-(y2+y3)∈N同時y3>0,故有x-y2〉X-(y2+y3)且均屬于集合(N,〈)中。至此,也就證明了該程序的終止性。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.9.4程序正確性證明的局限性
經(jīng)驗表明,程序證明實現(xiàn)的困難在于尋找程序的循環(huán)結(jié)構(gòu)所蘊(yùn)涵的循環(huán)不變式。只有當(dāng)程序“做什么”的說明能以簡單的函數(shù)給出時,才能使用程序正確性證明技術(shù)。而大型問題就難以給出這種說明。因此,在實際應(yīng)用中還存在一些問題。所依賴的數(shù)學(xué)基礎(chǔ)太強(qiáng),用起來不夠自然,數(shù)學(xué)素質(zhì)不強(qiáng)的人很難接受。另外,證明本身也不能保證無錯。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院補(bǔ)充:集成測試文檔集成測試文檔即測試說明書(testspecifications)應(yīng)給出集成的總體規(guī)劃和某些特殊測試的描述。它將作為軟件配置的一部分提交給用戶。測試說明書的主要內(nèi)容提綱如下:武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院測試說明書的主要內(nèi)容提綱1)測試范圍2)測試計劃A.測試的各個階段和劃分模塊群情況B.進(jìn)度安排C.開銷軟件(驅(qū)動和樁模塊)D.環(huán)境和資源武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院3)各個模塊群測試過程的描述,包括:A.集成的順序①用途②被測模式B.模塊群中各模塊單元測試的情況①模塊的測試描述②開銷軟件描述③期望的結(jié)果武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院C.測試環(huán)境①特殊工具和技術(shù)②開銷軟件的描述D.測試用例E.模塊群的期望結(jié)果等4)實際測試結(jié)果5)參考文獻(xiàn)6)附錄。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.10調(diào)
試
調(diào)試,又稱糾錯或排錯,是程序測試后開始的工作,主要任務(wù)是依據(jù)測試發(fā)現(xiàn)的錯誤跡象確定錯誤位置和原因,并加以改正。調(diào)試活動由兩部分組成:①確定程序中可疑錯誤的確切性質(zhì)和位置。②對程序(設(shè)計,編碼)進(jìn)行修改,排除這個錯誤。調(diào)試是通過現(xiàn)象,找出原因的一個思維分析的過程。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院執(zhí)行測試用例測試用例結(jié)果評估附加測試被懷疑的原因已識別的原因糾正回歸測試測試過程武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.10.1調(diào)試的步驟
從錯誤的外部表現(xiàn)形式入手,確定程序中出錯位置;研究有關(guān)部分的程序,找出錯誤的內(nèi)在原因;修改設(shè)計和代碼,以排除這個錯誤;重復(fù)進(jìn)行暴露了這個錯誤的原始測試或某些有關(guān)測試,以確認(rèn)該錯誤是否被排除;是否引進(jìn)了新的錯誤。如果所做的修正無效,則撤消這次改動,重復(fù)上述過程,直到找到一個有效的解決辦法為止。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院調(diào)試難點錯誤的癥狀和引起錯誤的原因可能相隔很遠(yuǎn),尤其是在高度耦合的程序結(jié)構(gòu)中;錯誤癥狀可能在另一錯誤被糾正后消失或暫時性的消失;錯誤癥狀可能實際并不是由錯誤引起的(如舍入誤差);錯誤癥狀可能是由不易跟蹤的人工操作引起的;錯誤癥狀可能是和時間相關(guān)的,而不是處理問題;很難再現(xiàn)產(chǎn)生錯誤癥狀的輸入條件;錯誤癥狀可能時有時無(如在軟硬件結(jié)合的嵌入式系統(tǒng)中常常遇到);錯誤癥狀可能是由于把任務(wù)分布在若干不同處理器上運行而造成。
武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院5.10.2調(diào)試的策略之一:猜測法
該方法通過分析錯誤癥狀,根據(jù)以往經(jīng)驗,輔助使用已有的計算機(jī)工具,猜測錯誤的原因并進(jìn)行定位??梢酝ㄟ^“在程序中插入打印語句”、“使用注釋或GOTO語句運行部分程序”或“調(diào)試工具”等來實現(xiàn)該方法。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院跟蹤法
先分析錯誤征兆,確定最先發(fā)現(xiàn)“癥狀”的位置。然后,人工沿程序的控制流程,向回追蹤源程序代碼,直到找到錯誤根源或確定錯誤產(chǎn)生的范圍。跟蹤法對于小程序很有效,往往能把錯誤范圍縮小到程序中的一小段代碼;仔細(xì)分析這段代碼不難確定出錯的準(zhǔn)確位置。但對于大程序,由于回溯的路徑數(shù)目較多,回溯會變得很困難。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院演繹法演繹法排錯是測試人員首先根據(jù)已有的測試用例,設(shè)想及枚舉出所有可能出錯的原因做為假設(shè);然后再用原始測試數(shù)據(jù)或新的測試,從中逐個排除不可能正確的假設(shè);最后,再用測試數(shù)據(jù)驗證余下的假設(shè)確是出錯的原因。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院列舉可能的原因排除不正確的假設(shè)精化余下的假設(shè)證明假設(shè)收集更多數(shù)據(jù)糾正錯誤有剩余能不能無剩余演繹法:普通特殊從假設(shè)中逐步排除、精化,從而導(dǎo)出錯誤根源。武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院列舉所有可能出錯原因的假設(shè):把所有可能的錯誤原因列成表。進(jìn)而可以組織、分析現(xiàn)有數(shù)據(jù)。利用已有的測試數(shù)據(jù),排除不正確的假設(shè):仔細(xì)分析已有的數(shù)據(jù),尋找矛盾,力求排除前一步列出所有原因。如果所有原因都被排除了,則需要補(bǔ)充一些數(shù)據(jù)(測試用例),以建立新的假設(shè)。改進(jìn)余下的假設(shè):利用已知的線索,進(jìn)一步改進(jìn)余下的假設(shè),使之更具體化,以便可以精確地確定出錯位置。證明余下的假設(shè)武漢紡織大學(xué)數(shù)學(xué)與計算機(jī)學(xué)院歸納法歸納法排錯的基本思想是:從一些線索(錯誤征兆)著手,通過分析它們之間的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 福建省南平市太平鎮(zhèn)中學(xué)高二語文月考試卷含解析
- 27《我的伯父魯迅先生》說課稿-2024-2025學(xué)年統(tǒng)編版語文六年級上冊
- 秋分營銷全攻略
- 2024年香港居民內(nèi)地離婚手續(xù)辦理與法律援助合同3篇
- 多媒體內(nèi)容制作服務(wù)合同(2篇)
- U盤年度供應(yīng)與分銷協(xié)議樣本版
- 2024年跨境電子商務(wù)平臺運營與推廣協(xié)議
- 10 我們當(dāng)?shù)氐娘L(fēng)俗 第二課時 說課稿-2023-2024學(xué)年道德與法治四年級下冊統(tǒng)編版
- 11-2《五代史·伶官傳序》(說課稿)高二語文同步高效課堂(統(tǒng)編版 選擇性必修中冊)
- 專業(yè)化清洗系統(tǒng)采購協(xié)議2024年版版A版
- 形象權(quán)授權(quán)協(xié)議
- 高中數(shù)學(xué)人教A版(2019)必修第一冊第二冊知識點概要填空
- 2023-2024學(xué)年山東省聊城市陽谷縣八年級(上)期末英語試卷
- 2024-2030全球與中國吹灌封一體化產(chǎn)品市場現(xiàn)狀及未來發(fā)展趨勢
- 2024年保安員考試題庫及參考答案(鞏固)
- 安全隱患規(guī)范依據(jù)查詢手冊22大類12萬字
- ASME材料-設(shè)計許用應(yīng)力
- 大中小學(xué)心理健康教育一體化共同體建設(shè)研究課題評審書
- JJG 701-2008熔點測定儀行業(yè)標(biāo)準(zhǔn)
- 室內(nèi)燈光設(shè)計總結(jié)報告
- 實驗室科技發(fā)展規(guī)劃方案
評論
0/150
提交評論