假设软件架构对应到具体的架构风格或模式,我们就可以讨论演化的各种具体操作了。下面以面向对象软件架构为例,结合UML顺序图来进一步讨论各种演化操作。
在顺序图中,组件的实体为对象。组件本身包含了众多的属性,如接口、类型、语义等,这些属性的演化是对象自身的演化,对于描述对象之间的交五过程并无影响。因此,会对架构设计的动态行为产生影响的演化只包括AddObject(AO)和DeleteObject(DO)两种,如图10-1所示。
AO表示在顺序图中添加一个新的对象。这种演化一般是在系统需要添加新的对象来实现某种新的功能,或需要将现有对象的某个功能独立以增加架构灵活性的时候发生。
DO删除顺序图中现有的一个对象。这种演化一般在系统需要移除某个现有的功能,或需要合并某些对象及其功能来降低架构的复杂度的时候发生。对于发生演化的对象,如果其没有与现有的任何一个对象产生交五关系,则可以认为其对于系统而言没有任何意义,因为这种演化不会对当前的架构正确性或时态属性产生影响。因此,在发生对象演化时,一般会伴随着相应的消息演化,新增相应的消息以完成交互,从而对架构的正确性或时态属性产生影响。
领取专属 10元无门槛券
私享最新 技术干货