质量属性
1.性能
指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件个数。如响应时间,吞吐量。设计策略(如何提高架构性能):优先级队列,增加计算资源,减少计算开销,引入并发机制,采用资源调度等。
2.可靠性
指软件系统在意外或者错误使用的情况下维持软件系统功能特性的基本能力。如 MTTF(平均无故障时间) ,MTTR(平均故障修复时间),MTBF(平均故障间隔时间)。设计策略(如何保证可靠性):心跳,冗余,选举,Ping/Echo
3.可用性
是系统能正常运行的时间比例,经常用两次故障之间的时间长度或出现故障时系统能够恢复的正常速度来表示。设计策略(如何保证可靠性):心跳,冗余,选举,Ping/Echo。
4.安全性
指系统在向合法用户提供服务的同时能够阻止非授权用户访问或拒绝服务的能力。如保密性,完整性,不可抵赖性,可控性。设计策略(如何保证安全性):入侵检测,用户认证,用户授权,追踪审计。
5.可修改性
指能够快速的以较高的性价比对系统进行变更的能力,设计策略(如何保证可修改性):接口 - 实现分离,抽象,消息隐藏。
6.功能性
指系统能够完成工作的能力,一项任务的完成需要系统中许多或大多数构件的相互协助。
7.可变性
指体系结构经过扩充或者变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些方面要不同于原有的体系结构。(体系结构就是架构,翻译不同而已)
8.互操作性
作为系统组成部分的软件并不是独立存在的,经常与其他系统或自身环境相互作用,为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。
必背概念
软件架构风格
指描述软件系统组织方式的惯用模式。组织方式描述了系统的组成构件,以及这些构件的连接方式。惯用模式反映了众多系统所共有的结构和语义。
架构风险
指架构设计中潜在的,存在问题的架构决策所带来的隐患。
风险点与非风险点
可能引起风险的因素,可称为风险点。某个做法如果有隐患,有可能导致一些问题,即为风险点。而如果某件事是可行的,可接受的,则为非风险点。
敏感点
是为了实现某个特定的质量属性,一个或多个构件所具有的特性(针对一个质量属性)
权衡点
是影响多个质量属性的特性,是多个质量属性的敏感点