质量属性和架构评估
软件系统的质量属性
这里涉及到的质量属性是软件系统开发和运行阶段涉及到的质量属性,了解即可。
可以将软件系统的质量属性分为 开发期质量属性和运行期质量属性2个部分。
开发期质量属性
开发期质量属性主要指 软件开发阶段所关注的质量属性,主要包含 6 个方面。
- 易理解性:指被开发人员理解的难易程度。
- 易扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
- 可重用性:指重用软件系统或某一部分的难易程度。
- 可测试性:对软件测试以证明其满足需求规范的难易程度。
- 可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
- 可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
运行期质量属性
运行期质量属性主要指在 软件运行阶段所关注的质量属性,主要包含 7 个方面。
- 性能: 性能是指软件系统及时提供相应服务的能力,如速度、吞吐量和容量等的要求。
- 安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
- 可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力。
- 互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
- 可靠性:软件系统在一定的时间内持续无故障运行的能力。
- 可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误,恶意攻击,高负载等问题的影响。
- 鲁棒性: 是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力,也称为健壮性或容错性。
架构评估的质量属性
在架构设计已经做好之后,要对架构设计进行一个评审。这就类似需求阶段结束之后 ,要对需求进行评审;设计会有设计评审。
质量属性
每个质量属性都需要掌握三个点:定义、特性、架构里如何设计(策略)达到这个质量属性
性能
指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。
如 响应时间、吞吐量
设计策略:优先级策略、增加计算资源、减少计算开销、引入并发机制、采用资源调度等
可靠性
是指软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。如 MTTF、MTBF、MTTR。
设计策略:心跳、Ping/Echo、冗余、选举。
可用性
是系统 能够正常运行的事件比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的的速度来表示。如 故障间隔时间