论文部分内容阅读
无论采用哪一种软件开发流程,集成都是必不可少的一个环节。随着敏捷开发思想逐渐取代传统开发流程,持续集成(Continuous Integration,CI)取代了传统的最终集成。敏捷开发思想提倡高频率地进行集成动作,在代码更新后第一时间发现潜在的BUG,并予以修复。由于敏捷开发思想逐步被大部分软件组织所采纳,持续集成系统已经成为大多数软件项目不可缺少的一部分。然而,虽然市场上有丰富的持续集成系统产品可供选择,但就软件组织而言,一个成熟的持续集成系统往往不适合直接使用于项目之中,这是因为特定的软件组织往往都对项目流程有着特定的功能需求,而持续集成系统正处于整个项目流程的核心位置,所以这些特定组织的功能需求需要依靠持续集成系统来实现。具统计,80%以上的中大型软件组织都需要在使用前对成熟的持续集成系统进行扩展。软件组织对持续集成系统的扩展需求有一定的特殊性,不同于持续集成系统本身所覆盖的核心业务功能,这些扩展所附加的功能一般都属于横切功能,常见的包括日志记录、动作计时、特殊异常捕获、数据缓存等。采用一般的面向对象思想对持续集成系统进行扩展的话,容易造成核心业务模块和横切功能模块过于耦合,横切功能模块共享性差的问题。本文的研究内容是采用面向方面编程(Aspect-Oriented Programning,AOP)的思想对持续集成系统进行扩展的研究与实现。AOP的基本思想是分离系统的核心功能和横切功能,这样可以有效地降低两者之间的耦合度,这一点对于CI系统的扩展来说特别适用。本文首先介绍了AOP思想的本质和其实现,重点介绍了AOP在.NET平台上的实现;然后研究了使用AOP来扩展持续集成系统的方法,包括如何定位横切功能、连接点和通知类型的设计、如何控制横切面的粒度以及扩展持续集成系统时需要遵守的原则,最后针对集成扩展中常用的集成计时、集成触发捕获和非预期异常捕获三个功能在经典的CI系统:CrujseControl.NET进行扩展,以验证方法的有效性。本文提出的扩展方法以及其实现已经在惠普公司的ISEE、UPS项目中得以应用,AOP的使用使得横切功能和核心功能彻底解耦,而方面模块在项目之间又能较好地共享。