系统架构师考试学习笔记第三篇——架构设计高级知识(10)系统质量属性与架构评估

本文主要是介绍系统架构师考试学习笔记第三篇——架构设计高级知识(10)系统质量属性与架构评估,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本章知识点:

        第10课时主要学习软件系统质量属性、系统架构评估以及ATAM方法评估实践等内容。

        本课时内容侧重于概念知识,根据以往全国计算机技术与软件专业技术资格(水平)。考试的出题规律,考查的知识点多来源于教材,扩展内容较少。根据考试大纲,本课时知识点会涉及单项选择题(约占8~15分)和下午案例题(25分),论文也会有覆盖。本课时知识架构如图10.1所示。

一、软件系统质量属性

1.基本概念


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

表10.1 软件系统质量属性一览表
属性子属性作用及要点
开发期质量属性易理解性指设计被开发人员理解的难易程度
可扩展性软件因适应新需求或需求变化而增加新功能的能力,也称灵活性
可重用性指重用软件系统或某一部分的难易程度
可测试性对软件测试以证明其满足需求规范的难易程度
可维护性当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度
可移植性将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度
运行期质量属性性能软件系统及时提供相应服务的能力,如速度、吞吐量和容量等
安全性软件系统同时兼顾向合法用户提供服务,以及组织非授权使用的能力
可伸缩性当用户数和数据量增加时,软件系统维持高服务质量的能力
互操作性软件系统与其他系统交换数据和相互调用服务的难易程度
属性
可靠性软件系统在一定的时间内持续无故障运行的能力
可用性系统在一定时间内正常工作的时间所占比例
鲁棒性软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力,也称健壮性或容错性

2.面向架构评估的质量属性

        在架构评估过程中,评估人员普遍关注的质量属性见表10.2。

表10.2 评估属性一览表
属性子属性作用及要点
性能效率指标:处理任务所需时间或单位时间内的处理量
容错出现错误后仍能保证系统争取运行,且自行修正错误
错误不对系统产生影响,按既定程序忽略错误
正常运行的时间比例

表10.2 评估属性一览表
属性子属性作用及要点
性能效率指标:处理任务所需时间或单位时间内的处理量
可靠性容错出现错误后仍能保证系统争取运行,且自行修正错误
健壮性错误不对系统产生影响,按既定程序忽略错误
可用性正常运行的时间比例
安全性系统向合法用户提供服务并阻止非法用户的能力
可修改性可维护性局部修复使故障对架构的负面影响最小化
可扩展性因松散耦合更易实现新特性/功能,不影响架构
结构重组不影响主体进行的灵活配置
可移植性适用于多样的环境(硬件平台、语言、操作系统等)
功能性需求的满足程度
可变性总体架构可变
互操作性通过可视化或接口方式提供更好的交互操作体验

        就系统架构设计师考试而言,我们针对上表梳理了一些考试常考的质量属性,以及提升或保证这些质量属性的应对措施。
 (1)可用性。提升可用性的策略可以从以下几个方面考虑:
        ·错误检测:心跳、Ping/Echo、异常。
        ·错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。
        ·错误避免:服务下线、事务、进程监控器。

(2)性能。提升性能的策略可以从以下几个方面考虑:
        ·资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
        ·资源管理:并发机制、增加资源。
        ·资源仲裁:先来先服务、固定优先级、动态优先级、静态调度。
(3)可修改性。提升性能的策略可以从以下几个方面考虑:
        ·局部化修改:高内聚低耦合、预测变更、使模块通用。
        ·防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。
        ·推迟绑定时间:运行时注册、多态、配置文件。
(4)安全性。提升安全性的策略可以从以下几个方面考虑:
        ·抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。
        ·检测攻击:入侵检测系统。
        ·从攻击中恢复:恢复状态、识别攻击者。


3.质量属性场景描述


        质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成。
(1)刺激源(Source):某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
(2)刺激(Stimulus):指当刺激到达系统时需要考虑的条件。
(3)环境(Environment);指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。

(4)制品(Artifact):某个制品被激励,可能是整个系统,也可能是系统的一部分。
(5)响应(Response):指在激励到达后所采取的行动。
(6)响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。

二、系统架构评估

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

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

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


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

2.系统架构评估方法

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

(2)架构权衡分析法(Architecture Tradeoff Analysis Method,ATAM).ATAM是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。传统的ATAM可以分为4个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念
        现代的ATAM方法采用效用树对质量属性进行分类和优先级排序。用ATAM方法评估软件体系结构分为演示、调查和分析、测试和报告,如图10.3所示。

 

 1)阶段1-演示(Presentation).
        使用ATAM评估软件体系结构的初始阶段,包括3个步骤:
        ①介绍ATAM:描述ATAM评估过程。
        ②介绍业务驱动因素:着重业务视角,提供有关系统功能、主要利益相关方、业务目标和其他限制等信息。
        ③介绍要评估的体系结构:侧重可用性以及体系结构的质量要求。
