国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種面向動態(tài)資源管理的軟件故障檢測方法

      文檔序號:6381909閱讀:191來源:國知局
      專利名稱:一種面向動態(tài)資源管理的軟件故障檢測方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及軟件工程技術(shù)領(lǐng)域,特別是涉及面向動態(tài)資源管理的軟件故障檢方法,尤其是涉及軟件測試技術(shù)中的軟件故障建模及模型化的軟件故障檢測技術(shù),它是提高計算機軟件可靠性的一個十分有效的量化測試方法。
      現(xiàn)有的軟件測試技術(shù)可以分為白盒測試、黑盒測試及它們的混合使用等測試方法。常見的白盒測試方法有,語句覆蓋、分支覆蓋、路徑覆蓋等;黑盒測試方法有等價類劃分、邊界值分析、錯誤推測法、因果圖、功能圖等。這些測試方法的產(chǎn)生對軟件測試工作的進行起到了很好的推動作用。但是,由于沒有完善的軟件測試標準,不存在一個可以有效量化測試效果的軟件故障模型,造成軟件測試工作存在著很大的盲目性,因此,也很難對軟件測試工作進行準確的評價。
      與軟件測試相關(guān)的另一個問題是軟件的可靠性,即軟件在給定條件、給定環(huán)境下正確運行的概率,它和軟件測試技術(shù)密不可分的。軟件可靠性是評價軟件質(zhì)量的一個因素,其評估工作也是軟件工程所關(guān)注的一個重要目標。由于軟件測試缺乏統(tǒng)一的標準指導,使得軟件可靠性評估工作、軟件可靠性評估的效果受到了很大的影響,軟件評估的可信性難以得到保證。

      發(fā)明內(nèi)容
      本發(fā)明通過對軟件系統(tǒng)中存在的、由動態(tài)資源管理所引起的系統(tǒng)失效的原因進行分析,提出了動態(tài)資源管理模式和面向動態(tài)資源管理的軟件故障模型。動態(tài)資源管理模式充分反映了計算機資源的動態(tài)管理的特點,面向動態(tài)資源管理的軟件故障模型描述了導致系統(tǒng)出錯的動態(tài)資源管理方式,以該模型為指導進行軟件測試可以大大的減少軟件測試的盲目性,有效的排除軟件中存在的錯誤,從而可以減少系統(tǒng)運行過程中故障發(fā)生的概率,提高系統(tǒng)的可靠性。
      本發(fā)明的在于提供一種面向動態(tài)資源管理的軟件故障檢測方法通過下述技術(shù)方案實現(xiàn)本發(fā)明。
      一種面向動態(tài)資源管理模式結(jié),動態(tài)資源管理由程序開始S(p)、資源分配A(res)、資源使用U(res)、資源回收R(res)和程序結(jié)束E(p)組成,動態(tài)資源的使用必須遵循下面的過程程序開始S(p)之后進行資源分配A(res),在對資源分配的結(jié)果進行正確性檢測的基礎(chǔ)上進行資源使用U(res),在程序結(jié)束E(p)前,必須進行資源的回收R(res),其中,在資源管理過程中資源的分配、使用、回收是一個可重復(fù)的過程。
      圖2是程序的控制流圖。圖中的5個節(jié)點分別代表示例程序中的5個基本塊,圖中的連線表示每個基本塊之間的順序關(guān)系,箭尾關(guān)聯(lián)的塊為箭頭所關(guān)聯(lián)的塊的前驅(qū)。對于任一個軟件來講,都存在一個控制流圖??刂屏鲌D是軟件測試方法實施的依據(jù)。
      動態(tài)資源的管理的不當是導致軟件故障的一個十分重要的原因。附

      圖1中給出了動態(tài)資源管理模式,它對程序中的動態(tài)資源管理方式進行了描述,其中包括了合理的資源使用方式和不合理的資源使用方式,在此基礎(chǔ)上,我們建立了面向動態(tài)資源管理的軟件故障模型,該模型反映了軟件運行過程中潛在的動態(tài)資源管理錯誤所引起的軟件錯誤。以這個模型為指導,本專利進一步給出了與之相應(yīng)的故障檢測及排除技術(shù),它可以有效減少軟件中存在的動態(tài)資源管理的漏洞,減少導致系統(tǒng)出錯的因素,提高軟件運行過程中的可靠性。
      1、面向動態(tài)資源管理的軟件故障模型軟件在運行中可以利用的計算機資源主要包括了一些實際資源和虛擬資源,前者如計算機的各種硬件資源(如CPU、硬盤、內(nèi)存、IO等)和軟件資源(如數(shù)據(jù)文件、動態(tài)代碼、服務(wù)進程等),另外還有更多的虛擬資源(如進程句柄、索引號、通信端口等),后者相對抽象一些,例如15位的身份證號,它同樣是一項重要的資源,隨著人們不斷地申請而不能重復(fù)利用,有一天也會消耗殆盡;32位的IP地址也在面臨枯竭的危險。這些較抽象的資源在本專利中也將視為和諸如內(nèi)存一樣,也需要進行有效地統(tǒng)一的動態(tài)管理。
      我們把這些需要在運行過程中動態(tài)管理的資源稱為動態(tài)資源,如圖1給出了動態(tài)資源管理的使用狀態(tài)遷移圖,其中,粗線表示一個合理的動態(tài)資源管理鏈,細線表示可能會引起系統(tǒng)失效的資源管理鏈,簡單地說,所有動態(tài)資源的使用都必須經(jīng)歷正確的申請和釋放操作,否則將視為無效,即出現(xiàn)不同的故障(關(guān)于故障模型的具體形式化定義如下文)。例如最常見的內(nèi)存動態(tài)管理就需要符合這樣一個過程,即在使用前必須存在有效的申請操作,而在程序結(jié)束前,也必須進行資源的回收工作,如果操作不當可能導致使用非法內(nèi)存、內(nèi)存泄露、內(nèi)存越界等嚴重的軟件故障。動態(tài)資源的正確管理為良好的程序設(shè)計帶來了方便,但對于規(guī)模較大的設(shè)計又是一件很不容易的事情,更不幸的是,這個重任往往交給不同的程序員自己來完成。
      實際上,這種因為動態(tài)資源管理的不當而導致故障占軟件總體故障很大一個部分,這也是本發(fā)明要模型化并實現(xiàn)自動檢測的所要解決的問題,為了清楚起見,下面給出各種故障類型的形式化定義。
      它主要利用了程序的控制流圖(CFG)和引用定值信息等進行軟件錯誤的檢測,屬于白盒測試技術(shù)。通過這些故障模型項目檢測的軟件,其穩(wěn)定性和健壯性均能得到很大程度的提高。根據(jù)權(quán)利要求2中所提供的動態(tài)資源故障模型,主要有以下幾種故障檢測方法。
      根據(jù)圖1,合理的資源管理鏈可以概括為下面的模式
      S(p)→{A(res)→{U(res)}→R(res)}→E(p)S(p)程序開始A(res)資源分配U(res)資源使用R(res)資源回收E(p)程序結(jié)束其主要過程是,從程序開始S(p)開始到資源分配A(res)經(jīng)過資源使用U(res)到資源回收R(res)最后到程序結(jié)束E(p)。
      我們以上面的故障模式為基礎(chǔ),給出了以下的面向動態(tài)資源管理的軟件故障模型。1.資源申請故障在圖1中,存在著從U(res)到A(res)和U(res)本身的回邊,這兩條線的存在表示了資源申請錯誤。在資源分配階段,如果對同一資源在未回收之前進行重復(fù)分配,或者,在資源分配之后未對分配結(jié)果進行檢查(UC(A)),都會引起錯誤。由此可以得到以下資源申請的故障模型res,(A(res)UC(A))or(﹁R(res)A(yù)(res))2.資源非法使用故障在圖1中,存在S(p)和R(p)到U(p)的兩條邊,這兩條邊表示動態(tài)資源的未分配的使用,或被回收后的動態(tài)資源的重新使用,這兩種情況都會造成資源的非法使用,這種錯誤模型可以描述為以下的形式res,(﹁A(res)U(res))or(R(res)U(res))3.資源回收故障在圖1中,存在著從S(p)出發(fā)到R(res)的連線和R(res)本身的回邊,這兩條連線表示了造成資源回收錯誤的原因,這種錯誤模型可以描述為以下的形式res,(﹁A(res)R(res))or(R(res)R(res))4.程序非法結(jié)束故障在圖1中,存在從A(res)和U(res)出發(fā)到E(p)的兩條連線表示程序的非法結(jié)束,這兩條連線表示一個資源在經(jīng)過分配或使用后未進行回收操作,因此,導致程序非法結(jié)束的錯誤主要是資源的未回收錯誤??梢杂靡韵碌哪P捅硎惊鄏es,(A(res)﹁R(res))or(U(res)﹁R(res))2、模型化的軟件故障檢測方法這種面向動態(tài)資源管理故障模型的檢測是屬于白盒測試,它通過對軟件的源代碼的分析,達到故障檢測的目的,同時給出軟件的一個可靠性的量化的參數(shù)。該檢測技術(shù)是基于數(shù)據(jù)流分析的,在進行具體檢測之前,首先需要將軟件源程序劃分為由基本塊構(gòu)成的控制流圖(CFG),下面首先給出其構(gòu)造方法它主要利用了程序的控制流圖(CFG)和引用定值信息等進行軟件錯誤的檢測,屬于白盒測試技術(shù)。通過這些故障模型項目檢測的軟件,其穩(wěn)定性和健壯性均能得到很大程度的提高。主要有以下幾種故障檢測方法基本塊是一個按照順序執(zhí)行的語句序列,其中只有一個入口語句和一個出口語句。其中,入口語句是符合下列特點的語句1.程序的第一個語句;2.條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句的轉(zhuǎn)移目標語句;3.緊跟在條件轉(zhuǎn)移語句之后的語句。
      圖2給出了一個簡單的程序的控制流圖,圖中的節(jié)點表示一個基本塊,邊表示基本塊之間的前驅(qū)后繼關(guān)系,箭尾關(guān)聯(lián)的塊為箭頭所關(guān)聯(lián)的塊的前驅(qū)。
      在軟件程序中,除了進行資源分配的操作之外,還可能出現(xiàn)以指針變量間的賦值操作等實現(xiàn)用不同的名字引用相同的資源,從而建立起不同變量之間的別名關(guān)系。別名關(guān)系的出現(xiàn)為測試工作帶來的難度。為解決問題的方便,我們建立了一個別名組來表示具有別名關(guān)系的一組變量。對于一個基本塊來講,都有到達基本塊入口的別名組的集合(INA)和到達基本塊出口的別名組的集合(OUTA),并且它們滿足以下關(guān)系,其中,KILL表示被刪除的別名組的集合,NEW表示新建立的別名組的集合每個基本塊的INA=∪(該基本塊所與前驅(qū))OUTA;——(1)每個基本塊的OUTA=該基本塊的INA∪NEW-KILL?!?2)我們可以通過對別名分析來實現(xiàn)以上軟件故障的檢測,下面進行詳細的討論1)資源申請故障的檢測對于動態(tài)資源申請故障的檢測,需要檢查被申請的資源是否已經(jīng)被分配和引用指針變量是否指向未釋放的資源,這是以上關(guān)于別名的分析可以勝任的。(1)系統(tǒng)資源的管理一般是由操作系統(tǒng)來完成的,所以,這方面用戶可以干預(yù)的成份較少,不過,可以通過檢查所有的別名組與各種資源的對應(yīng)關(guān)系來達到檢測的目的。(2)如果在別名組集合中存在包含該變量的別名組,并且該別名組中只包含該變量本身,則表示該資源已經(jīng)被分配或正在被使用,新的資源申請操作會引起已經(jīng)存在的資源的丟失,從而檢測資源申請錯誤。
      在表示該資源的分配會引起已經(jīng)存在的資源的丟失,報告一個資源未分配的錯誤,如果該別名組中包含多個變量,則在別名組中刪除該變量,終止該變量與該別名組之間的別名關(guān)系;如果在別名組集合中不存在包含該變量的別名組,則建立一個新的別名組,同時將該新建的別名組加入到NEW中;2)資源非法使用故障的檢測資源的非法使用首先需要檢測每項資源在使用時是否已經(jīng)正確地申請,然后需要資源的使用和申請該項資源的權(quán)限不匹配,例如申請了讀文件操作的句柄,如果對它進行寫操作,顯然是錯誤的,在這里,我們把諸如數(shù)據(jù)越界的故障也歸類為這一種類型,主要是因為它是在對資源的使用時才會表現(xiàn)出來。
      具體檢測方法是(1)實際上可以從基本塊中的每一個變量進行別名分析,確定是否存在別名集合即可;(2)同時還要求在動態(tài)資源的分配過程中根據(jù)具體的需要操作權(quán)限,這樣,為檢測這類錯誤,在對程序的控制流圖進行掃描的過程中,記錄指定該資源的操作權(quán)限,并依次檢查后繼的操作是否與規(guī)定權(quán)限相匹配從而檢測出對這項資源的非法使用情況;另外,我們將未初始變量的使用錯誤也在此時進行檢測,即,對于各基本塊中的每一個被引用變量來說,如果在該基本塊中不存在對該變量的定值,并且在該變量也未包含在到達該基本塊的入口INA的別名組中,可以確定該變量在引用之前未被定值,從而可以檢測到變量未初始化、變量的未賦值引用等資源的非法使用的錯誤。3)資源回收故障的檢測從前面的分析可以知道,資源的回收故障主要發(fā)生在企圖對未申請的資源進行回收或多次回收的情況,這是大規(guī)模軟件中很容易產(chǎn)生的故障。這樣其檢測工作可以這樣進行在資源的回收操作過程中,如果在到達該基本塊入口的別名組集合中不存在包含待回收資源,則表明該項資源已經(jīng)被回收或者尚未申請,則表明該類型故障發(fā)生;如果在別名組集合中存在包含待回收資源的別名組,將該別名組加到KILL集合中,說明回收成功;否則表明該項資源已經(jīng)初回收或者尚未申請,則表明該類型故障發(fā)生。4)程序非法結(jié)束故障的檢測這一故障類型的檢測要求在程序結(jié)束前所有動態(tài)資源必須已經(jīng)正確釋放,這是一種值得商議的故障類型,因為程序結(jié)束,系統(tǒng)一般會自動回收該程序占用的所有資源,但這里還是把它當作故障來進行討論。其檢測方法是在程序結(jié)束前,如果存在到達基本塊出口的別名組為非空,表示系統(tǒng)中存在未被釋放的資源,則說明資源管理過程中存在著斷鏈現(xiàn)象,因此,通過對到達基本塊出口的別名組集合進行檢測可以發(fā)現(xiàn)這類錯誤。對這類資源的故障檢測等價于求最后一個基本塊的出口的別名組是否為空的操作。
      權(quán)利要求
      1.一種面向動態(tài)資源管理模式結(jié),動態(tài)資源管理由程序開始S(p)、資源分配A(res)、資源使用U(res)、資源回收R(res)和程序結(jié)束E(p)組成,動態(tài)資源的使用必須遵循下面的過程程序開始S(p)之后進行資源分配A(res),在對資源分配的結(jié)果進行正確性檢測的基礎(chǔ)上進行資源使用U(res),在程序結(jié)束E(p)前,必須進行資源的回收R(res),其中,在資源管理過程中資源的分配、使用、回收是一個可重復(fù)的過程。
      2.面向動態(tài)資源管理的軟件故障模型,該故障模型以動態(tài)資源管理模式為基礎(chǔ),并涉及了動態(tài)資源管理過程中的所有故障類型,同時,它又是本發(fā)明所提出的故障檢測技術(shù)的基礎(chǔ),分析權(quán)利要求1的面向動態(tài)資源管理模式結(jié)構(gòu)可以看到,在動態(tài)資源管理的過程中,除程序開始之外的四個階段中,都可能存在著資源管理的錯誤,按照錯誤出現(xiàn)的位置,存在著以下四種軟件故障。
      3.根據(jù)權(quán)利要求1的面向動態(tài)資源管理模式結(jié)構(gòu),其特征在于,資源申請故障存在著從U(res)到A(res)和U(res)本身的回邊,這兩條線的存在表示了資源申請錯誤,即在資源分配階段,如果對同一資源在未回收之前進行重復(fù)分配,或者,在資源分配之后未對分配結(jié)果進行檢查(UC(A)),都會引起錯誤;由此可以得到以下資源申請的故障模型res,(A(res)UC(A))or(﹁R(res)A(yù)(res))
      4.根據(jù)權(quán)利要求1的面向動態(tài)資源管理模式結(jié)構(gòu),其特征在于,資源非法使用故障存在S(p)和R(p)到U(p)的兩條邊,這兩條邊表示動態(tài)資源的未分配的使用,或被回收后的動態(tài)資源的重新使用,這兩種情況都會造成資源的非法使用,這種錯誤模型可以描述為以下的形式res,(﹁A(res)U(res))or(R(res)U(res))
      5.根據(jù)權(quán)利要求1的面向動態(tài)資源管理模式結(jié)構(gòu),其特征在于,資源回收故障存在著從S(p)出發(fā)到R(res)的連線和R(res)本身的回邊,這兩條連線表示了造成資源回收錯誤的原因,這種錯誤模型可以描述為以下的形式res,(﹁A(res)R(res))or(R(res)R(res))
      6.根據(jù)權(quán)利要求1的面向動態(tài)資源管理模式結(jié)構(gòu),其特征在于,程序非法結(jié)束故障存在從A(res)和U(res)出發(fā)到E(p)的兩條連線表示程序的非法結(jié)束,這兩條連線表示一個資源在經(jīng)過分配或使用后未進行回收操作,因此,導致程序非法結(jié)束的錯誤主要是資源的未回收錯誤,可以用以下的模型表示res,(A(res)﹁R(res))or(U(res)﹁R(res))
      7.一種面向動態(tài)資源管理的故障檢測方法,利用程序的控制流圖(CFG)和引用定值信息進行軟件錯誤的檢測,主要有以下幾種故障檢測方法1)資源申請故障的檢測對于動態(tài)資源申請故障的檢測,需要檢查被申請的資源是否已經(jīng)被分配和引用指針變量是否指向未釋放的資源,可以通過檢查所有的別名組與各種資源的對應(yīng)關(guān)系,如果在別名組集合中存在包含該變量的別名組,并且該別名組中只包含該變量本身,則表示該資源已經(jīng)被分配或正在被使用,新的資源申請操作會引起已經(jīng)存在的資源的丟失,從而檢測資源申請錯誤。2)資源非法使用故障的檢測資源的非法使用首先需要檢測每項資源在使用時是否已經(jīng)正確地申請,然后需要資源的使用和申請該項資源的權(quán)限不匹配,具體檢測方法是(1)可以從基本塊中的每一個變量進行別名分析,確定是否存在別名集合即可;(2)同時還要求在動態(tài)資源的分配過程中根據(jù)具體的需要操作權(quán)限,這樣,為檢測這類錯誤,在對程序的控制流圖進行掃描的過程中,記錄指定該資源的操作權(quán)限,并依次檢查后繼的操作是否與規(guī)定權(quán)限相匹配從而檢測出對這項資源的非法使用情況;另外,將未初始變量的使用錯誤也在此時進行檢測,即,對于各基本塊中的每一個被引用變量來說,如果在該基本塊中不存在對該變量的定值,并且在該變量也未包含在到達該基本塊入口的別名組中,可以確定該變量在引用之前未被定值,從而可以檢測到變量未初始化、變量的未賦值引用等資源的非法使用的錯誤;3)資源回收故障的檢測在資源的回收操作過程中,如果在到達該基本塊入口的別名組集合中不存在包含待回收資源,則表明該項資源已經(jīng)被回收或者尚未申請,則表明該類型故障發(fā)生;4)程序非法結(jié)束故障的檢測這一故障類型的檢測要求在程序結(jié)束前所有動態(tài)資源必須已經(jīng)正確釋放,其檢測方法是在程序結(jié)束前,如果存在到達基本塊出口的別名組非空,表示系統(tǒng)中存在未被釋放的資源,則說明資源管理過程中存在著斷鏈現(xiàn)象,因此,通過對到達基本塊出口的別名組集合進行檢測可以發(fā)現(xiàn)這類錯誤。
      8.根據(jù)權(quán)利要求7的面向動態(tài)資源管理的軟件故障檢測方法,其特征在于,檢測是屬于白盒測試。
      全文摘要
      本發(fā)明涉及軟件工程技術(shù)中的面向動態(tài)資源的管理模式、基于動態(tài)資源管理錯誤的軟件故障模型及動態(tài)資源管理錯誤的檢測方法。動態(tài)資源管理結(jié)構(gòu)由程序開始、資源分配、資源使用、資源回收和程序結(jié)束組成。動態(tài)資源管理錯誤的軟件故障模型包括資源分配錯誤、資源使用錯誤、資源回收錯誤及程序的非法結(jié)束錯誤。動態(tài)資源管理錯誤的檢測方法包括資源申請故障檢測、資源非法使用故障檢測、資源回收故障檢測、程序非法結(jié)束故障檢測。對大量故障程序進行分析的基礎(chǔ)上,提出了面向動態(tài)資源管理的軟件故障模型,在此基礎(chǔ)上提出了對各種故障類型的檢測方法。從而克服軟件測試工作的盲目性,能更有效的利用測試的結(jié)果對軟件可靠性等評價軟件質(zhì)量的指標進行評估。
      文檔編號G06F11/36GK1472652SQ03178449
      公開日2004年2月4日 申請日期2003年7月17日 優(yōu)先權(quán)日2003年7月17日
      發(fā)明者張廣梅, 徐勇軍, 李曉維 申請人:中國科學院計算技術(shù)研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1