9.软件质量属性
第一种分类方式
性能
是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数
- 同时支持 1000 并发
- 响应时间小于 1ms
- 显示分辨率达到 4K
性能战术(提升性能)
资源需求
- 提高计算效率
- 减少计算开销
- 管理事件率
- 控制采样频率
资源管理
- 引入并发
- 维持多个副本
- 增加可用资源
资源仲裁
- 资源调度策略
- 先进/先出
- 固定优先级
- 动态优先级
- 静态调试
可靠性
容错
包容错误:出错后系统继续运行
健壮性
出错后系统不能继续运行,但能按已定义好的方式终止执行
可用性
是指系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
- 主服务器故障,1 分钟内切换至备用服务器
- 系统故障,1 小时内修复
- 系统支持 7 * 24 小时工作
可用性战术(提升可用性)
错误检测
- 命令/响应
- 【Ping/Echo】
- 心跳:类似心跳检测仪
- 异常
错误恢复
- 表决
- 冗余【被动/主动】:切换备用服务器
- 备件
错误预防
- 进程监视器
- 事物
- 从服务器删除
安全性
是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性【信息不泄露给未授权的用户】、完整性【防止信息被篡改】、不可否认性【不可抵赖】及可控性【对信息的传播及内容具有控制的能力】
- 可抵御 SQL 注入攻击
- 对计算机的操作都有完整记录
- 用户信息数据库授权必须保证 99.9%可用
安全性战术
抵抗攻击
- 身份验证
- 用户授权
- 数据加密
- 数据完整性
- 限制暴露
- 限制访问
检测攻击
- 入侵检测
从攻击中恢复
- 识别:审计追踪(识别做了哪些非法操作)
- 恢复:冗余【与可用性重叠】
可修改性
是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
可修改性包含四个方面:可维护性、可扩展性、结构重组、可移植性
- 更改系统报表模块,必须在 2 人周内完成
- 对 WEB 界面风格进行修改,修改必须在 4 人月内完成
可修改性战术(提升可修改性)
局部化修改
- 维持语义一致性
- 预期期望的变更
- 泛化模块
- 限制可能的选择
- 抽象通用服务
防止连锁反应
- 隐藏信息:私有类型的属性
- 维持现有接口
- 限制通信路径
- 使用仲裁者
推迟绑定时间(EventBus)
- 运行时注册
- 配置文件
- 多态
- 组件更换
- 遵守已定义的协议
功能性
可变性
互操作性
(补充)易用性
关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类
- 界面友好
- 新用户学习使用系统的时间不超过 2 个小时
(补充)可测试性
是指通过测试揭示软件缺陷的容易程度
- 提供远程调试接口,支持远程调试
第二种分类方式
开发期
易理解性
指设计被开发人员理解的难易程度
可拓展性
软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性
可重用性
指重用软件系统或某一部分的难易程度
可测试性
对软件测试以证明其满足需求规范的难易程度
可维护性
修改缺陷、增加功能、提高质量属性时,识别修改点并修改的难易程度
可移植性
对软件系统从一个运行环境转移到另一个不同的运行环境的难易程度
运行期
性能
性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等要求
安全性
指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力
可伸缩性
用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力
互操作性
指本软件系统与其他系统交换数据和相互调用服务的难易程度
可靠性
软件系统一定时间内持续无故障运行的能力
可用性
系统在一定时间内正常工作时间所占的比例。可用性会受到系统错误,恶意攻击,高负载等问题的影响
鲁棒性
软件系统在非正常情况(非法操作、软硬件故障等)下仍能够正常运行的能力,也称为健壮性或容错性