《系统架构设计师教程(第2版)》第7章-系统架构设计基础知识-02-基于架构的软件开发方法

文章目录

  • 1. 基于架构的软件设计(ABSD)
    • 1.1 概述
    • 1.2 ABSD方法的3个基础
  • 2. 概念与术语
    • 2.1 设计元素
    • 2.2 视角与视图
    • 2.3 用例和质量场景
  • 3. ABSD模型
  • 4. 体系结构需求
    • 4.1 需求获取
    • 4.2 标识构件
    • 4.3 架构需求评审
  • 5. 体系结构设计
    • 5.1 体系结构设计
    • 5.2 软件体系结构设计过程
  • 6. 体系结构文档化
  • 7. 体系结构复审
  • 8. 体系结构实现
  • 9. 体系结构的演化
    • 9.1 概述
    • 9.2 演化步骤

1. 基于架构的软件设计(ABSD)

ABSD方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,体系结构总是清晰的,这有助于降低体系结构设计的随意性。

1.1 概述

  • 概念:
    • Architecture-Based Software Design
    • 自顶向下,递归细化,直到产生软件构件和类
    • 驱动:由构成体系结构的商业、质量和功能需求的组合驱动
  • 设计活动的开始
    • 从项目总体功能框架明确开始
    • 因此与需求抽取和分析活动并行

1.2 ABSD方法的3个基础

  • 功能的分解

在功能分解中, ABSD方法使用已有的基于模块的内聚和耦合技术

  • 通过选择体系结构风格来实现质量和商业需求
  • 软件模板的使用

2. 概念与术语

2.1 设计元素

  • 最顶层:
    • 系统被分解为:
      • 概念子系统(若干)
      • 软件模板(一个或若干个)
  • 第2层:
    • 概念子系统被分解:
      • 概念构件
      • 附加软件模板

在这里插入图片描述

2.2 视角与视图

  • 要从不同的视角(Perspective) 来观察对架构的描述,如:
    • 展示功能组织的静态视角:判断质量特性
    • 展示并发行为的动态视角:判断系统行为特性
  • 作用:全方位考虑体系结构设计

2.3 用例和质量场景

  • 用例:
    • 系统为用户提供的一个能够产生结果的功能点
    • 作用:用来捕获功能需求
  • 质量场景:
    • 概念:为捕获质量需求所定义的场景
      • 变更场景:捕获变更
      • 性能场景:捕获性能
      • 可靠性场景:捕获可靠性
      • 交互性场景:捕获交互性
    • 预期的和非预期的场景
      • 质量场景必须包含预期场景和非预期场景
      • 预期场景:是指系统在正常操作条件下应该能够正确处理和执行的场景
      • 非预期场景:是指系统在异常或意外情况下的场景

        非预期场景可能不会真正实现,但它们在决定设计的边界条件时很有用

3. ABSD模型

  • 传统软件开发模型
    • 缺点:
      • 开发效率不高
      • 不能很好地支持软件重用
    • 软件体系结构的建立:位于需求分析之后,概要设计之前
  • ABSD模型,把整个基于体系结构的软件过程划分为6个子过程
    • 体系结构需求、设计、文档化、复审、实现和演化

在这里插入图片描述

4. 体系结构需求

  • 需求:是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望

  • 需求过程如下:

在这里插入图片描述

4.1 需求获取

  • 体系结构需求获取的3个来源:
    • 系统的质量目标
    • 统的商业目标
    • 系统开发人员的商业目标
  • 体系结构需求获取过程:定义开发人员必须实现的软件功能
    • 满足业务上的功能需求
    • 满足质量属性非功能需求

4.2 标识构件

  • 目的:为系统生成初始逻辑结构,包含大致的构件
  • 三个实现步骤 :
    1. 生成类图
    2. 对类进行分组
      • 作用:简化类图结构
      • 分组原则:
        • 与其他类隔离的类
        • 由概括关联的类:即,通过继承关系相关联的类
        • 由聚合或合成关联的类
    3. 把类打包成构件

4.3 架构需求评审

  • 评审小组
    • 组成:分析人员、客户、设计人员、测试人员
  • 审查的内容
    • 所获取的需求是否真实地反映了用户的要求
    • 类的分组是否合理
    • 构件合并是否合理等

5. 体系结构设计

