基于AOP的软件缺陷监测框架的设计与实现
2018-01-08边伟成
边伟成
(江苏省信息中心 江苏 南京 210013)
基于AOP的软件缺陷监测框架的设计与实现
边伟成
(江苏省信息中心 江苏 南京 210013)
随着软件规模的不断扩大,软件质量越发成为软件开发企业关注的重点。关于如何减少软件缺陷,提高软件可靠性是所有软件开发者追求的永恒主题。本文基于AOP技术设计和提出了一种新的软件缺陷检测框架,其具体由方法监控层、数据过滤层和逻辑表现层组成,自底向上传递数据。该框架可实现软件方法的实时监控、自定义监控规则、对于缺陷按照严重等级进行分类显示等功能。最后通过与实际项目相整合,设计测试用例,测试结果表明本文提出的框架具有可行性。
软件缺陷;AOP;软件质量;监测框架
随着互联网技术的高速发展,Web类应用软件发展趋势迅猛。由于Web类应用软件产品更新频率高、测试周期短、使用范围广,在实际的Web软件开发过程中,往往或多或少的会存在软件缺陷[1-2],因此需要一套可靠的软件缺陷检测框架对开发过程中遗留的疏漏进行有效的监控。因此本文研究的主要目的就是针对Web应用提出一套具有易用性,可操作性,可维护性和可扩展性的软件缺陷检测框架。其可以实现在不破坏原有软件项目工程的基础上,嫁接到软件工程之上,使其具有缺陷检测的功能。
文中的主要贡献是基于AOP技术设计和提出了一种新的软件缺陷检测框架。该框架由监控层,数据过滤层和逻辑表现层组成。每个层次结构分工明确,自底向上传递数据,其相比于一般软件缺陷检测软件具有可操作,去冗余,可定制,结果易于理解等优势。在缺陷检测的过程中,web项目可能出现方法检测信息冗余,运用布隆算法对其进行了数据过滤的过程,其相比较于一般算法,节省了大量空间,去除了在缺陷检测过程中的冗余数据。最后针对一个实际应用的项目,运用本文设计的软件缺陷检测框架进行了整合,通过预留一定的软件缺陷,设计了几个测试用例对测试结果进行详细的分析,验证了该框架的实用性。
1 AOP技术介绍
1.1 AOP概述
AOP(Aspect-Oriented Programming)技术[3-4],即面向方面编程技术,是对于面向对象编程(OOP)技术的完善和弥补。AOP通过一种“横切”技术将对象内部解剖开来,从而将公共行为的多个类的重复代码封装到同一个模块之中得到一个可重用模块,叫做方面,即“Aspect”。所谓“方面”[5]就是将那些与系统核心业务无关但却被业务模块共同调用所封装起来的类,这样就可以大大减少代码冗余,使得各个模块之间的耦合度降低,实现对于系统可操作性和可维护性的提升。AOP主要应用于权限验证、日志管理、事务响应处理等。
1.2 AOP工具介绍
各种技术虽然都是实现AOP技术,并且都实现了AOP技术的各项技术指标,但不同的AOP工具在底层机制上却是大相径庭。本文主要采用的是Spring AOP 技术[6]。
Spring AOP技术是整个Spring框架当中的一部分,其也能够作为一个独立模块而存在。从本质上来讲,Spring AOP通过运用动态代理技术来实现了AOP。它的具体体现形式是利用IoC的机制,并且整合利用了AOP联盟中的通用AOP接口。在运用Spring AOP来实现AOP时,首先需要对于其spring的 xml配置文件添加配置pointcut,然后利用Spring中的Interceptor作为触发条件[7]。开发者可以自由定义切面类,Interceptor的实现类似于实现AOP的advice,开发人员在进行Interceptor的开发过程中,需要实现通用的AOP接口。
2 基于AOP的软件缺陷检测框架
与大多数软件框架不同,本文设计的基于AOP的软件缺陷检测框架可以在编码阶段之外将其添加到项目工程当中,在不影响原先设计逻辑的情况下,发现软件在运行过程中遇到的缺陷和异常。其具有监控方法、获取数据、数据过滤、缺陷分类、转译显示等功能。
2.1 总体架构设计
该软件缺陷检测框架主要针对B/S架构的Web软件所开发,可针对不同的软件缺陷进行检测和记录,其主要由方法监控层、数据过滤层和逻辑表现层三层结构构成,如图1所示。
图1 总体框架图
2.2 关键模块实现
2.2.1 方法监控层
方法监控层位于架构最底层,主要通过AOP技术获得执行的方法剖面。再对切点的前后进行操作,记录下方法的相关信息,其中主要包括方法名、执行参数、返回值、操作者属性和操作结果等,原理如图2所示。
图2 方法监控层原理图
在AOP编程中,对业务逻辑的各个部分进行隔离,监控每个方法所操作的主体和客体,即对于操作者、操作内容进行监控,获得执行方法时的相关参数。该部分运用到的AOP技术主要是基于Spring AOP所实现的。通过切面类定义获得整个Web应用程序执行方法的切面,并对于其中的方法名,操作对象,返回值等一系列要素进行检测提取,以便于数据过滤层对其监控到的方法的相关数据进行筛选操作。
2.2.2 数据过滤层
该层位于架构的中间层,主要作用是对从监控层获取的监控信息进行过滤,主要通过布隆算法[8-9]来实现数据过滤。另外需要构建一个规则库,对于监控层所提交过来的数据进行规则匹配,只有满足规则库中规则的方法,才能继续传递到逻辑表现层,进行表现输出。同时提供接口供开发人员自行定义规则来选择需要监控的方法,用以提高该软件缺陷检测框架的扩展性,具体过程如图3所示。
图3 数据过滤层原理图
1)实现数据去冗余功能
通过布隆算法去除冗余,相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数[10]。布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。
由于该软件缺陷检测框架是属于B/S的架构,所以在同一时刻可能有不同的用户对于同一方法进行访问,或者是同一用户由于操作失误使得项目工程多次执行同一个方法,从而造成监控数据产生大量冗余。运用布隆过滤器,对于以上的情况进行过滤。通过将相邻极短时间的多次同一用户对于同一方法的执行数据作为冗余数据,对其进行筛选过滤,只保留其中固定的一部分。
2)实现数据规则匹配功能
主要对于方法监控层传来的方法数据是否需要监控进行判定,通过与规则库中已经指定的规则进行匹配,得出对该方法数据是需要监控还是丢弃的判定。本文使用KMP算法[11-13]实现字符串匹配,通过读取存储在数据库中的规则,进行依次匹配,筛选出符合规则的方法保留下来,否则将数据丢弃。通过分析目标字符串,预先计算出每个位置发生不匹配时所需GOTO的下一个比较位置,整理出来一个next数组。
2.2.3 逻辑表现层
由于本文所研究的软件缺陷检测框架,其应用范围不仅针对于软件开发人员,还针对于普通用户以及一般的网络管理员的日常监管和使用,所以在该层中,需要对过滤层过滤后的数据进行处理封装归类,使之可以更加直观的呈现在用户的面前。需要使该框架的应用更具有普适性,用户不需要去阅读大量的传统Web日志文件,而是直接对于经过过滤后的被监控方法到底因何种操作,发生了什么结果,给予检测显示结果。对于软件运行中出现的软件缺陷进行合理分类,可根据软件缺陷的级别将其分为严重,中等,低3个级别,便于开发人员按照优先级和严重程度进行修改和调试。该逻辑表现层的配置主要需要配置两点内容,其中包括软件缺陷的直观显示和软件缺陷的分级定义。
1)针对需要进行缺陷检测的Web系统,定义一个配置文件,记录下其每一个方法对应的描述以及其设计操作参数。在获得数据过滤层的数据后,取得监控到的方法,在该层中与其描述相匹配。根据匹配后的结果对原始数据进行转译,使得最后呈现出的缺陷结果可以更为直观。
2)依据具体被监控方法按照表1进行分类,为所有监控的方法添加所属分类,使整个软件缺陷检测框架的显示结果一目了然,便于程序开发人员针对问题具体出现的优先级进行修改调试。其将缺陷检测日志存入数据库中。
表1 缺陷类别定义表
3 基于AOP的软件缺陷检测框架测试
3.1 测试用例设计
该实例是基于为某研究所开发的一个项目信息管理平台的安全子系统。由于该系统的特殊背景,使其存在组角色和根角色,在业务和管理上可能有所不同,一个用户可能对应多个角色。由于系统的复杂度高,业务逻辑强,所以程序员在编码的过程中可能残留有影响软件正常使用的多角色的访问控制不当,程序逻辑错误等软件缺陷[14],需要监控用户的使用行为,记录下他们的操作行为,需要记录{时间、空间、主体、客体/对象、行为、结果}。考虑到软件日常使用过程中可能遇到的几个主要缺陷问题,对于可能出现软件缺陷的模块进行了测试。为了更加贴近真实环境,所以在项目中有意识的预留了几个不同级别的有代表性的软件缺陷[15],用以测试该软件缺陷检测框架的可用性。
通过删除项目用例对于软件中存在的参数格式的软件缺陷进行监控,此设计用例的前提条件是,在按照项目标号删除项目的方法中,应该使用字符串作为输入参数而软件实现时采用的整型作为参数输入的情况。该用例的设计旨在测试该软件缺陷检测[16]框架对于B类缺陷,即参数输入控制有误上是否能够实现其预期的检测功能,具体的测试用例设计如表2。
表2 删除项目用例
3.2 测试用例结果分析
通过运行测试用例的结果可以看出,本文提出的基于AOP的软件缺陷检测框架对于系统逻辑混乱,从而造成的权限控制异常,可以实现缺陷检测,对于未授予权限的用户越权操作漏洞能够有效的监控。程序本身存在易造成程序崩溃的软件缺陷,可以进行监控,并且进行提示。对于上面严重的软件缺陷,该框架在检测的过程中能达到预期效果。
另外,对于软件缺陷严重程度仅次于A的B、C类软件缺陷,该软件缺陷检测框架也能够判断出其是否符合具体预期效果,从而在程序运行的过程中,对于由于开发中疏忽所产生的B、C类缺陷进行相应的检测和记录。
图4 测试用例结果
4 结束语
Web应用随互联网得到了快速发展,随着市场和用户需求越来越多,其结构和功能变得愈加复杂,如何保证Web产品的质量成为一个重要的课题。本文设计提出了一种基于AOP的软件缺陷检测框架,提出了一种针对Web软件缺陷的测试方案。该方案基于AOP软件缺陷检测框架[17],通过在真实的使用环境下对于用户操作的监控,实现各种复杂的测试任务。本文所设计的数据过滤层,对于数据的过滤主要采用布隆过滤器,这一点节省了空间,提高了程序运行效率,但是在数据的规则匹配中,仍然采用传统的字符串匹配的算法。在以后的工作中,争取对于这一方面再进行优化,运用更为合理的数据结构和算法减少其时间和空间消耗。
[1]杜珂.软件缺陷管理及缺陷跟踪系统研究[D].西安:西安电子科技大学,2006.
[2]王卫蔚.以WEB为基础探讨系统防御框架的构建[J].网络安全技术与应用,2015(10):79-79.
[3]张逸.AOP技术研究及其在.Net中的实现[D].成都:四川大学,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的工作流实现[J].统计与管理,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]黄涛.布隆过滤器在网页去重中的研究与应用[D].大连:大连海事大学,2013.
[10]王鹏超,杜慧敏,曹广界,等.基于布隆过滤器的精确匹配算法设计与实现[J].计算机科学,2015,42(S1):429-434.
[11]鲁宏伟,魏凯,孔华锋.一种改进的KMP高效模式匹配算法[J].华中科技大学学报:自然科学版,2006,34(10):41-43.
[12]汤亚玲,安徽.KMP算法中next数组的计算方法研究[J].计算机技术与发展,2009,19(6):98-101.
[13]李莉,江育娥,林劼,等.基于KMP算法的改进算法KMPP[J].计算机工程与应用,2016(8):33-37.
[14]李冲.基于WEB的多角色协同工作的软件配置项管理系统[D].南京:南京理工大学图书馆,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].西安工程大学学报,2013,27(4):483-487.
[17]周恋玲,张静.PCB板缺陷检测中图像配准技术研究[J].电子设计工程,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—),男,浙江诸暨人,高级工程师。研究方向:电子政务网络安全、网站、数据中心及大数据、机房环境等。