Posted on 2006-02-22 20:28
canonical 阅读(896)
评论(0) 编辑 收藏 所属分类:
设计理论
AOSD(Aspect-Oriented Software Development)可以看作是AOP技术思想在设计领域的一种投射. 采用Aspect的观念之后, 我们在系统分析时应用如下的分解策略
base + extensionA + extensionB +... 而不仅仅是 partA + partB + ...
这种分解的基本理由在于base/extension的依赖关系与extension之间的依赖关系并不相同. 在理想情况下,
extension之间是完全正交的, 而它们通过base可以构成一个整体, 这是一种典型的star schema.
但是在实际的软件构造过程中, 软件各个元素之间的交互方式要复杂的多:
1. extension之间可能存在着相互作用, 最简单的一种情况是extension执行时的序关系(order).
2. 一个结构上的extension可能分散到多个component上, 如何精确而有效的控制定位是一个非常困难的问题.
就目前的AOP技术而言,
对于extension的控制其实是非常乏力的(但这并不意味着AOP必然放弃对extension的控制), 我们尚需要积累更多的经验.
在实做中, 更加稳健的方法往往是应用aspect的思想而采用传统的实现方式.
AOSD在理论上存在一些价值, 例如它为use case的extension符号找到了技术对应, 因而使得这个概念变得更加明晰, 而在传统中,
对于use case的extension的解释一直是模糊而混乱的. 目前在真正的开发中, AOSD所描绘的全程建模仍然只是一个遥远的梦想.