论文部分内容阅读
侧面分离系统功能性关注点与核心关注点,简化了软件维护,提高了软件复用。动态侧面能动态的将侧面代码编织到应用程序,使得应用程序无需重启即可改变行为,提高了应用程序的灵活性。由于C语言的众多底层特性,使得现有的动态侧面工具缺乏对C应用程序的支持。现有的动态侧面工具没有考虑到应用程序在并发系统中的特点,使得动态侧面的支持不能应用到并发操作系统中,而并发操作系统是当前操作系统的主流。随着软件可视化的需求,要求应用程序能够及时采用可视化的方法反映应用程序当前的行为,因此简单的侧面代码已经不能满足软件可视化的需求,而当前的动态侧面支持工具没有考虑支持复杂的侧面代码。
本文提出应用程序动态侧面支持框架,并在实际系统中实现了该框架。该框架包括侧面代码预处理器、侧面代码共享库、侧面代码加载器和增加的内核服务。侧面代码预处理器扩展了侧面代码语法,将侧面代码转换为等价的可编译代码;编译器将可编译代码编译为侧面代码共享库,侧面代码共享库中除了侧面代码外,还包括应用程序动态侧面编排器;侧面代码加载器将共享库加载至进程地址空间,并通过修改进程环境,使得进程调度时首先执行侧面代码编排。内核服务提供了传统操作系统中不能提供的进程间互操作功能。整个框架提供解决了C程序动态侧面支持、并发系统下的动态侧面支持以及复杂侧面代码支持这三个问题,提供了具有灵活性、可复用、代价小的应用程序动态侧面的解决方案。
本文首先介绍侧面程序设计,分析已有的侧面程序设计工具和动态侧面工具及其实现技术,确定技术路线。然后提出整个框架的设计与实现方案,并论述实现过程中用到的关键技术。最后对系统进行测试,并对进一步研究提出展望。