2)阶段2-调查和分析。
        使用 ATAM技术评估架构第2阶段,对一些关键问题彻底调查,包括3个步骤:
        ①确定架构方法:涉及能够理解系统关键需求的关键架构方法。
        ②生成质量属性效用树;确定最重要的质量属性,并确定优先次序。
        ③分析体系结构方法;彻底调查和分析,找出处理相应质量属性架构的方法。包括4个主要阶段:调查架构方法→创建分析问题→分析问题的答案→找出风险、非风险、敏感点和权衡点。

3)阶段3-测试。
        ①头脑风暴和优先场景:将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较。
        ②分析架构方法。
4)阶段4-报告ATAM.
        提供评估期间收集的所有信息,呈现给利益相关者。
        上述两种主要评估方法的对比,见表10.3。

表10.3 评估方法的对比
项目SAAMATAM
特定目标通过程序文档验证体系结构,注重发现潜在问题,可用于评价单系统或进行多系统比较确定在多个质量属性之间折中的必要性
评估技术场景技术场景技术、启发式分析方法
质量属性可修改性是主要分析内容性能、可用性、安全性和可修改性
风险承担者所有参与者场景和需求收集过程中的相关人
架构描述围绕功能、结构和分配描述五个基本结构及其映射关系
方法活动场景开发、体系结构描述、单个场景评估、场景交互和总体评估场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中
知识库可复用性不涉及有基于属性的体系模型,可复用
方法验证(应用领域)空中交通管制系统、嵌入式音频系统、修正控制系统
 
仍处于研究中

(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方法来进行度量和评估。

三、课后练习

1.识别风险、非风险、敏感点和权衡点是进行软件架构评估的重要过程。“改变业务数据编码方式会对系统的性能和安全性产生影响”是对(1)的描述,“假设用户请求的频率为每秒1个,业务处理时间小于30毫秒,则将请求响应时间设定为1秒钟是可以接受的”是对(2)的描述。
(1)A.风险点        B.非风险        C.敏感点        D.权衡点
(2)A.风险点        B.非风险        C.敏感点        D.权衡点

2.请详细阅读有关软件架构评估方面的说明,回答下列问题。
【说明】某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支
付环节的效率和安全性。公司研发部门在需求分析的基础上,给出了在线交易系统的架构设计。公
司组织相关人员召开了针对架构设计的评估会议,会上用户提出的需求、架构师识别的关键质量属
性场景和评估专家的意见等内容部分列举如下:
(a)在正常负载情况下,系统必须在0.5秒内响应用户的交易请求。
(b)用户的信用卡支付必须保证99.999%的安全性。
(c)系统升级后用户名要求至少包含8个字符。
(d)网络失效后,系统需要在2分钟内发现错误并启用备用系统。
(e)在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能。
(f)系统拟采用新的加密算法,这会提高系统的安全性,但同时会降低系统的性能。
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计。
(h)需要在30人·月内为系统添加公司新购买的事务处理中间件。
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性。
(j)主站点断电后,需要在3秒内将访问请求重定向到备用站点。
(k)用户信息数据库授权必须保证99.999%可用。

(I)系统需要对Web界面风格进行修改,修改工作必须在4人·月内完成。
(m)系统需要为后端工程师提供远程调试接口,并支持远程调试。
【问题1】在架构评估过程中,质量属性效用树(Utility Tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入下图中(1)、(2)空白处;并选择题干描述的(a)~(m),填入(3)~(6)空白处,完成该系统的效用树。

【问题2】在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。

答案解析:

1、解析:风险是某个存在问题的架构设计决策,可能会导致问题;非风险与风险相对,是良好的架构设计决策;敏感点是一个或多个构件的特性;权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。根据上述定义,可以看出“改变业务数据编码方式会对系统的性能和安全性产生影响”是对权衡点的描述,“假设用户请求的频率为每秒1个,业务处理时间小于30毫秒,则将请求响应时间设定为1秒钟是可以接受的”是对非风险的描述。
答案:D B

2、答案1:在架构评估过程中,质量属性效用树(Utility Tree)是对系统质量属性进行识别和优先级排序的重要工具。效用树主要关注性能、可修改性、可用性和安全4个方面。

答案2:系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。敏感点是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。权衡点是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。根据上述分析可知题干描述中,(i)描述的是系统架构风险;(g)描述的是敏感点;(f)描述的是权衡点。

这篇关于系统架构师考试学习笔记第三篇——架构设计高级知识(10)系统质量属性与架构评估的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;