软件系统质量属性

软件系统质量属性


软件系统质量属性(Quality Attribute)是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者需求的程度。

可维护性:  当修改缺陷、增加功能、提高质量属性时, 识别修改点并实施修改的难易程度。

可修改性:能够快速的以较高的性价比对系统进行变更的能力。

可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称灵活性。

可伸缩性:当用户数和数量增加是,软件系统维持高服务质量的能力。

可靠性:持续无故障运行的能力。

可用性:正常工作的时间所占的比例。

鲁棒性:在非正常情况下仍能正常运行的能力。

(1)性能

1.在正常负载情况下,机器学习流程从提交到开始执行,时间间隔不大于5秒。

2.在正常负载情况下,平台应在0.5秒内对用户的界面操作请求进行响应。

3.在正常负载情况下,用户的代码提交请求应该在0.5秒内完成;

(2)可用性

1.平台支持分布式部署,当主站点断电后,应在20秒内将请求重定向到备用站点。

2.平台主站点宕机后,需要在15秒内发现错误并启用备用系统。

(3)安全

1.平台需要对用户的所有操作过程进行详细记录,便于审计工作。

2.平台应该具备数据库保护措施,能够预防核心数据库被非授权用户访问。

3.系统应该具备完善的安全防护措施,能够对黑客的攻击行为进行检测与防御。

(4)可修改性

1.平台支持硬件扩容与升级,能够在3人天内完成所有部署与测试工作。

2.平台部署后,针对界面风格的修改需要在3人天内完成。

1.性能

性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应或者在某段时间内系统所能处理的事件的个数。

代表参数:响应时间、吞吐量

设计策略、优先级队列、资源调度

2.可用性

可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。

代表参数:故障间隔时间

设计策略:冗余、心跳线

3.安全性

安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。

设计策略:追踪审计

4.可修改性

可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。

主要策略:信息隐藏

5.可靠性

可靠性(reliability)是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。主要考虑两个方面:容错、健壮性。

代表参数:MTTF、MTBF

设计策略:冗余、心跳线

6.功能性

功能性(functionality)是系统所能完成所期望的工作的能力,一项任务的完成需要系统中许多或大多数构件的相互协作。

7.可变性

可变性(changeability)是指体系结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品(例如,软件产品线)的基础时,可变性是很重要的。框架方面的修改

8.互操作性

作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。为了支持互操作性(interoperation),必须为外部可视的功能特性和数据结构提供精心设计的软件入口,程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件体系结构。

面向架构评估的质量属性

1. 可用性
定义系统能够正常运行的时间比例、两次故障之间的时间长度、出现故障时系统能够恢复正常的速度。MTBF = MTTF + MTTR
指标

平均无故障时间(MTTF)平均故障间隔时间(MTBF)平均故障修复时间(MTTR)

架构策略Ping/Echo、心跳、异常检测、主动冗余、被动冗余、检查点、双机热备
质量属性场景

1) 系统宕机后,能在10秒内感知错误,并自动启动热备份系统。
2) 主站点断电后,在5秒内将请求重定向到备用站点。

3) 系统应7x24小时工作。

4) 主站宕机后,系统能够在10秒内自动切换至备用站点并恢复正常运行。

5) 系统采用双机热备,主备机必须实时监测对方状态,以便完成系统的实时切换。

6)系统出现严重故障不得不停止服务时,修复时间不超过20分钟

2. 可修改性 
定义能够快速的以较高的性价比对系统进行变更的能力。
可修改型考虑的内容:可维护、可扩展、结构重构组、可移植
指标

修改所影响的元素的数量,对其它功能/质量属性所造成影响的程度。

系统在改变功能、质量属性时,需要付出的成本、努力、资金和难度。

查找架构中需要修改的位置,进行修改且不会影响其它功能。

对所作修改进行测试的难易程度。

架构策略接口-实现分离
质量属性场景

1)系统支持横向存储扩展,要求在2人天内完成所有的扩展与测试工作。

2)支持对系统的外观进行调整和配置,调整工作需要在4人天内完成。

3)平台支持硬件扩容与升级,能够在3人天内完成所有部署与测试工作。

4)针对界面风格的修改需要在3人天内完成。

5) 业务功能和界面的调整与修改不超过10人月。

