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

本文主要是介绍《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-02-面向对象软件架构演化过程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 对象演化
    • 1.1 添加一个新对象(AO)
    • 1.2 删除一个对象(DO)
  • 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 消息演化的分类
  • 3. 复合片段演化
    • 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)

本章以对象软件架构为例,结合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)

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

在这里插入图片描述

这篇关于《系统架构设计师教程(第2版)》第10章-软件架构的演化和维护-02-面向对象软件架构演化过程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934479

相关文章

Windows系统宽带限制如何解除?

《Windows系统宽带限制如何解除?》有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文就跟大家一起来看看Windows系统解除网络限制的操作方法吧... 有不少用户反映电脑网速慢得情况,可能是宽带速度被限制的原因,只需解除限制即可,具体该如何操作呢?本文

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设

电脑找不到mfc90u.dll文件怎么办? 系统报错mfc90u.dll丢失修复的5种方案

《电脑找不到mfc90u.dll文件怎么办?系统报错mfc90u.dll丢失修复的5种方案》在我们日常使用电脑的过程中,可能会遇到一些软件或系统错误,其中之一就是mfc90u.dll丢失,那么,mf... 在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例