系统架构设计师【第8章】: 系统质量属性与架构评估 (核心总结)

文章目录

    • 8.1 软件系统质量属性
      • 8.1.1 质量属性概念
      • 8.1.2 面向架构评估的质量属性
      • 8.1.3 质量属性场景描述
    • 8.2 系统架构评估
      • 8.2.1 系统架构评估中的重要概念
      • 8.2.2 系统架构评估方法
    • 8.3 ATAM方法架构评估实践
      • 8.3.1 阶段1—演示(Presentation)
      • 8.3.2 阶段2—调查和分析
      • 8.3.3 阶段3—测试
      • 8.3.4 阶段4—报告ATAM

8.1 软件系统质量属性

8.1.1 质量属性概念

软件系统质量属性是一个系统的可测量或可测试的属性,基于软件系统的生命周期,可将软件系统的质量属性分为开发期质量属性和运行期质量属性。

1.开发期质量属性

  • (1)易理解性 : 指设计被开发人员理解的难易程度。
  • (2)可扩展性 : 软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
  • (3)可重用性 : 指重用软件系统或某一部分的难易程度。
  • (4)可测试性 : 对软件测试以证明其满足需求规范的难易程度。
  • (5)可维护性 : 当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
  • (6)可移植性 : 将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。

2.运行期质量属性

  • (1) 性能 : 性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
  • (2) 安全性 : 指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
  • (3) 可伸缩性 : 指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力。
  • (4) 互操作性 : 指本软件系统与其他系统交换数据和相互调用服务的难易程度。
  • (5) 可靠性 : 软件系统在一定的时间内持续无故障运行的能力。
  • (6) 可用性 : 指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误,恶意攻击,高负载等问题的影响。
  • (7) 鲁棒性 : 是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发
    生了故障等)下仍能够正常运行的能力,也称健壮性或容错性。

8.1.2 面向架构评估的质量属性

在架构评估过程中, 评估人员所关注的是系统的质量属性。评估方法所普遍关注的质量属性有以下几种。
1.性能
性能 (Performance) 是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。

提升性能的策略可以从以下几个方面考虑:

  • 资源的需求 : 减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
  • 资源管理 : 并发机制、增加资源。
  • 资源仲裁 : 先来先服务、固定优先级、动态优先级、静态调度。

2.可靠性
可靠性 (Reliability) 是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。

  • (1) 容错。出现错误后仍能保证系统争取运行,且自行修正错误;
  • (2) 健壮性。错误不对系统产生影响,按既定程序忽略错误。

3.可用性
可用性 (Availability) 是系统能够正常运行的时间比例。

提升可用性的策略可以从以下几个方面考虑:

  • 错误检测 : 心跳、Ping/Echo、异常。
  • 错误恢复 : 表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。
  • 错误避免 : 服务下线、事务、进程监控器。

4.安全性
安全性 (Security) 系统向合法用户提供服务并阻止非法用户的能力。

提升安全性的策略可以从以下几个方面考虑:

  • 抵抗攻击 : 用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。
  • 检测攻击 : 入侵检测系统。
  • 从攻击中恢复 : 恢复状态、识别攻击者。

5.可修改性
可修改性 (Modifability) 是指能够快速地以较高的性价比对系统进行变更的能力。包含以下4个
方面:

  • (1)可维护性 (Maintainability)。 局部修复使故障对架构的负面影响最小化。
  • (2)可扩展性 (Extendibility)。 因松散耦合更易实现新特性/功能,不影响架构。
  • (3)结构重组 (Reassemble)。 不影响主体进行的灵活配置。
  • (4)可移植性 (Portability)。 适用于多样的环境(硬件平台、语言、操作系统等)。

提升可修改性的策略可以从以下几个方面考虑:

  • 局部化修改 : 高内聚低耦合、预测变更、使模块通用。
  • 防止连锁反应 : 信息隐藏、维持现有接口、限制通信路径、使用中介。
  • 推迟绑定时间 : 运行时注册、多态、配置文件。

6.功能性
功能性 (Functionality) 是系统能完成所期望的工作的能力。

7.可变性
可变性 (Changeability) 是指架构经扩充或变更而成为新架构的能力。

8.互操作性
通过可视化或接口方式提供更好的交互操作体验

8.1.3 质量属性场景描述

