质量属性
软件质量属性包括性能、可用性、安全性、可修改性、功能性、可变性、互操作性,重点把握性能、可用性、安全性、可修改性,可用性和可靠性同时出现时,优先选择可用性。

1.性能
性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或在某段时间内系统所能处理的事件的个数(响应时间、吞吐量)。
例如:
(1)同时支持1000并发;
(2)响应时间小于1s;
(3)显示分辨率达到4K;
提高性能策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度等。

2.可用性
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
例如:
(1)主服务器故障,1分钟内切换至备用服务器;
(2)系统故障,1小时内修复;
(3)系统支持7✖24小时工作;
设计策略:心跳、Ping/Echo、冗余、选举。

3.安全性
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可分为机密性(信息不泄露给非授权用户)、完整性(防止信息被篡改)、不可否认性(不可抵赖)、可控性(对信息的传播及内容具有控制的能力)。
例如:
(1)可抵御SQL注入攻击;
(2)对计算机的操作都有完整记录;
(3)用户信息数据库授权必须保证99.99%;
设计策略: 入侵检测、用户认证、用户授权、追踪审计。

4.可修改性
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
例如:
(1)更改系统报表模块,必须在2人周内完成;
(2)对Web界面风格进行修改,必须在4人月内完成。
**设计策略:**接口-实现分类、抽象、信息隐藏;

5、易用性
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。
例如:
(1)界面友好;
(2)新用户学习使用系统时间不超过2小时;
6.可测试性
软件可测试性是指通过测试揭示软件缺陷的容易程度。
例如:
(1)提供远程调试接口,支持远程调试。
敏感点与权衡点
敏感点:一个或多个构件的特征,影响系统某个质量属性。
权衡点:影响系统多个质量属性,是多个质量属性的敏感点。
风险点与非风险点
风险点:架构设计中潜在的、存在问题的架构决策所带来的隐患。
非风险点:不会带来隐患的架构决策。
例如:
(1)对交易请求处理时间的要求将影响系统的数据传输协议和处理过程的设计。(敏感点,只影响性能);
(2)假设每秒中用户交易请求的数量是10个,处理请求的时间为30毫秒,则“在1秒内完成用户的交易请求”,这一要求可以实现。(非风险点,关键字可以实现)
(3)目前对系统信用卡支付业务逻辑的描述尚未达成共识,这可能导致部分业务功能模块的重复,影响系统的可修改性;(风险点,关键字可能导致)
(4)更改加密的级别对安全和性能产生影响。(权衡点,同时影响了安全性和性能两个质量属性)
架构评估方法
- 基于调查问卷(检查表)的方式
- 基于度量的方式
- 基于场景的方式

基于场景的评估方法
【场景】是从是从风险承担者的角度与系统交互的简短描述。
场景可从六个方面进行描述:刺激源、刺激、制品、环境、响应、响应度量。

质量属性场景:时一种面向特定质量属性的需求,由6个部分组成:
- 刺激源(Source):这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
- 刺激(Stimulus):该刺激是当刺激到达系统时需要考虑的条件。
- 环境(Environment):该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或其他情况。
- 制品(Artifact):某个制品被激励。这可能是整个系统,也可能是系统的一部分。
- 响应(Response):该响应是在激励到达后采取的行动。
- 响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。
可修改性质量属性场景描述实例:
场景要素 | 可能的情况 |
---|---|
刺激源 | 最终用户、开发人员、系统管理员 |
刺激 | 希望增加、修改、删除、改变功能、质量属性、容量等 |
环境 | 系统设计时、编译时、构建时、运行时 |
制品 | 系统用户界面、平台、环境或与目标系统交互的系统 |
响应 | 查找架构中需要修改的位置,进行修改且不会影响其他功能,对所做的修改进行测试,部署所做的修改 |
响应度量 | 根据所影响元素的数量度量的成本、努力、资金;该修改对其他功能或质量属性所造成影响的程度 |
基于场景的评估方法分为3个:
【软件架构分析法(SAAM)】
最初关注可修改性,后扩充到可移植性、可扩充性等。
【架构权衡分析法(ATAM)】
由SAAM发展而来,主要争对:性能、实用性(可用性)、安全性、可修改性。
【成本效益分析法(SAAM)】
在ATAM基础上建立的,软件的“经济”模型。
软件架构分析法(SAAM)
SAAM:最初用于分析架构可修改性,后扩展到其他质量属性。
SAAM主要输入的是问题描述、需求声明、架构描述。
SAAM 5个步骤:场景开发、架构描述、单个场景评估、场景交互、总体评估。

架构权衡分析法(ATAM)
ATAM 由SAAM发展起来的,主要针对性能、实用性、安全性、可修改性,在系统开发之前,对这些质量属性进行评价和折中。
ATAM 四个活动领域:
(1)场景和需求收集
(2)架构视图和场景实现
(3)属性模型构造和分析
(4)折中
ATAM 实现步骤

【成本效益分析法(CBAM)】
在ATAM基础上建立的,软件的“经济”模型。
质量效用树
