邊偉成
(江蘇省信息中心 江蘇 南京 210013)
基于AOP的軟件缺陷監(jiān)測框架的設(shè)計與實現(xiàn)
邊偉成
(江蘇省信息中心 江蘇 南京 210013)
隨著軟件規(guī)模的不斷擴大,軟件質(zhì)量越發(fā)成為軟件開發(fā)企業(yè)關(guān)注的重點。關(guān)于如何減少軟件缺陷,提高軟件可靠性是所有軟件開發(fā)者追求的永恒主題。本文基于AOP技術(shù)設(shè)計和提出了一種新的軟件缺陷檢測框架,其具體由方法監(jiān)控層、數(shù)據(jù)過濾層和邏輯表現(xiàn)層組成,自底向上傳遞數(shù)據(jù)。該框架可實現(xiàn)軟件方法的實時監(jiān)控、自定義監(jiān)控規(guī)則、對于缺陷按照嚴(yán)重等級進行分類顯示等功能。最后通過與實際項目相整合,設(shè)計測試用例,測試結(jié)果表明本文提出的框架具有可行性。
軟件缺陷;AOP;軟件質(zhì)量;監(jiān)測框架
隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,Web類應(yīng)用軟件發(fā)展趨勢迅猛。由于Web類應(yīng)用軟件產(chǎn)品更新頻率高、測試周期短、使用范圍廣,在實際的Web軟件開發(fā)過程中,往往或多或少的會存在軟件缺陷[1-2],因此需要一套可靠的軟件缺陷檢測框架對開發(fā)過程中遺留的疏漏進行有效的監(jiān)控。因此本文研究的主要目的就是針對Web應(yīng)用提出一套具有易用性,可操作性,可維護性和可擴展性的軟件缺陷檢測框架。其可以實現(xiàn)在不破壞原有軟件項目工程的基礎(chǔ)上,嫁接到軟件工程之上,使其具有缺陷檢測的功能。
文中的主要貢獻是基于AOP技術(shù)設(shè)計和提出了一種新的軟件缺陷檢測框架。該框架由監(jiān)控層,數(shù)據(jù)過濾層和邏輯表現(xiàn)層組成。每個層次結(jié)構(gòu)分工明確,自底向上傳遞數(shù)據(jù),其相比于一般軟件缺陷檢測軟件具有可操作,去冗余,可定制,結(jié)果易于理解等優(yōu)勢。在缺陷檢測的過程中,web項目可能出現(xiàn)方法檢測信息冗余,運用布隆算法對其進行了數(shù)據(jù)過濾的過程,其相比較于一般算法,節(jié)省了大量空間,去除了在缺陷檢測過程中的冗余數(shù)據(jù)。最后針對一個實際應(yīng)用的項目,運用本文設(shè)計的軟件缺陷檢測框架進行了整合,通過預(yù)留一定的軟件缺陷,設(shè)計了幾個測試用例對測試結(jié)果進行詳細的分析,驗證了該框架的實用性。
AOP(Aspect-Oriented Programming)技術(shù)[3-4],即面向方面編程技術(shù),是對于面向?qū)ο缶幊蹋∣OP)技術(shù)的完善和彌補。AOP通過一種“橫切”技術(shù)將對象內(nèi)部解剖開來,從而將公共行為的多個類的重復(fù)代碼封裝到同一個模塊之中得到一個可重用模塊,叫做方面,即“Aspect”。所謂“方面”[5]就是將那些與系統(tǒng)核心業(yè)務(wù)無關(guān)但卻被業(yè)務(wù)模塊共同調(diào)用所封裝起來的類,這樣就可以大大減少代碼冗余,使得各個模塊之間的耦合度降低,實現(xiàn)對于系統(tǒng)可操作性和可維護性的提升。AOP主要應(yīng)用于權(quán)限驗證、日志管理、事務(wù)響應(yīng)處理等。
各種技術(shù)雖然都是實現(xiàn)AOP技術(shù),并且都實現(xiàn)了AOP技術(shù)的各項技術(shù)指標(biāo),但不同的AOP工具在底層機制上卻是大相徑庭。本文主要采用的是Spring AOP 技術(shù)[6]。
Spring AOP技術(shù)是整個Spring框架當(dāng)中的一部分,其也能夠作為一個獨立模塊而存在。從本質(zhì)上來講,Spring AOP通過運用動態(tài)代理技術(shù)來實現(xiàn)了AOP。它的具體體現(xiàn)形式是利用IoC的機制,并且整合利用了AOP聯(lián)盟中的通用AOP接口。在運用Spring AOP來實現(xiàn)AOP時,首先需要對于其spring的 xml配置文件添加配置pointcut,然后利用Spring中的Interceptor作為觸發(fā)條件[7]。開發(fā)者可以自由定義切面類,Interceptor的實現(xiàn)類似于實現(xiàn)AOP的advice,開發(fā)人員在進行Interceptor的開發(fā)過程中,需要實現(xiàn)通用的AOP接口。
與大多數(shù)軟件框架不同,本文設(shè)計的基于AOP的軟件缺陷檢測框架可以在編碼階段之外將其添加到項目工程當(dāng)中,在不影響原先設(shè)計邏輯的情況下,發(fā)現(xiàn)軟件在運行過程中遇到的缺陷和異常。其具有監(jiān)控方法、獲取數(shù)據(jù)、數(shù)據(jù)過濾、缺陷分類、轉(zhuǎn)譯顯示等功能。
該軟件缺陷檢測框架主要針對B/S架構(gòu)的Web軟件所開發(fā),可針對不同的軟件缺陷進行檢測和記錄,其主要由方法監(jiān)控層、數(shù)據(jù)過濾層和邏輯表現(xiàn)層三層結(jié)構(gòu)構(gòu)成,如圖1所示。
圖1 總體框架圖
方法監(jiān)控層位于架構(gòu)最底層,主要通過AOP技術(shù)獲得執(zhí)行的方法剖面。再對切點的前后進行操作,記錄下方法的相關(guān)信息,其中主要包括方法名、執(zhí)行參數(shù)、返回值、操作者屬性和操作結(jié)果等,原理如圖2所示。
圖2 方法監(jiān)控層原理圖
在AOP編程中,對業(yè)務(wù)邏輯的各個部分進行隔離,監(jiān)控每個方法所操作的主體和客體,即對于操作者、操作內(nèi)容進行監(jiān)控,獲得執(zhí)行方法時的相關(guān)參數(shù)。該部分運用到的AOP技術(shù)主要是基于Spring AOP所實現(xiàn)的。通過切面類定義獲得整個Web應(yīng)用程序執(zhí)行方法的切面,并對于其中的方法名,操作對象,返回值等一系列要素進行檢測提取,以便于數(shù)據(jù)過濾層對其監(jiān)控到的方法的相關(guān)數(shù)據(jù)進行篩選操作。
該層位于架構(gòu)的中間層,主要作用是對從監(jiān)控層獲取的監(jiān)控信息進行過濾,主要通過布隆算法[8-9]來實現(xiàn)數(shù)據(jù)過濾。另外需要構(gòu)建一個規(guī)則庫,對于監(jiān)控層所提交過來的數(shù)據(jù)進行規(guī)則匹配,只有滿足規(guī)則庫中規(guī)則的方法,才能繼續(xù)傳遞到邏輯表現(xiàn)層,進行表現(xiàn)輸出。同時提供接口供開發(fā)人員自行定義規(guī)則來選擇需要監(jiān)控的方法,用以提高該軟件缺陷檢測框架的擴展性,具體過程如圖3所示。
圖3 數(shù)據(jù)過濾層原理圖
1)實現(xiàn)數(shù)據(jù)去冗余功能
通過布隆算法去除冗余,相比于其它的數(shù)據(jù)結(jié)構(gòu),布隆過濾器在空間和時間方面都有巨大的優(yōu)勢。布隆過濾器存儲空間和插入/查詢時間都是常數(shù)[10]。布隆過濾器不需要存儲元素本身,在某些對保密要求非常嚴(yán)格的場合有優(yōu)勢。
由于該軟件缺陷檢測框架是屬于B/S的架構(gòu),所以在同一時刻可能有不同的用戶對于同一方法進行訪問,或者是同一用戶由于操作失誤使得項目工程多次執(zhí)行同一個方法,從而造成監(jiān)控數(shù)據(jù)產(chǎn)生大量冗余。運用布隆過濾器,對于以上的情況進行過濾。通過將相鄰極短時間的多次同一用戶對于同一方法的執(zhí)行數(shù)據(jù)作為冗余數(shù)據(jù),對其進行篩選過濾,只保留其中固定的一部分。
2)實現(xiàn)數(shù)據(jù)規(guī)則匹配功能
主要對于方法監(jiān)控層傳來的方法數(shù)據(jù)是否需要監(jiān)控進行判定,通過與規(guī)則庫中已經(jīng)指定的規(guī)則進行匹配,得出對該方法數(shù)據(jù)是需要監(jiān)控還是丟棄的判定。本文使用KMP算法[11-13]實現(xiàn)字符串匹配,通過讀取存儲在數(shù)據(jù)庫中的規(guī)則,進行依次匹配,篩選出符合規(guī)則的方法保留下來,否則將數(shù)據(jù)丟棄。通過分析目標(biāo)字符串,預(yù)先計算出每個位置發(fā)生不匹配時所需GOTO的下一個比較位置,整理出來一個next數(shù)組。
由于本文所研究的軟件缺陷檢測框架,其應(yīng)用范圍不僅針對于軟件開發(fā)人員,還針對于普通用戶以及一般的網(wǎng)絡(luò)管理員的日常監(jiān)管和使用,所以在該層中,需要對過濾層過濾后的數(shù)據(jù)進行處理封裝歸類,使之可以更加直觀的呈現(xiàn)在用戶的面前。需要使該框架的應(yīng)用更具有普適性,用戶不需要去閱讀大量的傳統(tǒng)Web日志文件,而是直接對于經(jīng)過過濾后的被監(jiān)控方法到底因何種操作,發(fā)生了什么結(jié)果,給予檢測顯示結(jié)果。對于軟件運行中出現(xiàn)的軟件缺陷進行合理分類,可根據(jù)軟件缺陷的級別將其分為嚴(yán)重,中等,低3個級別,便于開發(fā)人員按照優(yōu)先級和嚴(yán)重程度進行修改和調(diào)試。該邏輯表現(xiàn)層的配置主要需要配置兩點內(nèi)容,其中包括軟件缺陷的直觀顯示和軟件缺陷的分級定義。
1)針對需要進行缺陷檢測的Web系統(tǒng),定義一個配置文件,記錄下其每一個方法對應(yīng)的描述以及其設(shè)計操作參數(shù)。在獲得數(shù)據(jù)過濾層的數(shù)據(jù)后,取得監(jiān)控到的方法,在該層中與其描述相匹配。根據(jù)匹配后的結(jié)果對原始數(shù)據(jù)進行轉(zhuǎn)譯,使得最后呈現(xiàn)出的缺陷結(jié)果可以更為直觀。
2)依據(jù)具體被監(jiān)控方法按照表1進行分類,為所有監(jiān)控的方法添加所屬分類,使整個軟件缺陷檢測框架的顯示結(jié)果一目了然,便于程序開發(fā)人員針對問題具體出現(xiàn)的優(yōu)先級進行修改調(diào)試。其將缺陷檢測日志存入數(shù)據(jù)庫中。
表1 缺陷類別定義表
該實例是基于為某研究所開發(fā)的一個項目信息管理平臺的安全子系統(tǒng)。由于該系統(tǒng)的特殊背景,使其存在組角色和根角色,在業(yè)務(wù)和管理上可能有所不同,一個用戶可能對應(yīng)多個角色。由于系統(tǒng)的復(fù)雜度高,業(yè)務(wù)邏輯強,所以程序員在編碼的過程中可能殘留有影響軟件正常使用的多角色的訪問控制不當(dāng),程序邏輯錯誤等軟件缺陷[14],需要監(jiān)控用戶的使用行為,記錄下他們的操作行為,需要記錄{時間、空間、主體、客體/對象、行為、結(jié)果}。考慮到軟件日常使用過程中可能遇到的幾個主要缺陷問題,對于可能出現(xiàn)軟件缺陷的模塊進行了測試。為了更加貼近真實環(huán)境,所以在項目中有意識的預(yù)留了幾個不同級別的有代表性的軟件缺陷[15],用以測試該軟件缺陷檢測框架的可用性。
通過刪除項目用例對于軟件中存在的參數(shù)格式的軟件缺陷進行監(jiān)控,此設(shè)計用例的前提條件是,在按照項目標(biāo)號刪除項目的方法中,應(yīng)該使用字符串作為輸入?yún)?shù)而軟件實現(xiàn)時采用的整型作為參數(shù)輸入的情況。該用例的設(shè)計旨在測試該軟件缺陷檢測[16]框架對于B類缺陷,即參數(shù)輸入控制有誤上是否能夠?qū)崿F(xiàn)其預(yù)期的檢測功能,具體的測試用例設(shè)計如表2。
表2 刪除項目用例
通過運行測試用例的結(jié)果可以看出,本文提出的基于AOP的軟件缺陷檢測框架對于系統(tǒng)邏輯混亂,從而造成的權(quán)限控制異常,可以實現(xiàn)缺陷檢測,對于未授予權(quán)限的用戶越權(quán)操作漏洞能夠有效的監(jiān)控。程序本身存在易造成程序崩潰的軟件缺陷,可以進行監(jiān)控,并且進行提示。對于上面嚴(yán)重的軟件缺陷,該框架在檢測的過程中能達到預(yù)期效果。
另外,對于軟件缺陷嚴(yán)重程度僅次于A的B、C類軟件缺陷,該軟件缺陷檢測框架也能夠判斷出其是否符合具體預(yù)期效果,從而在程序運行的過程中,對于由于開發(fā)中疏忽所產(chǎn)生的B、C類缺陷進行相應(yīng)的檢測和記錄。
圖4 測試用例結(jié)果
Web應(yīng)用隨互聯(lián)網(wǎng)得到了快速發(fā)展,隨著市場和用戶需求越來越多,其結(jié)構(gòu)和功能變得愈加復(fù)雜,如何保證Web產(chǎn)品的質(zhì)量成為一個重要的課題。本文設(shè)計提出了一種基于AOP的軟件缺陷檢測框架,提出了一種針對Web軟件缺陷的測試方案。該方案基于AOP軟件缺陷檢測框架[17],通過在真實的使用環(huán)境下對于用戶操作的監(jiān)控,實現(xiàn)各種復(fù)雜的測試任務(wù)。本文所設(shè)計的數(shù)據(jù)過濾層,對于數(shù)據(jù)的過濾主要采用布隆過濾器,這一點節(jié)省了空間,提高了程序運行效率,但是在數(shù)據(jù)的規(guī)則匹配中,仍然采用傳統(tǒng)的字符串匹配的算法。在以后的工作中,爭取對于這一方面再進行優(yōu)化,運用更為合理的數(shù)據(jù)結(jié)構(gòu)和算法減少其時間和空間消耗。
[1]杜珂.軟件缺陷管理及缺陷跟蹤系統(tǒng)研究[D].西安:西安電子科技大學(xué),2006.
[2]王衛(wèi)蔚.以WEB為基礎(chǔ)探討系統(tǒng)防御框架的構(gòu)建[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(10):79-79.
[3]張逸.AOP技術(shù)研究及其在.Net中的實現(xiàn)[D].成都:四川大學(xué),2005.
[4]Introducing Spring AOP[C]//Pro Spring 2.5.Apress,2008:147-197.
[5]Liang X,Xue B,Huang M,et al.Application of join points management mechanism in spring in AOP[C]//International Conference on Computer Science and Network Technology.IEEE,2014.
[6]溫沁潤,王英杰,劉秀海.基于SpringAOP和AspectJ的工作流實現(xiàn)[J].統(tǒng)計與管理,2013(2):169.
[7]林恒建.Spring基于XML配置文件的AOP[J].福建電腦,2012,28(11):160-161.
[8]Lu J,Yang T,Wang Y,et al.One-hashing bloom filter[C]//IEEE,International Symposium on Quality of Service.IEEE,2015.
[9]黃濤.布隆過濾器在網(wǎng)頁去重中的研究與應(yīng)用[D].大連:大連海事大學(xué),2013.
[10]王鵬超,杜慧敏,曹廣界,等.基于布隆過濾器的精確匹配算法設(shè)計與實現(xiàn)[J].計算機科學(xué),2015,42(S1):429-434.
[11]魯宏偉,魏凱,孔華鋒.一種改進的KMP高效模式匹配算法[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2006,34(10):41-43.
[12]湯亞玲,安徽.KMP算法中next數(shù)組的計算方法研究[J].計算機技術(shù)與發(fā)展,2009,19(6):98-101.
[13]李莉,江育娥,林劼,等.基于KMP算法的改進算法KMPP[J].計算機工程與應(yīng)用,2016(8):33-37.
[14]李沖.基于WEB的多角色協(xié)同工作的軟件配置項管理系統(tǒng)[D].南京:南京理工大學(xué)圖書館,2012.
[15]Jiang Y,Member,Li M,et al.Software defect detection with ROCUS[J].Journal of Computer Science&Technology,2011,26(2):328-342.
[16]張勇,管聲啟.基于小波提升分解的帶鋼表面缺陷檢測[J].西安工程大學(xué)學(xué)報,2013,27(4):483-487.
[17]周戀玲,張靜.PCB板缺陷檢測中圖像配準(zhǔn)技術(shù)研究[J].電子設(shè)計工程,2016,24(3):166-168.
Design and implementation of software defects monitoring framework based on AOP
BIAN Wei-cheng
(Jiangsu Information Center,Nanjing 210013,China)
As the expanding of software size,software quality becomes the focus of software companies.How to reduce software defects and improve software reliability is the eternal theme that all software developers to pursue.This paper designs and proposes a new framework for software defects based on AOP.It consists of the method of monitoring layer,data filtering and logical presentation layer.It transfers data with bottom-up methods.It can achieve real-time monitoring,custom monitoring rules and displaying different types of defects in accordance with the defect level.At last,integrating it with actual program,the design of test case,test result indicates that the experiments proves the feasibility of the framework.
software defects; AOP; software quality; monitoring framework
TN0
A
1674-6236(2017)16-0027-05
2016-06-17稿件編號:201606117
邊偉成(1963—),男,浙江諸暨人,高級工程師。研究方向:電子政務(wù)網(wǎng)絡(luò)安全、網(wǎng)站、數(shù)據(jù)中心及大數(shù)據(jù)、機房環(huán)境等。