5.1 体系结构设计

  • 是一个迭代过程
  • 可以使用已有系统的设计过程

5.2 软件体系结构设计过程

在这里插入图片描述

  1. 提出软件体系结构模型

    • 选择一个合适的体系结构风格
    • 产生:理想化的体系结构模型
  2. 把已标识的构件映射到软件体系结构中

    • 产生:一个中间结构
      • 它只包含明确适合结构体模型的构件
  3. 分析构件之间的相互作用

    为把所有已标识的构件集成到体系结构中做准备

  4. 产生软件体系结构

    • 对第2阶段中间结构精化
  5. 设计评审

    • 人员:系统开发的外部人员对体系结构进行评审。

6. 体系结构文档化

  • 为什么要文档化:
    体系结构是抽象,由一些概念上的构件组成,要让系统分析员和程序员去实现体系结构,必须将体系结构进行文档化。
  • 文档化的意义:
    • 是系统设计与开发人员的通信媒介
    • 是执行预先分析的基础,旨在验证、提炼和修改体系结构设计
  • 必须输出的文档:
    • 体系结构规格说明
    • 质量设计说明书
      • 作用:测试体系结构需求

7. 体系结构复审

  • 复审人员:外部人员,如用户、领域专家
  • 行为:搭建一个可运行的最小化系统
  • 目的:标识潜在的风险,及早发现体系结构设计中的缺陷和错误

    如:

    • 体系结构能否满足需求
    • 质量需求是否在设计中得到体现
    • 层次是否清晰
    • 构件的划分是否合理
    • 文档表达是否明确
    • 构件的设计是否满足功能与性能的要求等。

8. 体系结构实现

  • 概念:用实体来显示出一个软件体系结构
    • 符合体系结构所描述的结构性设计决策
    • 分割成规定的构件
    • 按规定方式互相交互
  • 体系结构实现过程:如下图
    在这里插入图片描述

9. 体系结构的演化

9.1 概述

  • 需求的变动
    • 构件开发过程中,用户的需求可能还有变动
    • 软件运行后,由一个单位移植到另一个单位,需求也会发生变化
  • 需求变动引起体系结构的修改

9.2 演化步骤

在这里插入图片描述

  1. 需求变化归类
    • 使变化的需求与已有构件对应
    • 找不到对应构件的变动做好标记(等待创建新构建)
  2. 制订体系结构演化计划
    • 作用:为后续演化开发工作的指南
  3. 修改、增加或删除构件
  4. 更新构件的相互作用
  5. 构件组装与测试

测试:对组装后的系统整体功能和性能进行测试。

  1. 技术评审
    • 评审内容:评审组装后的体系结构是否反映需求变动、符合用户需求
    • 如果不符合:在第2到第6步之间进行迭代
  • 演化后的体系结构
    所有修改必须集成到原来的体系结构中,完成一次演化过程

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/477442.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8 克隆虚拟机

后期集群我们需要使用多台服务器,此处我们先克隆三台,master,slave01,slave02. 1.先关闭模版虚拟机。再选择 模版虚拟机hadoop100右击--》管理 --》克隆 2.下图中特别注意:建议使用集群的名字作为虚拟机名称。目前克隆主机master. 以上步骤完…

Django数据库查询

聚合查询 分组查询 F与Q查询 默认情况下,用Q包裹的两个条件,用逗号分割也是and关系 choices参数 只要某个字段的可能性是完全可以列举出来的,可以采取choices参数 该gender字段存的还是数字,但是如果数字在上面的元组列举范围内,该怎么获取对应的值,如果不在范围内,会怎…

Java学习笔记(20)

可变参数 输入的参数数量不确定 底层就是把输入的参数放进一个数组里 只能写一个可变参数如果还有其他形参,可变参数要放在最后写 可变参数在底层就是一个数组 Collections Addall shuffle 练习 package exercise;import java.util.ArrayList; import java.util.C…

Nacos详解,从安装到服务部署,及nginx反向代理

Nacos 安装 Windows安装 下载 在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: GitHub主页:https://github.com/alibaba/nacos GitHub的Release下载页:https://github.com/alibaba/nacos…

更新数据库表中的数据

目录 update 加上各种限制条件 update update 表名set 列名1xx,列名2xx 指定更新某列数据如果不添加where子句,则为全列更新 也可以在原有基础上更新: 注意,mysql语法里不支持,必须是列名列名数值 加上各种限制条件 比如加上order by子句,where子句,limit等 这些条件对于up…