3. 性能
定义指系统的响应能力,系统完成某个事务处理所需的时间,单位时间内所处理事务的数量。
指标响应时间、吞吐量、效率、期限、抖动、缺失率、数据丢失率
架构策略资源调度资源仲裁、负载均衡、增加计算资源、提高计算效率、减少计算开销、控制资源使用
质量属性场景

1) 正常负载情况下,系统应在0.3秒内对用户的界面操作请求进行响应。

2)正常负载情况下,用户支付商品费用后在3秒内确认订单支付信息。

3)在并发用户数量10万的负载情况下,用户请求的平均响应时间应小于3秒。
4) 如果每秒钟用户查询请求的数量是10个,处理单个请求的时间为30毫米,则系统应保证在1秒内完成用户的查询请求。

5) 系统在展示商品的实时视频时,需要保证视频画面具有1024x768像素的分辨率,40帧/秒的速率。

6) 实时状态视频传输必须保证画面具有1024*786的分辨率,40帧/秒的速率。

7) 系统应支持大于50个终端设备的并发请求。

8)系统需要支持不低于2G的数据缓存。

4. 可测试性
定义系统测试过程中的效率,发现系统缺陷或故障的难易程度。
指标执行测试的时间
质量属性场景

1)系统需要内置接口函数,支持开发团队进行功能调试与系统诊断。

2)平台提供机器学习算法的远程调试功能,支持算法工程师进行远程调试。

3)系统本身需提供远程调试接口,支持开发团队进行远程排错。

5. 易用性
定义用户在使用系统时的容易程度。
指标用户满意度、学习曲线、想要学习系统特性、有效使用系统、对系统满意
质量属性场景

1)平台应该与目前国内外主流的机器学习应用开发平台的界面风格保持一致。

2)具有友好的用户界面。

3)新用户学习使用系统的时间少于1小时。

6. 安全性
定义系统在向合法用户提供服务的同时,阻止非授权用户使用的能力。
指标

检测攻击、抵抗攻击、从攻击中恢复

机密性:保证信息不泄露给未授权的用户、实体或过程。

完整性:保证信息的完整和准确,防止信息被非法修改。

不可否认性:信息交换的双方不能否认其在交换过程中发送或接收信息的行为。

可控性:保证对信息的传播及内容具有控制的能力,防止为非法者所用。

架构策略入侵检测IDS、入侵防护IPS、追踪审计、检测攻击
质量属性场景

1)系统需要为所有的用户操作行为进行详细记录,便于后期查阅与审计。

2) 系统支持对恶意攻击行为进行检测与报警。

3)预防核心数据库被非授权用户访问。

4)系统应对用户信息数据库的所有操作都进行完整记录。

5)用户密码需要加密传输。

6)用户操作停滞时间超过一定时限需要重新登录验证

7. 可靠性
定义系统能够持续无故障运行的能力,在意外或错误使用的情况下,维持软件系统的功能特性的基本能力。
指标

容错:在错误发生时,确保系统正确的行为,并进行内部修复。

健壮性:应用程序不受错误使用和错误输入的影响,在发生意外错误时,确保应用系统处于预先定义好的状态,保证软件按照某种已经定义好的方式终止执行。

8. 功能性
定义系统能完成所期望的工作的能力。
质量属性场景

1)管理员能够在页面上灵活设置折扣力度规则和促销活动逻辑,设置后即可生效。

2)用户名是系统唯一标识,要求以字母开头,由数字和字母组合而成,长度不少于6个字符。

3)平台用户分为算法工程师、软件工程师和管理员三种角色,不同角色的功能界面有所不同。

4)支持初学者和高级用户两种界面操作模式,用户可根据自己的情况灵活选择合适的模式。

5) 用户目前分为普通用户、银卡用户、金卡用户和白金用户四个等级,后续需要能够根据消费情况进行动态调整。

9. 互操作性
定义指本软件系统与其它系统交换数据和相互调用服务的难易程度。
10. 可变性
定义架构经扩充/变更,而成为新架构的能力。

六大质量属性

1、可用性分析

   可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的。

  

   可用性分析所关注的方面包括:如何检测系统故障,系统故障发生的频度,出现故障时会发生什么情况,允许系统有多长时间非正常运行,什么时候可以安全地出现故障,如何防止故障的发生以及发生故障时要求进行哪种通知。

