夜雨聆风学习资料网

ARTICLE · 1055870

软考架构 | 8.1 软件系统质量属性

软考架构 | 8.1 软件系统质量属性

8.1 软件系统质量属性 ★★★★★

8.1.1 质量属性概念 ★★★★☆

软件系统的质量就是“软件系统与需求相一致的程度”。

影响软件质量的主要因素划分为6种维度特性:功能性、可靠性、易用性、效率、维护性与可移植性。其中

功能性包括适合性、准确性、互操作性、依从性、安全性;

可靠性包括容错性、易恢复性、成熟性;

易用性包括易学性、易理解性、易操作 性;

效率包括资源特性和时间特性;

维护性包括可测试性、可修改性、稳定性和易分析性;

可移植性包括适应性、易安装性、一致性和可替换性。

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

基于软件系统的生命周期,可以将软件系统的质量属性分为开发期质量属性和运行期质量属性2个部分。

1.开发期质量属性

在软件开发阶段所关注的质量属性,主要包含6个方面。

(1)易理解性:设计被开发人员理解的难易程度。

(2)可扩展性:软件增加新功能的能力,也称为灵活性。

(3)可重用性:重用软件系统或某一部分的难易程度。

(4)可测试性:对软件测试以证明其满足需求规范的难易程度。

(5)可维护性:当需要修改、改动时,识别修改点并实施修改的难易程度。

(6)可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。

2.运行期质量属性

在软件运行阶段所关注的质量属性,主要包含7个方面。

(1)性能:软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。

(2)安全性:软件系统向合法用户提供服务,阻止非授权使用的能力。

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

(4)互操作性:软件系统与其他系统交换数据和相互调用服务的难易程度。

(5)可靠性:软件系统在一定的时间内持续无故障运行的能力。

(6)可用性:系统在一定时间内正常工作的时间所占的比例。受系统错误, 恶意攻击,高负载等问题的影响。

(7)鲁棒性:软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生故障等)下仍能够正常运行的能力,也称健壮性或容错性。

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

在架构评估过程中,普遍关注的质量属性:性能、可靠性、可用性、安全性

1.性能

性能 (Performance) 是指系统的响应能力,经常用单位时间内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量表示。性能测试经常要使用基准测试程序。

2.可靠性

可靠性 (Reliability) 是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。通常用来衡量在规定的条件和时间内,软件完成规定功能的能力。

可靠性通常用平均失效等待时间 (Mean Time To Failure, MTTF) 和平均失效间隔时间(MeanTimeBetweenFailure,MTBF)来衡量。在失效率为常数和修复时间很短的情况下,MTTF和MTBF几乎相等。可靠性可以分为两个方面。

(1)容错。在错误发生时确保系统正确的行为,并进行内部“修复”。

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

3.可用性

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

4.安全性

安全性 (Security) 是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。

安全性可根据系统可能受到的安全威胁类型,可划分为机密性、完整性、不可否认性及可控性等特性。其中,

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

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

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

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

5.可修改性

可修改性 (Modifability) 是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准,通过考查这些变更的代价来衡量可修改性。可修改性包含以下4个方面。

(1)可维护性 (Maintainability)。主要体现在问题的修复上,在错误发生后“修复”软件系统。

(2)可扩展性 (Extendibility)。使用新特性来扩展软件系统,支持构件的替换和删除。软件系统需要低耦合的构件。

(3)结构重组 (Reassemble)。重新组织软件系统的构件及构件间的关系,。软件系统需要精心设计构件之间的关系。理想情况下,允许开发人员在灵活地配置构件。

(4)可移植性 (Portability)。使软件系统适用于多种硬件平台、用户界面、操作系统、编程语言或编译器。需要按照硬件、软件无关的方式组织软件系统。 

6.功能性

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

7.可变性

可变性 (Changeability) 是指架构经扩充或变更而成为新架构的能力。这种新架构应该符合预先定义的规则,在某些具体方面不同于原有的架构。

8.互操作性

软件系统通常与其他系统或自身环境相互作用。软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。

常考质量属性

 (1)可用性。提升可用性的策略考虑: 

 错误检测:心跳Ping/Echo、异常。 

 错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。 

 错误避免:服务下线、事务、进程监控器。 

(2)性能。提升性能的策略考虑: 

 资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。 

 资源管理:并发机制、增加资源。

 资源仲裁:先来先服务、固定优先级、动态优先级、静态调度。 

(3)可修改性。提升性能的策略考虑: 

 局部化修改:高内聚低耦合、预测变更、使模块通用。 

 防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。 

 推迟绑定时间:运行时注册、多态、配置文件。 

(4)安全性。提升安全性的策略考虑: 

 抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。 

 检测攻击:入侵检测系统。 

 从攻击中恢复:恢复状态、识别攻击者。  

8.1.3 质量属性场景描述 ★★★★★

为了精确描述软件系统的质量属性,通常采用质量属性场景 (Quality Attribute Scenario) 作为描述质量属性的手段。

质量属性场景是一种面向特定质量属性的需求。它由6部分组成:

● 刺激源 (Source):  生成该刺激的实体(人、计算机系统或者任何其他刺激器)。

● 刺激 (Stimulus):  刺激到达系统时可能产生的影响(即需要考虑和关注的情况);

● 环境 (Environment): 该刺激在某些条件内发生。当激励发生时,系统可能处于过载、 运行或者其他情况。

● 制品 (Artifact): 某个制品被激励。这可能是整个系统或系统的一部分。

● 响应 (Response):  刺激到达后所采取的行动。

● 响应度量 (Measurement):   当响应发生时,能够以某种方式对其进行度量,以对 需求进行测试。

质量属性场景主要关注可用性、可修改性、性能、可测试性、易用性和安全性等6类质量属性。

1.可用性质量属性场景

可用性质量属性场景所关注的方面包括系统故障发生的频率、出现故障时会发生什么情况、 允许系统有多长是非正常运行、什么时候可以安全地出现故障、如何防止故障的发生以及发生 故障时要求进行哪种通知,表8-1给出了详细描述。

表8-1 可用性质量属性场景描述

相关学习资料