质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成。

  • (1) 刺激源(Source) : 某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
  • (2) 刺激(Stimulus) : 指当刺激到达系统时需要考虑的条件。
  • (3) 环境(Environment) : 指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
  • (4) 制品(Artifact) : 某个制品被激励,可能是整个系统,也可能是系统的一部分。
  • (5) 响应(Response) : 指在激励到达后所采取的行动。
  • (6 ) 响应度量(Measurement) : 当响应发生时,应当能够以某种方式对其进行度量,以对需
    求进行测试。

8.2 系统架构评估

系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策,通常分为:

  • (1)基于调查问卷或检查表的方法: 缺点是很大程度上依赖于评估人员的主观判断。
  • (2)基于场景的评估方法: 应用在架构权衡分析法(ATAM)和软件架构分析方法(SAAM)中。
  • (3)基于度量的评估方法: 建立质量属性和度量之间的映射原则→在软件文档中获取度量信
    息→分析推导系统质量属性。

8.2.1 系统架构评估中的重要概念

(1) 敏感点: 实现质量目标时应注意的点,是一个或多个构件的特性。
(2) 权衡点: 影响多个质量属性的敏感点。
(3) 风险承担者或利益相关人: 影响体系结构或被体系结构影响的群体。
(4) 场景: 确定架构质量评估目标的交互机制,一般采用触发机制(教材中解释为“刺激”)、环境和影响三方面来描述。

8.2.2 系统架构评估方法

(1)软件架构分析方法(Software Architecture Analysis Method,SAAM)
SAAM 是卡耐基梅隆 大学软件工程研究所的 Kazman 等人于 1983 年提出的一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法。SAAM 的主要输入是 问题描述、需求说明和架构描述, 其分析过程主要包括 场景开发、架构描述、单个场景评估、场景交互和总体评估,如图
在这里插入图片描述

(2) 架构权衡分析法(Architecture Tradeoff Analysis Method,ATAM)
ATAM 是一种系统架 构评估方法,主要在系统开发之前,针对 性能、可用性、安全性和可修改性 等质量属性进行评价和 折中。传统的 ATAM 可以分为 4 个主要的活动阶段,包括需求收集、架构视图描述、属性模型构 造和分析、架构决策与折中,整个评估过程强调以 属性作为架构评估的核心概念

现代的 ATAM 方法采用效用树对质量属性进行分类和优先级排序。用 ATAM 方法评估软件体 系结构分为演示、调查和分析、测试和报告,如图 :
在这里插入图片描述

(3)成本效益分析法(Cost Benefit Analysis Method,CBAM)
分为整理场景→对场景进行求 精→确定场景的优先级→分配效用→架构策略涉及哪些质量属性及响应级别→使用内插法确定“期 望的”质量属性响应级别的效用→计算各架构策略的总收益→根据受成本限制影响的 ROI 选择架 构策略。

(4)其他评估方法

  • 1)SAEM 方法: 将软件架构看作一个最终产品以及涉及过程中的一个中间产品,从外部质量 属性和内部质量属性阐述的评估模型。
  • 2)SAABNet 方法: 辅助架构的定性评估,帮助诊断软件问题的可能原因,分析架构中的修改 给质量属性带来的影响、预测架构的质量属性,帮助架构设计人员做决策。SAABNet 度量的对象 包括架构属性、质量准则和质量因素。
  • 3)SACMM 方法: 一种软件架构修改的度量方法,首先基于内核定义差异度量准则来计算两 个软件架构之间的距离,然后分析对象之间的相似性。
  • 4)SASAM 方法: 通过对预期架构和实际架构进行映射和比较来静态地评估软件架构。
  • 5)ALRRA 方法: 是软件架构可靠性风险评估方法,使用动态复杂度准则和动态耦合度准则来定义组件和连接件的复杂性因素。
  • 6)AHP 方法: 把定性分析和定量计算相结合,对各种决策因素进行处理。 7)COSMIC+UML 方法:针对不同表达方式的软件架构,采用统一的软件度量 COSMIC 方法
    来进行度量和评估。

8.3 ATAM方法架构评估实践

用ATAM方法评估软件体系结构,其工作分为4个基本阶段,即 演示、调查和分析、测试、报告ATAM

8.3.1 阶段1—演示(Presentation)

