论文部分内容阅读
现代软件开发都要把整个系统按功能分解为小的单元,然后开发这些小单元,这些小的单元隐藏内部实现,对外提供接口,最后组合这些单元为整个系统,实现整个系统的功能.但是系统中有的方面是横切整个系统的非功能关注点,无法很好地封装在单个模块中。这些方面分散在整个系统中,并且与系统的功能代码纠缠在一起,这样降低了模块的可追踪性、模块的可重用性、系统的可维护性,所以需要分离并模块化这些非功能关注点。 面向方面编程是在现有的面向对象编程的基础之上,通过引入一个“方面”(相对于核心类而言)概念而产生的。它在实现上分离和模块化系统的横切关注点。先分离出方面模块,随后再织入到核心类中。面向方面的软件开发方法使横切于整个系统中的关注点的实现更具有模块性,容易实现系统的演化。系统功能构件设计时不需要考虑散杂在对象中的关注点,这样提高了模块的可追踪性、模块的可重用性、系统的可维护性。面向方面建模在软件开发的各个阶段用一致的方法来详述、可视化、构造和文档化方面相关产品,这样在整个软件开发过程可以使用面向方面技术。 数字图书馆是一个十分复杂庞大的系统,有很多非功能需求,且这些非功能需求往往横切整个系统,如日志、性能问题、安全、上下文相关错误处理、Qos监测等等。传统的系统分析设计的方法难以保证开发的效率和质量。这就要引入面向方面的开发方法,以设计更为合理的系统,加速开发进程,改进软件的质量,方便地集成已有的数字图书馆信息资源,减轻数字图书馆开发的复杂性。另外使用AOP的方法组建系统也利于满足数字图书馆的日益增长的扩展需求。 本文介绍了面向方面编程的思想,并详细分析了AspectJ。比较完整的介绍了面向方面建模领域的研究。阐述了数字图书馆系统中的主要的横切关注点。提出了一个新的扩展UML进行面向方面建模的方法,它以合适的语义表达了AspectJ的元素和织入机制。在这个方法中,方面继承自类元,并把连接点和切入点同样对待,而且由于切入点使方面连接到类,因此把它设计为用构造型