2、可修改性分析

   可修改性是有关变更的成本问题。可以修改什么(制品)和何时进行变更以及由谁进行变更(环境)。

3、性能分析

   性能是指系统的响应能力。性能与时间有关。事件(中断、消息、用户请求或时间已到)发生时,系统必须做出响应。事件到达和相应有很多特性,但性能基本上与事件发生时,将要耗费系统多长时间做出响应有关。

4、安全性分析

   安全性是衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力。试图突破安全防线的行为被称为攻击,它可以是未经授权试图访问数据或服务,或试图修改数据,也可能是试图使系统拒绝向合法用户提供服务。

安全性系统被刻画为提供如下属性的系统。
认可:交易不能被交易的任何一方拒绝。
保证:交易的各方是所声称的人的属性。如当客户发送一个信用卡的卡号到商家时,该商家就是用户所认可的商家。
审核:系统的内部跟踪属性。如客户转账时,系统会把转账过程记录下来。
机密性:未经授权不能访问。
可用性:系统用于合法用途的属性。

5、可测试性分析

      软件可测试性是指通过测试揭示软件缺陷的容易程度。

特别地,假设软件中至少有一个错误,软件在下次测试运行时不能正常工作的可能性。
可测试性的响应度量处理的是测试在发现缺陷方面的效率以及想要达到某个期望的覆盖范围,需要用多长时间进行测试。

6、易用性分析

   易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。

7.构架的质量属性
  1.概念完整性
    在各个层次上统一系统设计。构架应该以类似的方式做类似的事情。
  2.正确性和完整性
    构架能够满足系统的各种需求及运行时的资源要求。
  3.可构建性
    构建系统的难易程度。保证能够由指定的开发小组在规定的时间里完成系统开发。

8.功能、架构和质量属性

  1.功能和构架之间的关系
    功能是构架设计的必要条件而非充分条件,因为具有相同功能的不同构架,它们的差别在于质量。
    随着软件开发水平的提高,如何满足功能已不是软件开发的主要矛盾,也不是构架层次上主要考虑的问题,构架设计主要考虑如何满足质量上的要求,但软件构架会限制各模块的功能划分,功能对构架设计有间接的影响。
  2.构架和质量属性的关系
    构架是获取许多质量属性的基础(上梁不正下梁歪)。
    在构架设计过程中就应考虑到这些质量属性,并在构架层次上进行评估。
    质量属性既和构架有关,也和具体实现有关。
    例如,系统设计时一般都会考虑设置密码来提供安全性,可是如果实现时SQL语句没写好,则可能被注入攻击。
  3.质量属性之间的关系
    一个质量属性的获取对其他质量属性可能产生正面或负面的影响。
    几乎每个质量属性都会对系统性能产生消极影响。
    例如:最开始银行没有为网上银行的客户提供从客户端到网站之间的加密手段,银行获得了性能和成本上的好处,但牺牲了客户的安全性,导致假网站频出,很多人不敢使用网银业务。后来,银行给客户提供了各种加密手段,如支付宝、UKey等,花费了一定的成本和牺牲了部分性能,但客户获得了安全。现在网银用户和网上交易额逐年递增。

 二、质量属性战术

1.可用性战术分类:
  1.错误检测
    命令/响应----一个组件发出信号,收到回复(主动询问)
    心跳(dead man计时器)----组件定期发出一个心跳信息。还可用于传递数据。
    异常----异常处理程序通常将错误在语义上转换为可以被处理的形式,异常通常与引入异常的程序通常在一个进程。
  2.错误恢复(不是万能的,都是致命的)
    表决----多数规则或首选组件(类同MapReduce)
    主动冗余(热重启)----所有的冗余组件都以并行的方式对事件作出响应,他们的状态都相同,但每次只能使用一个组件的响应而丢弃其余组件的响应
    被动冗余(暖重启/双冗余/三冗余)----主组件对事件做出相应并通知其他备用组件必须进行的状态更新。主组件负责状态同步。
    备件
    shadow操作
    状态再同步
    检查点/回滚
  3.错误预防
    从服务中删除
    事务
    进程监视器