使用 ATAM 评估软件体系结构的初始阶段,包括 3 个步骤:

  • 1 介绍 ATAM: 描述 ATAM 评估过程。
  • 2 介绍业务驱动因素: 着重业务视角,提供有关系统功能、主要利益相关方、业务目标和其他限制等信息。
  • 3 介绍要评估的体系结构: 侧重可用性以及体系结构的质量要求。

8.3.2 阶段2—调查和分析

使用 ATAM 技术评估架构第 2 阶段,对一些关键问题彻底调查,包括 3 个步骤:

  • 1 确定架构方法: 涉及能够理解系统关键需求的关键架构方法。
  • 2 生成质量属性效用树: 确定最重要的质量属性,并确定优先次序。
  • 3 分析体系结构方法: 彻底调查和分析,找出处理相应质量属性架构的方法。包括 4 个主要阶段:调查架构方法→创建分析问题→分析问题的答案→找出风险、非风险、敏感点和权衡点。

8.3.3 阶段3—测试

  • 1 头脑风暴和优先场景: 将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较。
  • 2 分析架构方法

8.3.4 阶段4—报告ATAM

提供评估期间收集的所有信息,呈现给利益相关者。 上述两种主要评估方法的对比,如表:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卷积网络迁移学习:实现思想与TensorFlow实践

摘要:迁移学习是一种利用已有知识来改善新任务学习性能的方法。 在深度学习中,迁移学习通过迁移卷积网络(CNN)的预训练权重,实现了在新领域或任务上的高效学习。 下面我将详细介绍迁移学习的概念、实现思想&#xff0c…

堆排序详细理解

目录 一、前备知识 二、建堆 2.2.1 向上调整算法建堆 2.2.2 向下调整算法建堆 三、排序 3.1 常见问题 3.2 思路 3.3 源码 一、前备知识 详细图解请点击:二叉树的顺序实现-堆-CSDN博客 本文只附上向上/向下调整算法的源码 //交换 void Swap(int* p, int* …

发电机组故障的原因、解决方案及解决措施

发电机组故障的原因、解决方案及解决措施可以总结如下: 一、故障原因 供电中断 原因:电网故障、线路短路或电力负荷过重等。 燃油问题 原因:燃油供应系统问题,如燃油管路堵塞、燃油质量不佳等。 轴承过热 原因:轴承过…

TensorFlow Playground神经网络演示工具使用方法详解

在现代机器学习领域,神经网络无疑是一个重要的研究方向。然而,对于许多初学者来说,神经网络的概念和实际操作可能显得相当复杂。幸运的是,TensorFlow Playground 提供了一个交互式的在线工具,使得我们可以直观地理解和实验神经网络的基本原理。在这篇博客中,我们将详细介…

长虹智能电视55D3P(机芯:ZLH74GiR2G)海思平台固件解析打包

一、使用Hitool打包固件 接上一篇,尝试使用HITOOL打包固件 长虹55D3P海思平台固件破解-CSDN博客 参考ZNDS HItool备份固件:【玩机必看】海思机顶盒备份线刷包 制作分区表xml文件_ZNDS刷机/救砖_ZNDS HITOOL下载:https://cloud.189.cn/web/…

Visual Studio 2022创建dll并调用

需求: 创建A项目,有函数和类,将A项目生成DLL动态链接库 创建B项目,使用A项目生成的dll和lib相关文件 正常项目开发.h用于函数声明,.cpp用于函数实现,但是项目开发往往不喜欢将.cpp函数实现的代码发给别人&…

Elasticsearch 认证模拟题 - 5

一、题目 .在集群上有一个索引 food_ingredient,搜索需要满足以下要求: 三个字段 manufacturer,name,brand 都能匹配到文本 cake mix高亮 字段 name,并加标签排序,对字段 brand 正序,_score 降…

Docker安装Redis(云服务器)

准备: 在云服务器中开启6370端口号 docker run -d --name redis -p 6379:6379 redis 这条命令使用docker运行一个名为"redis"的容器,映射容器的6379端口到主机的6379端口,并且使用redis镜像来运行容器。REDIS是一个开源的内存数据…

2024最新群智能优化算法:大甘蔗鼠算法(Greater Cane Rat Algorithm,GCRA)求解23个函数,提供MATLAB代码

一、大甘蔗鼠算法 大甘蔗鼠算法(Greater Cane Rat Algorithm,GCRA)由Jeffrey O. Agushaka等人于2024年提出,该算法模拟大甘蔗鼠的智能觅食行为。 参考文献 [1]Agushaka J O, Ezugwu A E, Saha A K, et al. Greater Cane Rat Alg…

