论文部分内容阅读
一个复杂的软件系统可以看作是诸多关注点的集合,因此关注点分离是软件工程领域中极为重要的原则。人们先后提出了结构化的开发方法和面向对象的开发方法以在软件开发过程中更好的实现关注点分离,促进了软件开发技术的不断进步。然而,这些传统方法仍难以实现如安全性、日志等称之为“横切关注点”的分离。 面向方面软件开发(Aspect-Oriented Software Development:AOSD)方法从更高的抽象层次上对软件系统进行规约,根据系统的特定行为进行程序模块的划分,实现了横切关注点的模块化。该方法以其能有效地处理关注间的横断现象的特有功能,较好地解决了用传统的方法设计和实现软件的过程中存在的关注点分离困难、代码交织、可跟踪性差、重用困难,软件难以维护等问题,实现了各构件或模块的弱耦合性,使软件开发过程的复杂度也随之下降。在应用方面,由于当今的软件正朝着以正面功能为核心向兼顾侧面约束的方向发展,AOSD方法必将得到更广泛的应用。 采用面向方面的软件开发方法处理分布式系统中常见的横切关注点如日志记录、用户身份验证、事务的处理、持久化、性能的优化、资源池,数据库连接池的管理等,可以在很大程度上降低软件开发的复杂度,同时有效的提高代码的可读性、可复用性,从总体上提高软件的质量和可维护性。 本文分析了面向对象软件开发方法对系统级关注点处理的缺陷,讨论了面向方面软件开发方法及其在复杂系统开发中的优越性,对当前AspectJ,Jboss—AOP等各种AOP技术的语言机理进行了深入的分析、比较,并基于Java动态代理实现一个AOP模型。基于统一建模语言UML的扩展机制,对AOSD建模(AOM)进行了研究,并利用一个分布式系统的AOM进行了实际应用。同时,针对分布式多层企业应用系统横切关注点的广泛存在的特点,将面向方面软件开发方法和相关技术引入到分布式系统的开发,给出了一个应用的过程实例并进行了分析,提出了一种面向方面软件开发方法的过程模型。