系统质量属性是系统架构师考试的重点章节,案例第一题几乎是必考的,而且难度也偏低,一般都是必须要拿到的分
质量属性分类
- 开发期质量属性:包括易理解性、可扩展性(灵活性)、可重用性、可测试性、可维护性、可移植性
- 运行期质量属性:包括性能、安全性、可伸缩性、互操作性、可靠性、可用性、鲁棒性
面向架构评估的质量属性
性能
是指系统的响应能力,即要经过多长时间才能对某个事件作出响应,或者在某段时间内系统所能处理的事件的个数。
性能主要措施有:
- 资源需求:包括提高计算效率、减少计算开销、管理事件率、控制采样频率
- 资源管理:包括引入并发、维持多个副本、增加可用资源
- 资源仲裁:包括采用资源调度策略、优先级队列等等
注意:一般选择题可能会同时出现引入并发和资源仲裁,如果题目中涉及优先级相关,一般都是选择资源仲裁
可靠性
是指软件系统在应用或系统错误面前,在意外或者错误使用的情况下维持软件系统的功能特性的基本能力。可靠性通常使用平均失效等待时间MTTF和平均失效间隔时间MTBF来衡量。在失效率为常数和修复时间很短的情况下,MTTF和MTBF几乎相等。可靠性包括:
- 容错:目的是在错误发生时确保系统正确的行为,并进行内部修复
- 健壮性:保护应用程序不受错误使用和错误输入的影响,在发生意外错误事件时确保应用系统处于预先定义好的状态
可用性
是系统能够正常运行的时间比例。一般考试可靠性和可用性不会明显区分,都均指可用性
可用性主要措施有:
- 错误检测:命令/响应(Ping/Echo)、心跳机制
- 错误恢复:表决、冗余(主动/被动)、备件
- 错误预防:进程监视器等
注意这里的冗余和前面性能质量属性提到的维持多个副本区别:性能质量属性中维持多个副本是指多个副本都提供服务 ,来保证系统应用的系统,最常见的比如数据库的主从;可用性质量属性的冗余是指增加冗余节点,这个冗余节点平时不提供服务,等主节点挂了再启用从而保证系统可用。
安全性
指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性包括:
- 机密性:保证信息不泄漏给未授权的用户、实体或过程
- 完整性:保证信息的完整和准确,防止信息被非法修改
- 不可否认性:指信息交换的双方不能否认其在交换过程中发送信息或接收信息的行为
- 可控性:保证对信息的传播及内容具有控制的能力,防止为非法者所用
安全性主要措施有:
- 抵抗攻击:包括身份验证、用户授权、限制访问等
- 检测攻击:包括入侵检测
- 从攻击中恢复:包括审计追踪
可修改性
是指能够快速地以较高的性价比对系统进行变更的能力。主要包括以下几个方面
- 可维护性:主要体现在问题的修复上,在错误发生后修复软件系统
- 可扩展性:关注的是使用新特性来扩展软件系统,以及使用改进版方式替换构件并删除不需要或不必要的特性和构件
- 结构重组:处理的是重新组织软件系统的构件及构件间的关系
- 可移植性:使软件系统适用于多种硬件平台、用户界面、操作系统、编程语言或编译器
功能性
系统能够完成所期望的工作的能力
可变性
指架构经扩充或变更而成为新架构的能力
互操作性
指的是程序和用其他编程语言编写的软件系统的交互作用
易用性
关注的是对用户来说完成某个期望任务容易程度和系统所提供的用户支持的种类
可测试性
指通过测试揭示软件缺陷的容易程度
质量属性场景描述
质量属性场景主要由六部分组成
- 刺激源:指的是某个生成该刺激的实体(如人、计算机系统或其他刺激器)
- 刺激:指当刺激到达系统时需要考虑的条件
- 环境:指刺激在某些条件内发生。当刺激发生时,系统可能处于过载、运行或者其他情况
- 制品:某个制品被激励。制品可能是整个系统,也可能是系统的一部分
- 响应:指在激励到达后所采取的行动
- 响应度量:当响应发生时,能够以某种方式对其进行度量
举个例子,以春节抢票中的性能场景为例
刺激源:即无数抢票的用户、或者抢票的程序
刺激:用户同时在线抢票
环境:12306系统处于正常运行中
制品:12306系统
响应:抢票请求被处理
响应度量:请求的平均响应时间,比如2秒等