系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】
系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】
系统架构设计高级技能 · 软件可靠性分析与设计(三)【系统架构设计师】
现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。
Now everything is for the future of dream weaving wings, let the dream fly in reality.
开发期的质量属性分为以下子属性:
属性 | 说明 |
---|---|
易理解性 | 指设计开发人员理解的难易程度。 |
可扩展性 | 软件因适应新需求变化而增加新功能的能力,也称为灵活性。 |
可重用性 | 指重用软件系统或某一部分的难易程度。 |
可测试性 | 当软件测试以证明其满足需求规范的难易程度。 |
可维护性 | 当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。 |
可移植性 | 将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。 |
运行期的质量属性分为以下子属性:
属性 | 说明 |
---|---|
性能 | 软件系统及时提供相应的服务能力,如速度、吞吐量和容量等。 |
安全性 | 软件系统同时兼顾向合法用户提供服务,以及组织非授权使用的能力 。 |
可伸缩性 | 当用户数和数据量增加时,软件系统维持高服务质量的能力。 |
互操作性 | 软件系统与其他系统交换数据和相互调用服务的难易程度。 |
可靠性 | 软件系统在一定时间内持续无故障运行的能力。 |
可用性 | 系统在一定时间内正常工作的时间所占比例。 |
鲁棒性 | 软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力,也称健壮性或容错性。 |
在架构评估过程中,评估人员所关注的是系统的质量属性。
性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。
例如:
提升性能的策略(性能战术)可以从以下几个方面考虑:
可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。
例如:
提升可用性的策略(可用性战术)可以从以下几个方面考虑:
安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。
例如:
提升安全性的策略(安全性战术)可以从以下几个方面考虑:
可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。
例如:
可修改性分为四个子属性:
可维护性:局部修复使故障对架构的负面影响最小化。
可扩展性:因松散的耦合更易实现新特性/功能,不影响架构。
结构重组:不影响主体进行的灵活配置。
可移植性:适用于多样的环境(硬件平台、语言、操作系统等)。
提升性能的策略(可修改行战术)可以从以下几个方面考虑:
易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。
例如:
软件可测试性是指通过测试揭示软件缺陷的容易程度。
例如:
分为两个子属性:
容错性:出错后仍能保证系统争取运行,且自行修正错误。
健壮性:错误不对系统产生影响,按既定程序忽略错误。
需求的满足程度。
总体架构可变。
通过可视化或接口方式提供更好的交互操作体验。
质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成。
(1)刺激源(Source):某个生成该刺激源的实体(人、计算机系统或者任何其他刺激器)。
(2)刺激(Stimulus):指当刺激到达系统时需要考虑的条件。
(3)环境(Environment):指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
(4)制品(Artifact):某个制品被激励,可能是整个系统,也可能是系统的一部分。
(5)响应(Response):指在激励到达后所采取的行动。
(6)响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。
架构评估的基准是架构质量属性。
敏感点(Sensitivity Point) :是一个或多个构件(和/或构件之间的关系)的特性。
权衡点(Tradeoff Point) :是影响多个质量属性的特性,是多个质量属性的敏感点。
风险点(Risk Point ) :是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
非风险点(Non-Risk Point ) :是指不会带来隐患,一般以“XXX要求是可以实现(或接受)的”方式表达。
例如:
影响体系结构或被体系结构影响的群体。
确定架构质量评估目标的交互机制,一般采用触发机制(刺激)、环境和影响三方面来考虑。
架构的评估方法通常分为3类:
基于调查问卷或检查表的评估方法
是指组织相关人员进行评估,这种方式最简单易行,但是主观性强。
基于度量的评估方法
强调量化指标,最客观,但是这种方式实施难度大,因为需要评估者对系统非常熟悉,不然很难量化清楚各项指标。
基于场景的评估方法
筛选出系统的关键场景,根据系统在不同场景中的表现进行评估,这种方式客观程度介于2者之间,这也是目前较为流行的结构评估方法。
基于场景的方式主要有三种(前2种方式用得比较多):
SAAM,最初用于分析架构可修改性,后扩展到其它质量属性。
SAAM分析评估架构的过程包括5个步骤 ,如下图:
(1)场景开发
(2)架构描述
(3)单个场景评估
(4)场景交互评估
(5)整体评估
架构权衡分析法(ATAM,Architecture Tradeoff Analysis Method)是 在SAAM上发展而来。核心是结合质量属性效用树对系统进行评价 ,确定风险点、敏感点、权衡点,并对系统架构做出决策和折中。整个评估过程 强调以质量属性作为评估核心,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
ATAM分成4个阶段,如下图:
(1)场景和需求收集
(2)架构视图和场景实现
(3)质量模型构造和分析
(4)质量模型折中
质量属性效用树:识别质量属性并排序,主要包含性能、可用性、可修改性、安全性四个方面。
性能:性能延时(将用户数据库存储延迟到了最小值300ms,提供了实时的视频图像),交易吞吐量(使认证服务器的平均吞吐量最大化)。
可修改性:新增产品目录,商业产品修改(已小于20人月的工作量添加CORBA中间件,以小于4人周的工作量更改web界面)。
可用性:硬件故障(若站点A断电,要求在3秒内将任务重定向到站点B,若磁盘出现故障,要求在5分钟内重新启动,要在1-5分钟之内检测并恢复网络故障),商业软件故障。
安全性:数据机密性(信用卡交易在99.999%的时间内是安全的,客户数据库z认证在99.999%的时间内能正常工作),数据完整性。