2.可修改性战术分类:
  可修改性:牵一发而动全身,模块之间存在调用关系,模块内部的修改不能影响模块间的调用
  1.局部化修改
    维持语义的一致性----抽象通用服务
    预期期望的变更----变更的影响最小化
    泛化该模块
    限制可能的选择
  2.防止连锁反应----修改某个模块并不影响其他模块
    隐藏信息
    维持现有的接口
    限制通信路径
    使用仲裁者
  3.推迟绑定时间

例子

 (1)可用性:

    场景:天猫双十一购物狂欢节

    刺激源:海量用户

    刺激:过多用户涌入抢购,系统出现崩溃的状态

    制品:处理系统崩溃的处理器

    环境:正常操作

    响应:淘宝网监控系统记录,处理人员进行紧急处理

    响应度量:短时间内恢复系统正常运行

  (2)可修改性:

     场景:系统进行升级

     刺激源:开发人员

     刺激:改变页面的形态,增加少许功能、

     制品:升级完后的系统

     环境:设计时

     响应:修改了用户的操作页面,未产生副作用

    响应度量:在15分钟左右完成升级更改

  (3)性能:

    场景:天猫双十一购物狂欢节

    刺激源:用户

    刺激:进行疯狂购物交易

    制品:系统

    环境:在正常操作下

    响应:大量的交易同时被处理

    响应度量:每个交易平均等待时间为3s

   (4)安全性:

    场景:黑客想要盗窃用户信息

    刺激源:黑客

    刺激:试图通过某些手段窃取用户的信息

    制品:淘宝用户信息

    环境:用户不在线时

    响应:对访问者进行身份上的验证

    响应度量:淘宝安全系统阻止黑客访问用户信息

   (5)可测试性:

    场景:一个马上要执行的系统功能

    刺激源:系统测试人员

    刺激:对系统功能执行测试

    制品:系统的某个功能

    环境:功能要部署时

    响应:提供对状态值的访问、提供所要计算的值,准备测试环境

    响应度量:3个小时测试了85%

  (6)易用性:

    场景:用户误将某物品移入到购物车

    刺激源:用户

    刺激:用户想要将物品移出

    制品:系统

    环境;系统运行时

    响应:希望快速完成操作

    响应度量:在1s内完成撤销操作

易用性评估中,以下哪项不是评估的关键指标?
A. 使用效率
B. 用户满意度
C. 代码复杂度
D. 易学性

在软件架构评估中,可测试性的哪一个属性是指软件状态变化或者输出结果能够被轻易观察到?
A. 可观察性
B. 可控制性
C. 可隔离性
D. 自动化支持

哪一个软件架构评估方法强调了与利益相关者的沟通和反馈?
A. ATAM
B. SAAM
C. CBA
D. FMEA

关于软件易用性的描述中,错误的是?
A. 易用性与用户如何感知软件产品密切相关。
B. 易用性仅取决于软件界面的设计。
C. 易用性评估通常考虑用户完成任务的效率。
D. 提高软件的易用性可以增加用户满意度。

软件可测试性评估中,以下哪项不是主要考虑的属性?
A. 可观察性
B. 可控制性
C. 代码执行速度
D. 可隔离性

ATAM评估方法的主要目的是什么?
A. 确定软件的最终用户数量
B. 评估软件架构的质量属性
C. 测试软件的性能
D. 编写软件需求文档

在软件架构评估中,定义具体的质量属性场景的目的是什么?
A. 降低软件开发成本
B. 增加软件的用户群
C. 衡量软件架构在特定条件下的表现
D. 确定软件发布日期

对于提高软件的可测试性,以下哪项措施是有效的?
A. 减少代码注释
B. 增加软件的功能模块
C. 实现代码的模块化设计
D. 提高软件的运行速度

易用性中的“用户满意度”主要是通过什么方式来衡量的?
A. 代码质量分析
B. 用户访谈和问卷
C. 性能测试结果
D. 安全漏洞报告

在进行软件架构评估时,关于可隔离性的正确描述是?
A. 确保软件的各个模块可以在不同的环境中运行
B. 确保软件在遭受攻击时部分功能仍可正常使用
C. 确保软件的各个部件可以被单独测试,不受其他部件的干扰
D. 确保软件的开发和测试可以在不同的团队中独立进行

(2)答案和解析
答案:C。代码复杂度属于软件的内部质量属性,而非直接影响用户体验的易用性指标。

答案:A。可观察性是指软件状态变化或输出结果能够被轻易观察到,是可测试性的一个重要属性。