C++ 混合运算的类型转换

一 混合运算和隐式转换 257 整型2 浮点5 行吗?成吗?中不中? C 中允许相关的数据类型进行混合运算。 相关类型。 尽管在程序中的数据类型不同,但逻辑上进行这种运算是合理的相关类型在混合运算时会自动进行类型转换,再…

2024Dragon Knight CTF复现web

穿梭隐藏的密钥 首先看看页面的源代码,但是发现f12和鼠标右键都被禁用了 用ctrlu查看,发现一个可疑页面 访问看看,发现还是只有一张图,查看源代码发现提示 扩展: Fuzz:Fuzz是一种基于黑盒的自动化软件模糊…

TXT文档拆分、合并、添加内容,修改内容、删除内容——首助编辑高手软件一招解决

下面这个TXT文档里面是一篇长篇小说,大家都知道一般小说文字内容是比较大的一个文件呢,想要拆分,拆分肯定是有方法呢,比如比较重统的方法手动一章一章复制出来,粘贴到另一个文档里面去粘贴,手动操作是不是很…

【GlobalMapper精品教程】083:基于DEM整体抬升或下降地形高程的两种方式

在Globalmapper24中文版中,可以很方便地对DEM高程数据进行整体抬升或下降。 文章目录 一、准备DEM数据二、高程整体修改1. 修改偏移2. 数据导出三、栅格计算器一、准备DEM数据 订阅专栏后,从私信查收实验数据及Globalmapper24中文版,加载实验数据包data083.rar中的dem数据,…

数据结构:希尔排序

文章目录 前言一、排序的概念及其运用二、常见排序算法的实现 1.插入排序2.希尔排序总结 前言 排序在生活中有许多实际的运用。以下是一些例子: 购物清单:当我们去超市购物时,通常会列出一份购物清单。将购物清单按照需要购买的顺序排序&…

[ROS 系列学习教程] 建模与仿真 - Xacro 语法

ROS 系列学习教程(总目录) 本文目录 一、属性与属性块二、数学表达式三、宏3.1 宏的基本使用3.2 属性块做为宏的入参3.3 任意数量元素做为宏的入参3.4 指定多个块元素的处理顺序3.5 宏嵌套3.6 默认参数3.7 局部属性 四、Rospack 命令五、包含其他 xacro 文件六、条件语句七、YA…

机器人动力学模型与MATLAB仿真

机器人刚体动力学由以下方程控制!!! startup_rvc mdl_puma560 p560.dyn 提前计算出来这些“disturbance”,然后在控制环路中将它“抵消”(有时候也叫前馈控制) 求出所需要的力矩,其中M项代表克服…

世界500强是如何解决邮件大附件影响业务问题的

电子邮件已成为众多企业沟通和文件传输的重要工具。然而,邮件发送大附件时,企业往往会遇到一系列挑战。本文将探讨邮件发送大附件的优劣势,分析其对业务可能造成的问题,并介绍500强企业是如何解决这些问题的。 邮件发送大附件的优…

V90 PN总线伺服通过FB285速度控制实现正弦位置轨迹运动(解析法和数值法对比测试)

V90总线伺服相关内容请参考专栏系列文章,这里不在详述 1、V90伺服PN总线速度随动控制 V90伺服PN总线速度随动控制(手摇轮功能)_手摇轮可以接总线plc吗?-CSDN博客文章浏览阅读632次。V90PN总线控制相关内容,请参考下面文章链接:博途1200/1500PLC V90 PN通信控制 (FB284功能…

Facebook的算法揭秘:如何塑造我们的信息

在当今数字化时代,Facebook已经成为人们日常生活中不可或缺的一部分。其信息流算法不仅决定着我们在平台上看到的内容,还对我们的观点、行为和体验产生了深远的影响。本文将深入探讨Facebook的算法运作方式,以及它对我们信息获取和社交行为的…

Java集合【超详细】2 -- Map、可变参数、Collections类

文章目录 一、Map集合1.1 Map集合概述和特点【理解】1.2 Map集合的基本功能【应用】1.3 Map集合的获取功能【应用】1.4 Map集合的两种遍历方式 二、HashMap集合2.1 HashMap集合概述和特点【理解】2.2 HashMap的组成、构造函数2.3 put、查找方法2.4 HashMap集合应用案例【应用】…