AOP在大规模软件开发项目应用的尝试与思考[5]
其次,面向方面的 软件工程 是无法回避的重要问题。 通过上面的问题分析,相信大家都已经认识到AOP对现有软件过程各个阶段的冲击,因此有必要去规范适用于AOP的新的软件开发过程。首先,面向方面的开发必须遵循迭代的模式。但现有的软件工程方法都不足以让我
其次,面向方面的 软件工程是无法回避的重要问题。
通过上面的问题分析,相信大家都已经认识到AOP对现有软件过程各个阶段的冲击,因此有必要去规范适用于AOP的新的软件
开发过程。首先,面向方面的
开发必须遵循迭代的模式。但现有的软件工程方法都不足以让我们有足够的信心在当方面多到一定的程度时,软件的开发仍然是可控的。为什么面对以前的OO,基于组件的方式,甚至更新的
SOA的开发,我们都不会如此的不安?主要是因为在这些模式下,我们都能够比较简单的看到完整产品的雏形,而方面一旦多到某种程度,软件的整体性就不能直观的被感知到。因此,面向方面对开发流程的冲击是不可避免的。特别是叠代的开发方式,如何对每个开发循环有效控制也是很有学问的。
最后,面向方面的开发工具是大规模应用AOP的技术保障。
现有的开发工具都不能保证面向方面的软件开发的效率与完整性。我们需要一种能够更好的集成方面开发的工具。AJDT能够提供一些帮助,但是还远远不够。一个理想的AOP开发工具应该支持:
1) 软件产品的完整视图,能够以可视并且形象的方式组合横切关注点和核心关注点
2) 能将AOP技术集成到系统的分析设计阶段
3) 基于方面组合的
测试与De
bug工具,能够灵活的根据不同的关注点组合进行
测试和De
bug 4) 更加灵活和方便的关注点定义方式,对大多数
Java开发者屏蔽复杂的Aspect语法。
总结:本文通过我们在大规模项目中应用AOP的实际经验,总结了碰到的问题和取得的进展。通过我们的实践与分析,我们认为在AOP有较大发展之前,以现在的状态,AOP更适合在小规模软件开发项目中应用。而AOP的更大规模应用不仅需要代码级AOP强有力的支持,更依赖于面向方面的分析设计技术与相应软件工程领域的进展。
最后,在看到了问题之余,我们也看到了AOP技术仍然处于一个不断发展的阶段。关于AOP的文章不断涌现,AOP工具的功能在不断加强,而开发人员对AOP的接受程度也在逐步提高。乐观的看,也许在不久的将来,AOP就能获得理论和实践上的长足进步,从而解决本文中提到的问题。让我们拭目以待。
参考
资料:
AspectJ是目前使用最广泛也是功能最强大的AOP代码级别的实现。我们可以从
http://www.eclipse.org/aspectj 获得它。
AJDT是基于Eclipse的AspectJ的集成开发环境,它包含了最新版本的AspectJ。可以从
http://www.eclipse.org/ajdt 获得它。
http://aosd.net/ 上有很多AOP相关的资料和论文。另外,您也可以通过这个网站 Developerworks上的
AOP@Work系列能够帮助我们深入了解AOP的现状
CME是一个有趣的工具,它对AOP在整个软件工程生命周期中的运用提供了支持。特别有趣的是它能够帮助开发人员发现和提取Crosscutting Concern。可以从
http://www.eclipse.org/cme获得它。
原文转自:http://www.ltesting.net