答案:A。ATAM(架构贸易分析方法)强调与利益相关者的沟通和反馈,以确保软件架构能满足关键质量属性的需求。

答案:B。易用性不仅仅取决于软件界面的设计,还涉及到用户使用软件完成任务的效率、易学性以及满意度等多个方面。

答案:C。代码执行速度通常被视为性能的一部分,而不是可测试性的直接属性。

答案:B。ATAM的主要目的是评估软件架构对于满足既定的质量属性(如性能、可靠性、可测试性等)的能力。

答案:C。定义具体的质量属性场景的目的是为了衡量软件架构在特定条件下的表现,从而评估其是否满足相关质量标准。

答案:C。实现代码的模块化设计可以提高软件的可测试性,因为这样可以更容易地对软件的各个部分进行独立测试。

答案:B。用户满意度主要通过用户访谈和问卷调查等方式来衡量,这些方法可以直接收集用户对软件使用体验的反馈。

答案:C。可隔离性指的是软件的各个部件可以被单独测试,不受其他部件的干扰,这对于保证测试的有效性和效率非常重要。



(1)题目
下列哪项是评估软件架构性能时的关键指标?
A. 用户满意度
B. 代码复杂度
C. 响应时间
D. 安全性

在软件架构的可靠性评估中,以下哪项不是重点考察的内容?
A. 容错性
B. 可用性
C. 健壮性
D. 安全性

软件的可用性评估不包括下面哪项?
A. 易于学习
B. 易于使用
C. 高响应速度
D. 高吞吐量

关于软件架构的可修改性,下列描述中错误的是?
A. 可修改性包括可维护性和可扩展性
B. 结构重组不属于可修改性的考虑范围
C. 可移植性是可修改性的一个重要方面
D. 可修改性指软件方便进行修改和更新的能力

关于软件架构的功能性,以下描述正确的是?
A. 仅与软件的性能指标相关
B. 指软件满足特定功能需求的程度
C. 功能性与可用性无关
D. 所有软件具有相同的功能性要求

可变性在软件架构评估中指的是什么?
A. 软件可以在不同平台上运行
B. 软件可以抵御外部攻击
C. 软件在不同环境下功能和性能的稳定性
D. 软件可以轻松地被用户修改

互操作性在软件架构中主要关注什么?
A. 不同软件之间的通信速度
B. 不同系统或组件之间的有效沟通和协作能力
C. 同一软件在不同操作系统中的表现
D. 软件与用户之间的互动方式

容错性在软件架构中的意义是什么?
A. 防止用户犯错
B. 系统在遇到错误时仍能正常运行
C. 提高系统的处理速度
D. 保护系统免受网络攻击

在软件架构评估中,安全性评估主要包括哪方面?
A. 响应时间
B. 用户访问控制
C. 代码的可读性
D. 系统的可移植性

软件架构的可扩展性主要指的是什么?
A. 系统能够适应用户数量的增加
B. 系统能够增加新的功能
C. 系统的代码易于理解
D. 系统能够抵抗外部攻击

(2)答案和解析
答案:C。解析:性能评估主要关注的是系统的响应时间、处理速度和吞吐量等指标。
答案:B。解析:可靠性评估重点考察系统的容错性和健壮性,而可用性属于另一个独立的质量属性。
答案:D。解析:可用性评估主要关注系统的易用性和易学性,而高吞吐量是性能的指标。
答案:B。解析:可修改性包括可维护性、可扩展性、结构重组和可移植性,结构重组也是可修改性的一个重要考虑范畴。
答案:B。解析:功能性指的是软件能够满足特定功能需求的程度,它关注软件是否能实现既定的功能。
答案:C。解析:可变性指的是软件在不同环境或条件下能够保持其功能和性能的稳定性。
答案:B。解析:互操作性关注的是不同系统或组件之间能够有效沟通和协作的能力,这对于系统集成和数据交换非常重要。
答案:B。解析:容错性是指系统在遇到错误时能够继续正常运行的能力,这是系统可靠性的一个重要方面。
答案:B。解析:安全性评估主要关注系统如何保护自身免受未授权访问和攻击,用户访问控制是其中的一个重要方面。
答案:A。解析:可扩展性指的是系统能够适应性能需求增长的能力,如用户数量的增加,这对于确保长期的系统性能非常关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫1981

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值