Flutter 运行 flutter doctor 命令长时间未响应

由于 Flutter 运行 flutter doctor 命令,会从 pub(https://pub.dev/ 类似于 Node.js 的 npm) 上进行资源的下载,如果没有配置国内镜像,可能会由于其服务器在国外导致资源下载慢或者下载不下来,所以出现了运行 flutter doctor 命令…

权限提升-Web权限提升篇划分获取资产服务后台系统数据库管理相互转移

知识点 1、权限提升转移-分类&高低&场景 2、Web权限提升及转移-后台&数据库 3、后台权限及转移-转移对象&后台分类 章节点: 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及转移 4、域控权限提升及转移 基础点 0、为什么我们要学…

算法复杂度的介绍

算法复杂度简介 复杂度也叫渐进复杂度,包括时间复杂度和空间复杂度,用来分析算法执行效率与数据规模之间的增长关系,可以粗略地表示,越高阶复杂度的算法,执行效率越低。常见的复杂度并不多,从低阶到高阶有…

API(时间类)

一、Date类 java.util.Date类 表示特定的瞬间,精确到毫秒。 Date常用方法: public long getTime() 把日期对象转换成对应的时间毫秒值。 public void setTime(long time) 把方法参数给定的毫秒值设…

使用布丰投针法精确计算圆周率

如果在平面上有两条距离为d的平行线,假设如果拿一根长度是L的铁针随机的丢到纸面上去,那么试问铁针与某条直线所相交的概率是多少,假设铁针的长度L是大于平行线的距离d的,这样铁针就不会同时与两条直线所相交了。 添加图片注释&am…

文章解读与仿真程序复现思路——中国电机工程学报EI\CSCD\北大核心《基于老化成本实时次梯度的异构储能系统功率分配策略》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

如何进行软件测试

1、测试用例带给我们的好处 (1)测试执行者的依据 (2)使得工作可重复,自动化测试的基础 (3)评估需求覆盖率 (4)用例的复用 (5)积累测试的方法思…

零代码编程:用kimichat将srt字幕文件进行批量转换合并

文件夹里面有多个srt字幕文件,借助kimichat可以很方便的对其进行批量合并。 在kimichat中输入提示词: 你是一个Python编程专家,写一个Python脚本,完成一个处理整理文档内容的任务,具体步骤如下: 打开文件…

Microsoft Copilot (Bing Chat)

Copilot: Your everyday AI companion (你每天的AI伙伴) Bing AI - 搜索 Microsoft Copilot: 你的日常 AI 助手 Copilot|Designer: Create images from words with AI https://www.bing.com/images/create 2024 年 1 月 23 日更新: 在微软…

软考高级:软件架构评估-质量属性概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【Winform学习笔记(十一)】解决无边框窗体最大化显示异常问题

解决无边框窗体最大化显示异常问题 前言正文1、防止改变窗口大小时控件闪烁2、FrmMain_SizeChanged 前言 Winform 无边框窗体的设计,旨在为用户提供更加独特和个性化的界面体验,但是在实现这一设计的过程中,最大化显示异常问题往往成为开发者…

日志集中审计系列(1)--- LogAuditor接收DAS设备syslog日志

日志集中审计系列(1)--- LogAuditor接收DAS设备syslog日志 前言拓扑图设备选型组网需求配置思路操作步骤结果验证前言 近期有读者留言:“因华为数通模拟器仅能支持USG6000V的防火墙,无法支持别的安全产品,导致很多网络安全的方案和产品功能无法模拟练习,是否有真机操作的…

软考高级:软件架构评估-质量属性-安全性概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Spring AI Embeddings 和 Vector 入门

在前面 Spring AI Chat 简单示例 中介绍了 Chat 的基本用法,本文在此基础(主要是pom.xml)上继续探索 Embedding 和 Vector。 官方文档: embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embedding…

基于Vue的社区旧衣回收利用系统的设计与实现

经济的高速发展使得每一个家庭的收入都获得了大幅增长,随之而来的就是各种梦想的逐步实现,首当其冲的就是各类衣服的更新换代而导致了大量旧衣物在家中的积存。为了帮助人们解决旧衣物处理的问题而以当前主流的互联网技术构建一个可于社区中实现旧衣回收…