论文部分内容阅读
随着软件技术的不断发展,软件的应用已涉及到方方面面、各行各业,软件的规模与复杂性也不断增大。普适计算、自主计算等新型计算模式的出现,使软件面临的挑战也越来越多:软件的管理和维护越来越难,因特网环境下软件复杂度的增长和用户对软件健壮性和自主性的要求逐步增加、软件的静态设计与动态行为的差异越来越大等。我们需要一种软件,它可以在不需要人或者人为较少的干预下,能够根据运行情况改变自己的行为。这些都使得自适应软件的研究成为学术界和产业界关注的热点。
针对上述问题,人们提出了多种新的解决机制,设计了自适应性的软件。在软件的运行过程中,时常需要改变软件的行为以适应其环境的变化,而且这种行为的改变往往要求是动态的。自适应软件要求系统能够动态地适应环境的变化,试图使软件自身能够在运行过程中,根据系统运行的环境信息的变化,遵照预先设定好的策略,在必要的时候对自身进行自动调整,从而更好的为用户提供服务。
本文结合了面向方面的程序设计(Aspect-oriented programming,AOP)[5]与反射机制两种方法的优点构造具自适应的软件。面向方面的程序设计可以很好的分离关注点使软件更好的模块化。使用反射机制,可以使你的程序在运行时通过自省(introspection)了解自己的状态,自己调节(intercession)自己,即动态的执行新的行为的能力。使用AspectJ和Java的反射机制使得软件在运行时可以根据运行情况动态的改变行为。本文的主要工作包括:
1.从软件工程的角度来分析如何构造自适应的软件系统。介绍了支持软件自适应的方法主要有参数调整与组合调整两种方法,并对组合调整作了详细说明。
2.仔细分析了AOP与反射各自的优点,指出了AOP能够很好的分离关注点并具有好的动态性,反射机制能够在系统运行期间控制它的程序结构且改变它的行为。
3.采用一个实例介绍了如何结合AOP与反射机制来实现程序关注点的分离与动态的改变软件的行为,籍以说明本文提出的方法具有实用性与可行性。
本文的工作是我们承担的国家自然科学基金项目和国家自然科学基金重大研究计划项目研究工作的一部分,所设计的模型和方法将应用于该系统的设计中。