高级系统架构师笔记——系统质量属性与架构评估(1)软件系统质量属性
(1)软件系统质量属性
- 软件系统质量属性
 - 质量属性的概念
 - 开发期质量属性
 - 运行期质量属性
 
- 面向架构评估的质量属性
 - 性能
 - 可靠性
 - 可用性
 - 安全性
 - 可修改性
 - 功能性
 - 可变性
 - 互操作性
 
软件系统质量属性
质量属性的概念
软件系统的质量就是“软件系统与明确地和隐含地定义的需求相一致的程度”。根据GB/T16260.1定义,从管理角
 度对软件系统质量进行度量,可将影响软件质量的主要因素划分为6种维度特性:
开发期质量属性
开发期质量属性主要指在软件开发阶段所关注的质量属性,主要包含6个方面。
运行期质量属性
运行期质量属性主要指在软件运行阶段所关注的质量属性,主要包含7个方面。
面向架构评估的质量属性
为了评价一个软件系统,特别是软件系统的架构,需要进行架构评估。在架构评估过程中,评估人员所关注的是系统的质量属性。评估方法所普遍关注的质量属性有以下几种。
性能
定义:指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。
常用指标:响应时间、吞吐量
设计策略:优先级队列、增加计算资源、减少计算开销、引入并发机制、采用资源调度
可靠性
定义:软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。
常用指标:平均失效等待时间(Mean Time To Failure,MTTF)、平均失效间隔时间(Mean Time Between Failure,MTBF)。在失效率为常数和修复时间很短的情况下,MTTF和MTBF几乎相等。
设计策略:心跳、Ping/Echo、冗余、选举、异常处理、监听机制。
可用性
定义:系统能够正常运行的时间比例。
常用指标:故障间隔时间
设计策略:心跳、Ping/Echo、冗余、选举、异常处理、监听机制。
安全性
定义:系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。
常用指标:机密性、完整性、不可否认性、可控性
设计策略:入侵检测、用户认证、用户授权、追踪审计
可修改性
定义:指能够快速地以较高的性价比对系统进行变更的能力。
常用指标:可移植性、可扩展性、结构重组、可移植性
设计策略:接口-实现分类、抽象、信息隐蔽
功能性
定义:系统能完成所期望的工作的能力
可变性
定义:指架构经扩充或变更而成为新架构的能力
互操作性
定义:作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。为了支持互操作性,软件架构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件架构。
