【2024软考架构师自学笔记】7.系统质量属性与架构评估


7.1 软件系统质量属性

7.1.1 质量属性概念

根据GB/T 16260.1 定义,从管理角度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性:功能性、可靠性、易用性、效率、维护性与可移植性。
功能性包括:适合性、准确性、互操作性、依从性、安全性;
可靠性包括:容错性、易恢复性、成熟性;
易用性包括:易学性、易理解性、易操作性;
效率包括:资源特性和时间特性;
维护性包括:可测试性、可修改性、稳定性和易分析性;
可移植性包括:适应性、易安装性、一致性和可替换性。
软件系统的质量属性分为开发期质量属性和运行期质量属性2个部分:

  1. 开发期质量属性:易理解性、可扩展性、可重用性、可测属性、可维护性、可移植性。
  2. 运行期质量属性:性能、安全性、可伸缩性、可操作性、可靠性、可用性、鲁棒性(健壮性或容错性)

7.1.2 面向架构评估的质量属性 *

  • 性能 (Performance)
    指系统的响应能力,常用单位时间内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量表示。常使用基准测试程序。如响应时间、吞吐量。
    提升性能设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等。
  • 可靠性(Reliability)
    是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
    可靠性是最重要的软件特性,通常用来衡量在规定的条件和时间内,软件完成规定功能的能力。可靠性通常用平均失效等待时间 (Mean Time To Failure,MTTF) 和平均失效间隔时间 (Mean Time Between Failure,MTBF) 来衡量。在失效率为常数和修复时间很短的情况下, MTTF 和 MTBF几乎相等。
    可靠性可以分为两个方面:
    1)容错:错误发生时确保系统正确的行为,并进行内部“修复”。
    2)健壮性:错误发生时保证软件按照某种已经定义好的方式终止执行。
    设计策略:心跳、Ping/Echo、冗余、选举。
  • 可用性 (Availability)
    是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。
    设计策略:心跳、Ping/Echo、冗余、选举。
  • 安全性 (Security)
    是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性。
    设计策略:入侵检测、用户认证、用户授权、追踪审计。
  • 可修改性 (Modifability)
    是指能够快速地以较高的性价比对系统进行变更的能力。
    包含以下4个方面:
    1)可维护性 (Maintainability): 这主要体现在问题的修复上,在错误发生后“修复”软件系统。
    2)可扩展性 (Extendibility):新特性来扩展软件系统。
    3)结构重组 (Reassemble)
    4)可移植性 (Portability)
    设计策略:接口实现分类、抽象、信息隐藏。
  • 功能性
    是系统能完成所期望的工作的能力。
  • 可变性
    是指架构经扩充或变更而成为新架构的能力。
  • 互操作性
    程序和用其他编程语言编写的软件系统的交互。

7.1.3 质量属性的场景描述

质量属性场景是一个具体的质量属性需求,是利益相关者与系统的交互的简短陈述,作为描述质量属性的手段,由6部分组成:
刺激源 (Source):生成刺激的实体(人、系统或其他),即刺激的来源。
刺激 (Stimulus):该刺激是当刺激到达系统时需要考虑的条件。
环境 (Environment):刺激发生的条件。
制品 (Artifact):即被刺激的对象。
响应 (Response):即被刺激后响应。
响应度量 (Measurement):即对响应度量。
质量属性场景主要关注可用性、可修改性、性能、可测试性、易用性和安全性等6类质量属性。

  • 质量属性描述表
    略,详见书274页。

7.2 系统架构评估

