一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法及系統(tǒng),所述方法包括:基于軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型;基于源代碼生成實際函數(shù)調(diào)用關(guān)系圖,根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型;比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求。
【專利說明】一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及軟件測試【技術(shù)領(lǐng)域】,具體地,涉及一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法及系統(tǒng)。
【背景技術(shù)】
[0002]在過去的幾十年里,軟件數(shù)量激增,同時軟件的代碼量和代碼復雜度不斷增加,軟件測試工作的復雜程度也隨之不斷提高,大量的軟件產(chǎn)品導致軟件測試工作需要高效的完成,自動化的測試工具已經(jīng)成為軟件測試的迫切需求。軟件實現(xiàn)與設(shè)計一致性驗證是指對已完成軟件系統(tǒng),驗證其功能實現(xiàn)是否按照軟件設(shè)計說明書的要求完成,是一種非常重要的測試工作。黑盒測試只能保證軟件完成了指定的功能,而不能驗證其完成的方式;人工代碼走查和代碼審查的白盒測試需要測試人員有豐富開發(fā)經(jīng)驗,充分理解源代碼、系統(tǒng)設(shè)計結(jié)構(gòu)以及各個代碼模塊實現(xiàn)方法,這對測試人員有著十分高的要求并且測試效率低,易出錯,對大型軟件的分析工作是一個十分耗時且昂貴的工作。
[0003]現(xiàn)有技術(shù)中提出了一種基于Module Documentat1n-based Testing (MD-Test)的測試方法,該方法從形式化的設(shè)計文檔中提取軟件設(shè)計信息,指導測試工作,自動生成測試用例,執(zhí)行測試用例,計算測試結(jié)果。但是該方法是基于嚴格格式化的軟件設(shè)計文檔的,并不考慮軟件代碼實際的實現(xiàn)過程,不能驗證軟件實現(xiàn)方法是否與設(shè)計說明書中的方法一致。另外還有一種基于場景的分析方法來發(fā)現(xiàn)執(zhí)行路徑中的錯誤,基于格式化的說明文檔中自動生成測試用例檢測執(zhí)行路徑的正確性,但是該方法需要分析每一個場景下的每一條執(zhí)行路徑,需要產(chǎn)生大量的測試用例。
[0004]針對上述問題,本發(fā)明提出了一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法及系統(tǒng)。
【發(fā)明內(nèi)容】
[0005]本發(fā)明所要解決的技術(shù)問題是提供一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法及系統(tǒng),用于解決軟件實現(xiàn)與設(shè)計一致性驗證的技術(shù)問題。
[0006]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,包括:
[0007]基于軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型;
[0008]基于源代碼生成實際函數(shù)調(diào)用關(guān)系圖,根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型;
[0009]比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求。
[0010]本發(fā)明的技術(shù)方案還包括一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證系統(tǒng),包括:
[0011]設(shè)計功能簇模型構(gòu)建模塊,其用于根據(jù)軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型;
[0012]實際功能簇模型構(gòu)建模塊,其用于根據(jù)源代碼生成實際函數(shù)調(diào)用關(guān)系圖,根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型;
[0013]功能簇比對模塊,其用于比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求
[0014]本發(fā)明的有益效果是:本發(fā)明設(shè)計了一種基于函數(shù)特征的函數(shù)功能提取方法,能準確地獲得被測軟件系統(tǒng)的功能結(jié)構(gòu),并進一步實現(xiàn)基于函數(shù)調(diào)用路徑的軟件實現(xiàn)與設(shè)計方法,豐富了軟件測試方法,為設(shè)計文檔的自動化測試提供了新的思路,能夠幫助測試人員完成對源代碼的分析,自動提取實現(xiàn)系統(tǒng)的功能與實現(xiàn)方法,提高了軟件實現(xiàn)與設(shè)計的一致性驗證效率。
【專利附圖】
【附圖說明】
[0015]圖1為本發(fā)明所述的基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法的流程示意圖;
[0016]圖2為本發(fā)明實施例中的函數(shù)功能提取過程示意圖;
[0017]圖3為本發(fā)明實施例中的函數(shù)特征相似度計算過程示意圖;
[0018]圖4為本發(fā)明所述的基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0019]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0020]本發(fā)明以函數(shù)調(diào)用路徑為基礎(chǔ)建立模型,認為軟件實現(xiàn)中的一條函數(shù)調(diào)用路徑實現(xiàn)了軟件系統(tǒng)的一個功能?;谶@樣的思路,首先對帶有功能描述的函數(shù)調(diào)用關(guān)系圖和帶有功能描述的函數(shù)調(diào)用路徑進行重新定義,即是定義了系統(tǒng)功能關(guān)系圖和系統(tǒng)功能路徑。
[0021]系統(tǒng)功能關(guān)系圖:系統(tǒng)中每個函數(shù)執(zhí)行了一定的功能,函數(shù)之間的調(diào)用關(guān)系表示了系統(tǒng)中功能點的關(guān)系,系統(tǒng)功能關(guān)系可以表示為一種有向圖G =〈V,E>,其中V是結(jié)點集,每一個結(jié)點稱為一個功能點,表示該結(jié)點函數(shù)的功能;E = {(x, y) I x, y e V}是弧集,表示功能點之間的依賴或者順序關(guān)系。
[0022]系統(tǒng)功能路徑:以功能點為基本單位來描述系統(tǒng)的執(zhí)打路徑,每條系統(tǒng)執(zhí)彳丁路徑表不個系統(tǒng)功能,每條路徑可以表不為系統(tǒng)功能關(guān)系圖中的個結(jié)點序列(Vi =V11Vil, - ,Vim), Vi為系統(tǒng)功能關(guān)系圖中的結(jié)點。
[0023]軟件系統(tǒng)可以抽象為一張系統(tǒng)功能關(guān)系圖,圖中的每一個結(jié)點是一個函數(shù),系統(tǒng)中的每一個函數(shù)都實現(xiàn)了一定功能。每一條函數(shù)的執(zhí)行路徑代表系統(tǒng)單獨完成一個功能所需要的函數(shù)序列,所以本發(fā)明認為每條函數(shù)調(diào)用路徑的執(zhí)行都完成了一個系統(tǒng)需要的功能,從而可以根據(jù)函數(shù)結(jié)點在函數(shù)調(diào)用圖中的位置對系統(tǒng)功能進行分簇,將相似的功能子模塊分為一簇,即得到系統(tǒng)功能簇。
[0024]系統(tǒng)功能簇:系統(tǒng)功能關(guān)系圖中由控制語句的分支結(jié)點Vk產(chǎn)生分支產(chǎn)生2條或者多條系統(tǒng)功能路徑 Paths = {pathj (Vil, Vi2...Vim) Ipathi e SFP 且 Vk e pathj , Paths為分支結(jié)點Vk產(chǎn)生系統(tǒng)功能簇。
[0025]如圖1所示,本實施例給出了一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,可以分為三個主要過程:構(gòu)建設(shè)計功能簇模型、構(gòu)建實際設(shè)計功能簇模型和比對功能簇模型。
[0026]圖1的左側(cè)部分即示意了設(shè)計功能簇模型的構(gòu)建過程:首先基于軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,再根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型。
[0027]圖1的右側(cè)部分示意了實現(xiàn)功能簇模型的構(gòu)建過程:首先基于源代碼生成實際函數(shù)調(diào)用關(guān)系圖,再根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型。
[0028]最后比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求,確定軟件實現(xiàn)了指定個數(shù)的功能及功能實現(xiàn)方式,并在完成對比后,給出測試報告。
[0029]下面具體介紹這三個主要過程的【具體實施方式】。
[0030]一、構(gòu)建設(shè)計功能簇模型
[0031]根據(jù)軟件設(shè)計說明書里的描述,可以分析得到在軟件開發(fā)前,軟件設(shè)計人員對代碼的整體設(shè)計和實現(xiàn)算法要求。詳細設(shè)計說明書描述每一模塊的實現(xiàn)方式,包括實現(xiàn)算法、邏輯流程等。根據(jù)軟件設(shè)計說明書可以畫出函數(shù)的調(diào)用關(guān)系圖,并且對每個函數(shù)的功能以及實現(xiàn)方式會有著相應的描述。軟件系統(tǒng)的設(shè)計功能簇模型是指通過人工分析設(shè)計說明書,建立系統(tǒng)功能調(diào)用關(guān)系圖,然后自動生成功能調(diào)用路徑,建立設(shè)計功能簇模型。
[0032]二、構(gòu)建實際功能簇模型
[0033]靜態(tài)分析源代碼得到被測軟件系統(tǒng)實現(xiàn)的函數(shù)調(diào)用關(guān)系圖以及函數(shù)調(diào)用路徑,通過函數(shù)功能識別即可得到函數(shù)的功能描述及其實現(xiàn)方式,從而得到從源代碼提取出來的功能簇模型。
[0034]可知,函數(shù)功能提取是最為關(guān)鍵的步驟,其基本思路是:預處理源代碼;從源代碼中提取函數(shù)特征;將提取的函數(shù)特征與已知函數(shù)功能的函數(shù)模板集中的函數(shù)特征進行相似度計算,若相似度達到設(shè)定的閾值,則認定被測函數(shù)的函數(shù)功能與函數(shù)模板集中對應的函數(shù)功能一致;將獲得的函數(shù)功能及功能實現(xiàn)方式標記至函數(shù)的功能描述中,完成函數(shù)功能的提取。
[0035]如圖2所示,函數(shù)功能提取包括以下幾個部分。
[0036]I)源代碼預處理
[0037]在提取函數(shù)特征之前,首先需要對源代碼進行預處理。在對代碼靜態(tài)分析時,按token作為基本處理單元進行處理分析,源程序中的注釋、空行、自定義字符串內(nèi)容、輸入輸出語句中的提示信息等都會對函數(shù)特征抽取結(jié)果產(chǎn)生影響,所以需要刪除這些干擾信息。
[0038]2)特征提取
[0039]有兩個關(guān)鍵點,一是所提取特征的類型,一是針對該特征的相似度算法。
[0040]程序特征一般可以分為兩類,一種是統(tǒng)計特征,即統(tǒng)計代碼中可以量化的特征;另一種是結(jié)構(gòu)特征,比如抽象語法樹(AST),控制流圖(CFG)等。本實施例將同時提取這兩種特征,并根據(jù)特征選用合適的相似度算法來計算函數(shù)的相似度。
[0041]統(tǒng)計特征的抽取主要借助于flex工具對源代碼進行詞法分析,flex是一款自動化的詞法分析工具,通過flex,只需要設(shè)計所需要的模式(正則表達式與該正則表達式匹配時要執(zhí)行的C/C++代碼),即可完成對相應統(tǒng)計特征的提取與計數(shù)。
[0042]函數(shù)特征中的結(jié)構(gòu)特征是指能夠反映函數(shù)結(jié)構(gòu)的特征,而不能用數(shù)字衡量的。本實施例將抽取表征語法特征的控制流圖。結(jié)構(gòu)特征一般使用樹或者圖的形式來表示,可借助flex工具進行詞法分析,并借助gcc編譯器的調(diào)試信息來完成源代碼的控制流圖的抽取工作。
[0043]本實施例采用flex生成詞法分析器提取函數(shù)的統(tǒng)計特征和結(jié)構(gòu)特征,并以JSON格式存儲提取出的函數(shù)的統(tǒng)計特征和結(jié)構(gòu)特征。
[0044]3)功能識別
[0045]統(tǒng)計特征組合在一起形成了一個N維的向量,每個函數(shù)的統(tǒng)計特征將對應該向量空間的一個點。特征的相似度計算可以有多種方式,本實施例采用了向量相似度來表示統(tǒng)計特征之間的相似關(guān)系,使用Jaccard系數(shù)來表示向量之間的相似度。
[0046]Jaccard系數(shù)被廣泛的應用到相似度計算中,是一種基于集合的相似度函數(shù),其一般定義為給定兩個集合A和B,這兩個集合交的大小除以這兩個集合并的大小。兩個集合的并等于兩個集合的大小的和減去兩個集合交的大小。本實施例使用的是Jaccard系數(shù)的廣義定義,又稱為Tanimoto系數(shù),其計算方法如公式(I)所示,Jaccard系數(shù)的廣義定義二元屬性情況下歸約為Jaccard系數(shù)。
V X V,Χ; X V,-, 4、
[0047]NumSim{Vp,Vq)=~0- ( I )
[0048]其中Vp和Vq分別指兩個函數(shù)的統(tǒng)計特征,均為變量,Xi和分別是向量中的一個元素。
[0049]代碼結(jié)構(gòu)特征采用圖編輯距離來計算,圖編輯距離是指對于兩張圖G1和G2,經(jīng)過N步最少次數(shù)的基本編輯操作使G1轉(zhuǎn)換為G2,其中基本編輯是指對圖中結(jié)點行進行增加、刪除、編輯。結(jié)構(gòu)特征的相似度計算公式為:
P c.Γ \ 1 distancc(G,,G?)
[0050]GrpSnn^G^l-瞧?丨批丨)⑵
[0051]其中,(Iistance(GljG2)是指G1和G2的編輯距離|G」和|G2|為兩張圖的結(jié)點個數(shù)。
[0052]本實施例的特征相似度計算步驟主要為:首先,采用公式(I)基于向量相似度計算提取出的統(tǒng)計特征與函數(shù)模板集中的統(tǒng)計特征的相似度,再從中選擇相似度最高的模板作為結(jié)構(gòu)特征對比的模板集;其次,采用公式(2),基于圖編輯距離計算提取出的結(jié)構(gòu)特征與選擇出的模板集中的結(jié)構(gòu)特征的相似度,將相似度最高的模板作為計算結(jié)果。
[0053]舉例說明,如圖3所示,通過計算被測函數(shù)統(tǒng)計特征與特征模板集中統(tǒng)計特征的相似度,發(fā)現(xiàn)函數(shù)Fi和Fj的統(tǒng)計特征與被測函數(shù)相似度高(如圖3中統(tǒng)計特征的斜線填充部分所示,F(xiàn)i和Fj的特征向量分別為Vi和Vj),然后計算這兩個函數(shù)的結(jié)構(gòu)特征與被測函數(shù)的相似度,得到Fj的結(jié)構(gòu)特征相似度較高(如圖3中結(jié)構(gòu)特征的斜線填充部分所示),進而可以認為Fj模板函數(shù)的功能和實現(xiàn)方式與被測函數(shù)類似,將被測函數(shù)的功能標記為該模板函數(shù)的功能描述。
[0054]三、比對功能簇模型
[0055]從圖的角度去看兩個功能簇模型對比順序是一種自頂向下的對比順序,從根結(jié)點開始,以深度搜索的方式對比每一對具有相同函數(shù)名稱的函數(shù)對。對比的內(nèi)容為兩個函數(shù)的功能描述,包括函數(shù)功能以及實現(xiàn)方式。如果函數(shù)功能描述一致,則將這兩個函數(shù)標記為真,表示該功能點的軟件實現(xiàn)與設(shè)計是一致的。
[0056]系統(tǒng)功能是由一系列的功能點組成的,只有完全匹配的功能路徑才能表示該系統(tǒng)功能是一致的。完全匹配的功能路徑是指兩個模型中某兩條函數(shù)調(diào)用路徑中的每一個結(jié)點都是對應的,并且功能描述匹配成功。
[0057]如圖4所示,本實施例對應給出了一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證系統(tǒng),包括:
[0058]設(shè)計功能簇模型構(gòu)建模塊,其用于根據(jù)軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型;
[0059]實際功能簇模型構(gòu)建模塊,其用于根據(jù)源代碼生成實際函數(shù)調(diào)用關(guān)系圖,根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型;
[0060]功能簇比對模塊,其用于比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求。
[0061]其中,所述實際功能簇模型構(gòu)建模塊包括有函數(shù)功能提取模塊,其用于根據(jù)函數(shù)特征從源代碼中提取出函數(shù)功能,且所述函數(shù)功能提取模塊又包括:
[0062]源代碼預處理模塊,用于預處理源代碼;
[0063]函數(shù)特征提取模塊,用于從源代碼中提取函數(shù)特征;
[0064]函數(shù)功能獲取模塊,用于將提取的函數(shù)特征與已知函數(shù)功能的函數(shù)模板集中的函數(shù)特征進行相似度計算,若相似度達到設(shè)定的閾值,則認定被測函數(shù)的函數(shù)功能與函數(shù)模板集中對應的函數(shù)功能一致;
[0065]函數(shù)功能標記模塊,用于將獲得的函數(shù)功能及功能實現(xiàn)方式標記至函數(shù)的功能描述中,完成函數(shù)功能的提取。
[0066]所述功能簇比對模塊包括:
[0067]函數(shù)功能比對模塊,其用于按自頂向下的對比順序,從根結(jié)點開始,以深度搜索的方式對比兩個功能簇模型中每一對具有相同函數(shù)名稱的函數(shù),對比的內(nèi)容為兩個函數(shù)的功能描述;以及
[0068]函數(shù)功能判定,其用于在進行對比的兩個函數(shù)的功能描述一致時,將兩個函數(shù)標記為真,以表示該函數(shù)對應的功能點的功能實現(xiàn)與軟件設(shè)計說明書一致。
[0069]該系統(tǒng)與對應的基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法的實施過程一致,不再多述。
[0070]以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【權(quán)利要求】
1.一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,其特征在于,包括: 基于軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型; 基于源代碼生成實際函數(shù)調(diào)用關(guān)系圖,根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型; 比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求。
2.根據(jù)權(quán)利要求1所述的一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,其特征在于,所述基于函數(shù)特征從源代碼中提取出函數(shù)功能具體包括: 預處理源代碼; 從源代碼中提取函數(shù)特征; 將提取的函數(shù)特征與已知函數(shù)功能的函數(shù)模板集中的函數(shù)特征進行相似度計算,若相似度達到設(shè)定的閾值,則認定被測函數(shù)的函數(shù)功能與函數(shù)模板集中對應的函數(shù)功能一致; 將獲得的函數(shù)功能及功能實現(xiàn)方式標記至函數(shù)的功能描述中,完成函數(shù)功能的提取。
3.根據(jù)權(quán)利要求2所述的一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,其特征在于,所述函數(shù)特征包括統(tǒng)計特征和結(jié)構(gòu)特征,且所述將提取的函數(shù)特征與已知函數(shù)功能的函數(shù)模板集中的函數(shù)特征進行相似度計算具體包括: 基于向量相似度計算提取出的統(tǒng)計特征與函數(shù)模板集中的統(tǒng)計特征的相似度,再從中選擇相似度最高的模板作為結(jié)構(gòu)特征對比的模板集; 基于圖編輯距離計算提取出的結(jié)構(gòu)特征與選擇出的模板集中的結(jié)構(gòu)特征的相似度,將相似度最高的模板作為計算結(jié)果。
4.根據(jù)權(quán)利要求3所述的一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,其特征在于,采用flex生成詞法分析器提取函數(shù)的統(tǒng)計特征和結(jié)構(gòu)特征,并以JSON格式存儲提取出的函數(shù)的統(tǒng)計特征和結(jié)構(gòu)特征。
5.根據(jù)權(quán)利要求1所述的一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,其特征在于,所述比較設(shè)計功能簇模型與實際功能簇模型具體包括: 按自頂向下的對比順序,從根結(jié)點開始,以深度搜索的方式對比兩個功能簇模型中每一對具有相同函數(shù)名稱的函數(shù),對比的內(nèi)容為兩個函數(shù)的功能描述。
6.根據(jù)權(quán)利要求5所述的一種基于路徑的軟件實現(xiàn)與設(shè)計一致性驗證方法,其特征在于,所述驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求具體包括: 若進行對比的兩個函數(shù)的功能描述一致,則將兩個函數(shù)標記為真,表示該函數(shù)對應的功能點的功能實現(xiàn)與軟件設(shè)計說明書一致。
7.一種基于路徑的軟件實現(xiàn)與一致性驗證系統(tǒng),其特征在于,包括: 設(shè)計功能簇模型構(gòu)建模塊,其用于根據(jù)軟件設(shè)計說明書生成設(shè)計函數(shù)調(diào)用關(guān)系圖,根據(jù)設(shè)計函數(shù)調(diào)用關(guān)系圖生成設(shè)計函數(shù)調(diào)用路徑,再根據(jù)設(shè)計函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的設(shè)計功能簇模型; 實際功能簇模型構(gòu)建模塊,其用于根據(jù)源代碼生成實際函數(shù)調(diào)用關(guān)系圖,根據(jù)實際函數(shù)調(diào)用關(guān)系圖生成實際函數(shù)調(diào)用路徑,并基于函數(shù)特征從源代碼中提取出函數(shù)功能回填到實際函數(shù)調(diào)用路徑中,再根據(jù)實際函數(shù)調(diào)用路徑建立被測軟件系統(tǒng)的實際功能簇模型; 功能簇比對模塊,其用于比較設(shè)計功能簇模型與實際功能簇模型,驗證被測軟件系統(tǒng)的功能實現(xiàn)是否達到軟件設(shè)計說明書的要求。
8.根據(jù)權(quán)利要求7所述的一種基于路徑的軟件實現(xiàn)與一致性驗證系統(tǒng),其特征在于,所述實際功能簇模型構(gòu)建模塊包括有函數(shù)功能提取模塊,其用于根據(jù)函數(shù)特征從源代碼中提取出函數(shù)功能,且所述函數(shù)功能提取模塊又包括: 源代碼預處理模塊,用于預處理源代碼; 函數(shù)特征提取模塊,用于從源代碼中提取函數(shù)特征; 函數(shù)功能獲取模塊,用于將提取的函數(shù)特征與已知函數(shù)功能的函數(shù)模板集中的函數(shù)特征進行相似度計算,若相似度達到設(shè)定的閾值,則認定被測函數(shù)的函數(shù)功能與函數(shù)模板集中對應的函數(shù)功能一致; 函數(shù)功能標記模塊,用于將獲得的函數(shù)功能及功能實現(xiàn)方式標記至函數(shù)的功能描述中,完成函數(shù)功能的提取。
9.根據(jù)權(quán)利要求8所述的一種基于路徑的軟件實現(xiàn)與一致性驗證系統(tǒng),其特征在于,所述函數(shù)特征包括統(tǒng)計特征和結(jié)構(gòu)特征,且將提取的函數(shù)特征與已知函數(shù)功能的函數(shù)模板集中的函數(shù)特征進行相似度計算具體包括: 基于向量相似度計算提取出的統(tǒng)計特征與函數(shù)模板集中的統(tǒng)計特征的相似度,再從中選擇相似度最高的模板作為結(jié)構(gòu)特征對比的模板集; 基于圖編輯距離計算提取出的結(jié)構(gòu)特征與選擇出的模板集中的結(jié)構(gòu)特征的相似度,將相似度最高的模板作為計算結(jié)果。
10.根據(jù)權(quán)利要求7所述的一種基于路徑的軟件實現(xiàn)與一致性驗證系統(tǒng),其特征在于,所述功能簇比對模塊包括: 函數(shù)功能比對模塊,其用于按自頂向下的對比順序,從根結(jié)點開始,以深度搜索的方式對比兩個功能簇模型中每一對具有相同函數(shù)名稱的函數(shù),對比的內(nèi)容為兩個函數(shù)的功能描述;以及 函數(shù)功能判定,其用于在進行對比的兩個函數(shù)的功能描述一致時,將兩個函數(shù)標記為真,以表示該函數(shù)對應的功能點的功能實現(xiàn)與軟件設(shè)計說明書一致。
【文檔編號】G06F11/36GK104317711SQ201410568963
【公開日】2015年1月28日 申請日期:2014年10月22日 優(yōu)先權(quán)日:2014年10月22日
【發(fā)明者】牟永敏 申請人:牟永敏, 北京信息科技大學