消息是顺序图中的核心元素,包含了名称、源对象、目标对象、时序等信息。这些信息与其他对象或消息相关联,产生的变化会直接影响到对象之间的交互,从而对架构的正确性或时态属性产生影响。另外,消息自身的属性,如接口、类型等,产生的变化不会影响到对象之间交互的过程,则不考虑其发生的演化类型。因此,我们将消息演化分为AddMessage(AM)、DeleteMessage(DM)、SwapMessageOrder(SMO)、OverturnMessage(OM)、ChangeMessageModule(CMM)5种,如图10-2所示,其中状态里的是行为信息,即对象发出的消息;边上的是转移信息,即对象接收到的消息。由于消息是由一个对象发送给另一个对象,因此每次消息产生演化时均会涉及两个对象的自动机的变化,而objl 和 obj2分别为产生变化的两个对象。为了表示消息的发送和接收的对应关系,这里用m?、m2来表示消息的一一对应关系。
A M增添一条新的消息,产生在对象之间需要增加新的交互行为的时候。DM删除当前的条消息,产生在需要移除某个交互行为的时候,是AM的逆向演化。SMO交换两条消息的时间顺序,发生在需要改变两个交互行为之间关系的时候。OM反转消息的发送对象与接收对象,发生在需要修改某个交互行为本身的时候。CMM改变消息的发送或接收对象,发生在需要修改某个交五行为本身的时候。
消息与约束直接相关,消息的演化会直接影响到对象之间的交互行为,但不一定会违背约束。我们可以将这种演化分为3类。
第1类演化与当前约束无关,如AddMessage在大多数情况下与当前的约束无关,这些演化不会对架构设计的正确性或时态属性产生影响。
第2类演化与约束直接关联但不会违背约束,如ChangeMessageModule后的消息不会违背“在某处产生”的约束,这些演化同样不会对架构设计的正确性或时态属性产生影响。
第3类演化与约束直接关联并会违背约束,如DeleteMessage删除的某条消息是某条约束的内容之一,这种演化后的架构违背了约束,其是不正确的演化。
消息是顺序图的核心内容,消息演化是顺序图演化的核心。对象的演化会伴随着消息演化,否则没有意义;复合片段和约束均基于消息存在,二者的演化也直接受到消息演化的影响。因此,对其他演化进行分析研究的同时,也要对相关联的消息演化进行分析。
领取专属 10元无门槛券
私享最新 技术干货