1. 对象演化
- 对架构设计的动态行为产生影响的演化:只包括
Add Object
(AO) 和Delete Object
(DO) 两种
1.1 添加一个新对象(AO)
- Add Object
- 添加新对象的情况:
- 系统需要添加新的对象来实现某种新的功能
- 需要将现有对象的某个功能独立以增加架构灵活性
1.2 删除一个对象(DO)
- Delete Object
- 删除对象的情况:
- 系统需要移除某个现有的功能
- 需要合并某些对象及其功能来降低架构的复杂度
2. 消息演化
2.1 消息
- 消息是顺序图中的核心元素
- 影响架构的元素:名称、源对象、目标对象、时序等信息
- 不影响架构的元素:消息的自身属性(如:接口、类型等)
2.2 消息演化的操作
2.2.1 Add Message(AM)
- 增添一条新的消息
- 产生在对象之间需要增加新的交互行为的时候
2.2.2 Delete Message (DM)
- 删除当前的一条消息
- 产生在需要移除某个交互行为的时候,
2.2.3 Swap Message Order(SMO)
- 交换两条消息的时间顺序
- 发生在需要改变两个交互行为之间关系的时候
2.2.4 Overturn Message(OM)
- 反转消息的发送对象与接收对象
- 发生在需要修改某个交互行为本身的时候
2.2.5 Change Message Module(CMM)
- 改变消息的发送或接收对象
- 发生在需要修改某个交互行为本身的时候
2.3 消息演化的分类
消息与约束直接相关,消息的演化会直接影响到对象之间的交互行为,但不一定会违背约束
-
演化与当前约束无关
- 如:AddMessage在大多数情况下与当前的约束无关
- 这些演化不会对架构设计的正确性或时态属性产生影响
-
演化与约束直接关联,但不会违背约束
- 如, Change Message Module 后的消息不会违背“在某处产生”的约束
- 这些演化同样不会对架构设计的正确性或时态属性产生影响
-
演化与约束直接关联,会违背约束
- 如,Delete Message 删除的某条消息是某条约束的内容之一
- 这种演化后的架构违背了约束,其是不正确的演化
3. 复合片段演化
- 复合片段:是一组对象的集合,它们协同工作以实现某个功能
- 复合片段本身的信息包括:类型、成立条件、内部执行序列
- 其中内部执行序列的演化等价于消息序列演化
- 会产生分支的复合片段: cond(条件)ref(引用)、loop(循环)、break(跳出)、alt(转化)、opt(选择)、par(并行)
3.2 复核片段演化操作
3.2.1 Add Fragment(AF)
- 在某几条消息上新增复合片段
- 发生在需要增添新的控制流时
3.2.2 Delete Fragment(DF)
- 删除某个现有的复合片段
- 发生在需要移除当前某段控制流时
3.2.3 Fragment Type Change(FTC)
- 改变复合片段的类型
- 发生在需要改变某段控制流时
3.2.4 Fragment Condition Change(FCC)
- 改变复合片段内部执行的条件
- 发生在改变当前控制流的执行条件时
4. 约束演化
- 来源:系统属性的改变
- 约束演化:
- 一般伴随着消息变化
- 不存在可视化的描述,直接对约束信息进行添加和删除
- 修改约束可视为删除了原有约束并添加了新的约束
4.1 Add Constraint(AC)
- 直接添加新的约束信息
- 对架构设计产生直接的影响
- 需要判断当前设计是否满足新添加的约束要求
4.2 Delete Constraint(DC)
- 直接移除某条约束信息
- 发生在去除某些不必要条件的时候
- 一般而言架构设计均会满足演化后的约束