匡珍春, 冼遠清
(廣東海洋大學 數(shù)學與計算機學院, 廣東 湛江 524088)
數(shù)據(jù)挖掘就是從海量數(shù)據(jù)中發(fā)現(xiàn)對用戶更重要的知識節(jié)點和概念模式, 以便利用數(shù)據(jù)中的規(guī)律更好地為用戶服務. 隨著互聯(lián)網(wǎng)的快速發(fā)展, WEB技術(shù)也得到廣泛應用. 合理有序的交換標準已成為當前網(wǎng)絡數(shù)據(jù)挖掘的重要需求之一[1]. XML作為一種不規(guī)則、 不固定、 可擴展的標記性語言, 適合應用于互聯(lián)網(wǎng), 能輔助人們識別計算機語言. 特別是XML的規(guī)范日益標準化, 憑著自身讀取數(shù)據(jù)的廣泛化、 邏輯思維的明確化、 傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)化等特點, 在實際應用中成為眾多項目的首選. 本文基于XML配置框架, 對數(shù)據(jù)挖掘算法進行研究, 找到效率更高、 更精準的方法, 實現(xiàn)軟件的開發(fā)與優(yōu)化.
1.1 XML數(shù)據(jù)模型 XML是由描述性的半結(jié)構(gòu)化[2]數(shù)據(jù)形成的、 可挖掘異構(gòu)的數(shù)據(jù)源, 有繼承性. 通過一些規(guī)則集合組成的規(guī)范性語言XML Schema, 用XML-RL形式語義, 實現(xiàn)數(shù)據(jù)存儲與挖掘.
1.2 XML框架模型編程 XML配置框架主要由表示層、 業(yè)務層和持久層組成, 每層結(jié)構(gòu)[3]通過STRUTS,SPRING和IBATIS等框架實現(xiàn)應用程序邏輯的正常運行, 如圖1所示.
圖1 XML配置框架編程模型Fig.1 Programming model of XML configuration framework
在表示層, 框架STRUTS按照相應配置文件的規(guī)定, 利用控制類將JSP頁面提交的訂單交給ACTION類, ACTION類會得到一個邏輯結(jié)果串, 控制類收到結(jié)果串后, 會將整個操作反應給JSP頁面, 實現(xiàn)實際應用. 在業(yè)務層, 框架SPRING[4]按照相應配置文件的規(guī)定, 利用控制類將表單提交給ACTION類, ACTION類會得到一個邏輯結(jié)果串[5], 控制類收到結(jié)果串后, 會將結(jié)果串和控制流的操作反應給JSP頁面, 實現(xiàn)實際應用. 在持久層, 框架IBATIS利用SQL語句, 自動進行對象的關(guān)系映射.
為了提高軟件工程代碼開發(fā)中數(shù)據(jù)挖掘[6]的效率, 本文在時間和空間資源都有限的條件下, 通過對測試例進行優(yōu)先排序, 先執(zhí)行滿足限制條件的測試例, 及時發(fā)現(xiàn)系統(tǒng)缺陷, 縮短運行周期.
2.1 前提條件 假設AG[7]為測試例是否需要重新測試的標準,N表示測試例重新測試時被覆蓋更新的數(shù)量,K表示測試例重復測試時的次數(shù),M表示在系統(tǒng)運行中涉及到的函數(shù)數(shù)量,T表示根據(jù)之前測試時間推測的執(zhí)行時間. 在系統(tǒng)執(zhí)行中, 重要程度如下:
N>K>M,
(1)
其中, AG值會隨著N的增大而增大.
2.2 貪心策略算法 考慮到測試點存在相同更新點的情況, 本文選取更多的更新點以更高的密度權(quán)重AG進行測試. 假設權(quán)重AG仍相同, 則改變函數(shù)總數(shù), 實現(xiàn)在數(shù)量不同環(huán)境下的研究與分析.
本文采用大X方法對該算法中的多變量進行分析. 大X方法是將多因素統(tǒng)一到單一的度量衡, 便于計算機計算的研究方法.X是測試例中設置的、 比原有目標函數(shù)相關(guān)系數(shù)大的數(shù)值. 每個測試例均有一個X, 存在如下關(guān)系:
AG=N×X×X+K×X+M,
(2)
其中,X是所有測試例的平均值, 即
(3)
考慮到測試例優(yōu)先排序過程中存在的時間限制問題, 本文引入時間參數(shù), 建立新的算法如下:
PAG=(N×X×X+K×X+M)/T,
(4)
其中, PAG表示測試例中單元時間發(fā)現(xiàn)的缺陷價值, 且PAG值隨著測試價值的增加而增大.AG自身具有執(zhí)行時間長、 整體運行易發(fā)現(xiàn)錯誤的特點. 而PAG是一次執(zhí)行多個測試例, 執(zhí)行時間短, 但發(fā)現(xiàn)錯誤較少. 二者的整體效果相同. 本文采用PAG優(yōu)化算法.
圖2 測試例優(yōu)選排序流程Fig.2 Flow chart of test cases optimal sorting
2.3 測試分析 圖2為測試例優(yōu)選排序流程, 每個環(huán)節(jié)表示一個調(diào)用函數(shù), 箭頭的方向表示環(huán)節(jié)與環(huán)節(jié)之間的調(diào)用順序[8], 其中: 實線箭頭表示較簡單的函數(shù)關(guān)系; 虛線箭頭表示較復雜的函數(shù)關(guān)系; 用環(huán)形標注出的環(huán)節(jié)表示在測試例進行排序過程中發(fā)生變更的節(jié)點[9].
設測試例為8個, 涉及類別為4個,X=100, 根據(jù)式(4)計算PAG值, 所得結(jié)果列于表1. 由表1可見,T8的計算結(jié)果與其他結(jié)果相差較大, 因此忽略該測試例. 綜合排序為
T6>T5>T2>T4>T3>T1>T7.
為了解決貪心策略在測試過程中處理更新點時存在覆蓋效率較低的問題, 本文引進多維度的概念, 從時間和空間雙重角度考慮, 全面對貪心算法進行改進, 提出一種多維度擴展貪心策略[10].
假設操作過程中距離某步驟最近的變更節(jié)點為y,Y為運行中涉及到的所有節(jié)點集合. 節(jié)點在執(zhí)行過程中存在的缺陷程度S(y)由低到高分別是L(S),M(S)和H(S), 則有
F(y)=(F(y)+S(Y))/2,
(6)
F(m)=∑F(yi),yi∈F,
(7)
其中:F(y)表示測試例在計算執(zhí)行過程中發(fā)生的缺陷程度;F(m)表示測試例在執(zhí)行過程中的危害.
考慮到上述研究中的信息反饋, 將S的取值設定為1,5,9, 則得到優(yōu)化的PAG算法----多維度擴展貪心算法公式為
(8)
多維度貪心策略是考慮到多個因素, 實現(xiàn)測試例選擇的優(yōu)化貪心算法, 其能發(fā)現(xiàn)已經(jīng)存在及潛在的系統(tǒng)缺陷, 通過將測試例按照存在缺陷的程度排序, 逐級運行, 在受到影響的測試例集中發(fā)現(xiàn)數(shù)據(jù)挖掘的缺陷. 該算法包括隨意算法、 貪心算法、 升級貪心算法、 針對流算法(MAG)及優(yōu)化針對流算法(CMAG)等方法. 不同方法對應的測試優(yōu)選結(jié)果列于表2.
表2 測試優(yōu)選結(jié)果
由表2可見, MAG算法先去掉測試例中涉及到的變更點, 再根據(jù)MAG值將具有數(shù)值最大的測試例加入到第一個數(shù)據(jù)集合, 第二大的加入到第二個數(shù)據(jù)集合, 以此類推, 直到所有數(shù)據(jù)都被分配到集合中為止. 因此, MAG和CMAG方法都具有可信度高、 執(zhí)行快速和覆蓋全面等優(yōu)點.
本文利用JAVA語言編程, 通過對600個數(shù)據(jù)分別進行3次認證, 即認證1、 認證2和認證3, 3次認證結(jié)果列于表3.
表3 3次認證結(jié)果統(tǒng)計
由表3可見: 在認證1中, 通過對158個數(shù)據(jù)進行測試, 得到35個錯誤; 經(jīng)過改進, 在認證2中, 通過對168個數(shù)據(jù)進行測試, 得到15個錯誤; 再進行改進后, 在認證3中, 通過對168個數(shù)據(jù)進行測試, 得到錯誤為0. 因此, 通過對系統(tǒng)不斷地改進, 結(jié)果越來越精確.
圖3 AP誤差驗證Fig.3 AP error verification
XML框架下數(shù)據(jù)挖掘軟件工程發(fā)現(xiàn)測試缺陷的情況由系統(tǒng)平均錯誤發(fā)現(xiàn)率表示, 計算公式為
(9)
其中: AP表示系統(tǒng)平均錯誤發(fā)現(xiàn)率;Fn表示在F排序過程中第一次發(fā)現(xiàn)錯誤n的測試例.
圖3為AP誤差驗證結(jié)果. 由圖3可見, 隨著測試數(shù)據(jù)的增加, 到一定程度時, 發(fā)現(xiàn)的錯誤呈持平狀態(tài), 即錯誤數(shù)據(jù)是有限的, 且在測試過程中會被完全發(fā)現(xiàn). 本文方法在有限的時間內(nèi)實現(xiàn)了數(shù)據(jù)缺陷的驗證, 因此, XML配置框架的數(shù)據(jù)挖掘算法是一種有效的方法.