《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-02-面向对象软件架构演化过程

本文详细探讨了在对象软件架构中,对象演化(包括添加和删除对象)、消息演化(如添加、删除和修改消息)以及复合片段演化(涉及添加、删除和改变条件)的操作。同时,文章还关注了约束演化,如何通过添加和删除约束影响架构设计的正确性和时态属性。
摘要由CSDN通过智能技术生成

本章以对象软件架构为例,结合UML 顺序图来进一步讨论各种演化操作

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)

  • 改变消息的发送或接收对象
  • 发生在需要修改某个交互行为本身的时候

下图说明:
状态里的行为(即,圈中的信息)是发出的消息,外边是接收的消息

在这里插入图片描述

讨论
b)图中,演化前,接收到的m1 不应该出现,疑似教材有错误

2.3 消息演化的分类

消息与约束直接相关,消息的演化会直接影响到对象之间的交互行为,但不一定会违背约束

  • 演化与当前约束无关

    • 如:AddMessage在大多数情况下与当前的约束无关
    • 这些演化不会对架构设计的正确性或时态属性产生影响
  • 演化与约束直接关联,但不会违背约束

    • 如, Change Message Module 后的消息不会违背“在某处产生”的约束
    • 这些演化同样不会对架构设计的正确性或时态属性产生影响
  • 演化与约束直接关联,会违背约束

    • 如,Delete Message 删除的某条消息是某条约束的内容之一
    • 这种演化后的架构违背了约束,其是不正确的演化

3. 复合片段演化

  • 复合片段:是一组对象的集合,它们协同工作以实现某个功能
  • 复合片段本身的信息包括:类型、成立条件、内部执行序列
    • 其中内部执行序列的演化等价于消息序列演化
  • 会产生分支的复合片段: cond(条件)ref(引用)、loop(循环)、break(跳出)、alt(转化)、opt(选择)、par(并行)

3.2 复核片段演化操作

3.2.1 Add Fragment(AF)

  • 在某几条消息上新增复合片段
  • 发生在需要增添新的控制流时

复合片段所产生的分支是不同类型的,例如ref会关联到另一个顺序图, par会产生并行消息,其余的则为分支过程。

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)

  • 直接移除某条约束信息
  • 发生在去除某些不必要条件的时候
    • 一般而言架构设计均会满足演化后的约束

在这里插入图片描述

  • 39
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玄德公笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值