系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它利用数学或逻辑分析技术,针对系统的一致性、正确性、质量属性、规划结果等不同方面,提供描述性、预测性和指令性的分析结果。
系统架构评估的方法通常可以分为3类:
1)基于调查问卷或检查表的方式
2)基于场景的方式
通过分析软件架构对场景的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。
3)基于度量的方式
它是建立在软件架构度量的基础上的,涉及3个基本活动,首先需要建立质量属性和度量之间的映射原则,然后从软件架构文档中获取度量信息,最后根据映射原则分析推导出系统的质量属性。

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

  • 敏感点 (Sensitivity Point) 和权衡点 (Tradeoff Point)
    敏感点:是一个特定的质量属性。权衡点:影响多个质量属性敏感点。
    例如:改变加密级别可能会对安全性和性能产生影响,加密级别越高安全性越高,但需要耗费更多处理时间,降低了性能。其中加密级别就是权衡点。
  • 风险承担者 (Stakeholders) 或者称为利益相关人
    相关人员所关心的问题见书278页。
  • 场景
    为得出质量目标所采取的机制称为场景,场景是从风险承担者的角度对与系统的交互的简短描述。一般采用刺激 (Stimulus)、 环 境(Environment) 和响应 (Response) 三方面来对场景进行描述。

7.2.2 系统架构评估方法

  • SAAM方法
    Scenarios-based Architecture Analysis Method
    (1)特定目标:是对描述应用程序属性的文档,验证基本的架构假设和原则。该分析方法有利于评估架构固有的风险。SAAM 不仅能够评估架构对于特定系统需求的使用能力,也能被用来比较不同的架构。
    (2)评估技术:场景技术。
    (3)质量属性:主要是可修改性。
    (4)风险承担者:协调不同参与者达成共识。
    (5)架构描述:SAAM用于架构的最后版本,但早于详细设计。主要包括功能、结构和分配3个方面。
    (6)方法活动:SAAM 的主要输入是问题描述、需求声明和架构描述。分析评估架构的过程包括5个步骤,即场景开发、架构描述、单个场景评估、场景交互和总体评估。输入和评估过程详见书280页。
    (7)已有知识库的可重用性: SAAM不考虑这个问题。
    (8)方法验证: SAAM是一种成熟的方法。
  • ATAM方法
    架构权衡分析方法 (Architecture Tradeoff Analysis Method,ATAM) 是 在SAAM的基础上发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
    (1)特定目标:确定在多个质量属性之间折中的必要性。
    (2)质量属性:考虑的是系统的可修改性、安全性、性能和可用性。
    (3)风险承担者:所有系统相关人员的参与。
    (4)架构描述:4+1视图派生而来,用一组消息顺序图表示运行时的交互和场景,对架构描述加以注解。 ATAM方法被用于架构设计中,或被另一组分析人员用于检查最终版本的架构。
    (5)评估技术:使用了场景技术,有3种不同类型的场景,分别是用例(包括对系统典型的使用、引出信息)、增长场景(用于涵盖那些对它的系统的修改)、探测场景(用于涵盖那些可能会对系统造成过载的极端修改)。ATAM 还使用定性的启发式分析方法 (Qualitative Analysis Heuristics), 在对一个质量属性构造了一个精确分析模型时要进行分析,定性的启发式分析方法就是这种分析的粗粒度版本。
    (6)方法的活动:分别是场景和需求收集、架构视图和场景实现、属性模型构造和分析、折中。
    获得属性关联的方法有两种,即使用敏感度分析来发现折中点和通过检查假设。
    (7)领域知识库的可重用性:领域知识库通过基于属性的架构风格 (Attribute Based Architecture Style) 维护。
    (8)方法验证:该方法已经应用到多个软件系统,但仍处在研究之中。
    ATAM 方法采用效用树 (Utility tree) 这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根—质量属性—属性分类—质量属性场景(叶子节点)。需要注意的是,ATAM主要关注4类质量属性:性能、安全性、可修改性和可用性,这是因为这4个质量属性是利益相关者最为关心的。得到初始的效用树后,需要修剪这棵树,保留重要场景(通常不超过50个),再对场景按重要性给定优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级(用 H/M/L的形式),这样对所选定的每个场景就有一个优先级对(重要度、难易度),如 (H、L) 表示该场景重要且易实现。
  • CBAM方法
    成本效益分析法 (the Cost Benefit Analysis Method,CBAM) 是在ATAM上构建,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段。
    CBAM 方法分为以下8个步骤:
    (1)整理场景。整理 ATAM 中获取的场景,根据商业目标确定这些场景的优先级,并选取优先级最高的1/3的场景进行分析。
    (2)对场景进行求精。为每个场景获取最坏情况、当前情况、期望情况和最好情况的质量属性响应级别。
    (3)确定场景的优先级。项目关系人对场景进行投票,其投票是基于每个场景“所期望的”响应值,根据投票结果和票的权值,生成一个分值(场景的权值)。
    (4)分配效用。对场景的响应级别(最坏情况、当前情况、期望情况和最好情况)确定效用表。
    (5)架构策略涉及哪些质量属性及响应级别,形成相关的“策略一场景一响应级别”的对应关系。
    (6)使用内插法确定“期望的”质量属性响应级别的效用。即根据第4步的效用表以及第5步的对应关系,确定架构策略及其对应场景的效用表。
    (7)计算各架构策略的总收益。根据第3步的场景的权值及第6步的架构策略效用表,计算出架构策略的总收益得分。
    (8)根据受成本限制影响的 ROI选择架构策略。根据开发经验估算架构策略的成本,结合第7步的收益,计算出架构策略的ROI, 按 ROI排序,从而确定选取策略的优先级。
  • 其他方法
    1)SAEM 方法
    SAEM方法将软件架构看作一个最终产品以及设计过程中的一个中间产品,从外部质量属性和内部质量属性两个角度来阐述它的评估模型,旨在为软件架构的质量评估创建一个基础框架。
    2)SAABNet 方法
    软件架构定性的评估技术依赖于专家知识,这些定性的知识比较含糊且难以文档化。 SAABNet是一种用来表达和使用定性知识以辅助架构的定性评估。该方法来源于人工智能 (AI), 允许不确定、不完整知识的推理。该方法使用 BBN(Bayesian Belief Networks) 来表示和使用开发过程中的知识。
    SAABNet度量的对象包括架构属性、质量准则和质量因素3部分。详见书284页表格。
    3)SACMM 方法
    SACMM 方法是一种软件架构修改的度量方法,首先基于图内核定义差异度量准则来计算两个软件架构之间的距离。图内核的基本思想是将结构化的对象描述为它的子结构的集合,通过子结构的配对比较来分析对象之间的相似性。假设可以提取到软件架构实际值的属性向量,表示为φ(4)={I(4),φ2(4),…}, 两个架构A ,和A,相似度(即内核)可以通过其内含子结构的相似度总和来计算。
    4)SASAM 方法
    SASAM 方法通过对预期架构(架构设计阶段的相关描述材料)和实际架构(源代码中执行的架构)进行映射和比较来静态地评估软件架构,并将静态评估与架构开发方法PuLSEDSSA结合,识别出10种不同的目的和需求来指导静态的架构评估。
    5)ALRRA 方法
    可靠性风险主要包含两个因素:故障发生的可能性以及故障所致后果的严重性。 ALRRA是一种软件架构可靠性风险评估方法。
    6)AHP方法
    层次分析法 (Analytical Hierarchy Process,AHP) 是多种架构评估度量方法的基础理论。
    7)COSMIC+UML方法
    基于面向对象系统源代码的可维护性度量准则。

7.3 ATAM方法架构评估实践

ATAM工作分为四个阶段:即演示、调查和分析、测试和报告。

7.3.1阶段1——演示 (Presentation)

第1步:介绍ATAM
第2步:介绍业务驱动因素
第3步:介绍要评估的体系结构
1)胡佛 (Hoover) 事件架构
2)“银行” (Banking) 事件架构

7.3.2阶段2——调查和分析

第4步:确定架构方法
第5步:生成质量属性效用树
第6步:分析体系结构方法
找出风险、非风险、敏感点和权衡点

7.3.3阶段3——测试

第7步:头脑风暴和优先场景
第8步:分析架构方法

7.3.4阶段4——报告ATAM

备注:此章重点理解、应用、案例题,内容较水,以后有时间再补充。

  • 31
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值