论文部分内容阅读
随着互联网的蓬勃兴起,企业应用从传统的客户机/服务器模式开始面向互联网,面向分布式应用。作为企业级应用程序解决方案之一,J2EE被认为是当今可用于企业软件开发的最佳平台。然而,这一承诺并未完全实现。由于J2EE和企业业务的复杂性和分布性,经常可以看到编写完成的企业应用程序设计复杂,结构臃肿庞大,运行起来耗费大量系统资源且系统响应缓慢。为了寻找系统中存在的性能瓶颈和冗余代码,人们通过各种性能测试工具对系统进行各种压力测试和回归测试。然而这些测试工具和测试本身往往只能从系统的外围来对瓶颈进行检测和识别,为了找出有问题的代码,程序员常常只能手动向应用程序中添加代码来判断系统的瓶颈点,然而由于J2EE系统常见的庞大性和复杂性,这种做法无异于杯水车薪。问题不在于缺少基于J2EE平台的性能测试工具,类似于JMeter、JProbe这样的工具可以从外部模拟用户调用,统计系统的响应和资源的占用。问题出现在如何具体定位有性能问题的程序代码。传统的面向对象开发方法很难有效的解决这一问题,人们往往只能以手动和原始的方法来猜测、判断系统的性能问题所在。这是由于系统监视是经典的横切关注点问题,因此任何非模块化的实现都会让它混乱。
本文的目标就是通过设计和实现一个基于AOP技术的性能测试框架——SimpieProfiler,来解决这个脱节问题。作为近年来新兴的技术,面向方面是当前程序设计技术发展的一个新方向,目的就是为了解决传统的面向对象无法解决的横切关注点问题。运用AOP技术,可以将系统监视这一功能从具体的企业应用程序中抽取出来予以模块化,进而使得系统监视代码同业务代码的分离,乃至成为单独的应用软件从而增加了代码的清晰度,可适应性、可重用性。
本文共分六个部分。第一部分详细阐述了论文选题的目的和意义以及研究的主要内容。第二部分主要介绍面向方面编程技术。第三部分结合实际开发中的性能问题,提出了性能测试框架的设计功能和总体设计。第四部分是本文的重点,具体且详细的论述了SimpleProfiler测试框架的实现和关键技术问题的解决。第五部分主要通过将SimpleProfiler与当前业界的同类型软件进行横向比较来论述SimpleProfiler的优势和缺点。最后第六部分是整个全文的总结,论述了测试框架的系统特点和有待提高之处。
目前,传统的测试工具往往是基于系统外部调用和性能统计分析,它们适用进行压力负载测试或是回归测试。然而一旦发现性能问题,对如何精确定位系统的瓶颈点并无太大帮助。商业的性能采样工具又由于价格昂贵,可定制性低,测试时占用大量资源等问题,使得开发人员往往都是采用手工编写测试代码。SimpleProfiler作为不依赖于具体应用的性能监视器,在功能上具有很强的独特性和实用性。与传统的性能测试和性能采样工具相比,SimpleProfiler有以下特点:
运用AOP技术完成系统调用监测,相较原来的JVMTI/JVMPI方式更加灵活,软件更加轻便,程序也更容易部署。
通过AOP将性能测试功能从具体的应用抽取出来成为独立的AOP软件,目前此种软件还不多,具有较新的独特性。
AspectJ在pointcut的可配置性和独立性相较JBOSS AOP和AspectWerkz等AOP实现还有较大不足,利用Annotation和ASM字节码编织工具,成功的弥补了这一不足。软件具有较强的可定制性。
除了软件的实用性和功能,SimpleProfiler的开发本身即是对AOP应用程序开发技术的一次有益的探索和尝试。