十五、系统质量属性和架构评估

1,质量属性

软件系统属性包括功能属性和质量属性

架构的基本需求就是关注软件系统质量属性。

为了精确、定量地表达系统的质量属性,通常会采用质量属性场景的方式进行描述。在确定软件系统架构,精确描述质量属性场景后,就需要对系统架构进行评估。软件系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它也可以灵活地运用于软件架构评审等工作。

软件系统质量属性(QualityAttribute)是一个系统的可测量或者可测试的属性,用来描述系统满足利益相关者需求的程度。简单来说,软件系统质量属性是指软件系统满足用户需求的程度,是衡量软件系统质量的重要指标。

分为开发期质量属性运行期质量属性

开发期质量属性(关注者是开发者):易理解性、可拓展性(增加新的功能)、可重用性(重用软件系统或某一部分的难易程度)、可测试性、可维护性、可移植性(转移新环境)

运行期质量属性(关注者是开发者):性能(速度、吞吐量、容量)、安全性、可伸缩性(增加服务器)、互操作性(和其它系统数据交换调用)、可靠性(一段时间无故障)、可用性(受到问题的恢复可用能力)、鲁棒性(故障下运行的能力,健壮性或容错性)

架构评估的质量属性:

1,性能:系统的响应能力。响应时间、吞吐量

设计策略:优先级队列、增加计算资源、加入并发机制

2,可靠性:不发生故障的能力。MTBF(平均故障间隔时间)=MTTF(平均无故障时间)+MTTR(平均故障修复时间)

设计策略:心跳、ping/Echo、冗余、选举

3,可用性:系统处于可操作的时间比例。(选不出来选可用)

设计策略:心跳、ping/Echo、冗余、选举。

4,安全性:保密性、完整性、不可抵赖性、可控性。

设计策略:入侵检测、用户认证、用户授权、追踪审计

5,可修改性。以更小的代价变更系统

设计策略:接口-实现分离、抽象、信息隐蔽

6,功能性;完成期望工作的能力。

7,可变性(可拓展性):增加功能的能力。

8,互操作性:和其它系统数据交换调用的能力。

9,易用性:用户界面交互使用的难度。

质量属性场景:

刺激源(谁)

刺激(做什么)

环境(在什么场景下)

制品(对哪个功能和模块)

响应(得到什么反馈)

响应度量(对反馈进行度量)

在双11, 大量用户 对 网站 产生 访问(添加订单)得到 网站快速响应(通过负载均衡) 监测指标:服务器资源利用率、加载时间

在环境下,刺激源 对 制品 产生 刺激 得到 响应, 对响应度量。

2,架构评估

敏感点:为了实现某一特定的质量属性,一个或者多个构件所具有的特性

权衡点:是影响多个质量属性的特性,是多个质量属性的敏感点

软件架构评估是在架构设计之前,系统设计之后,因此与设计、实现、测试都没有关系。

评估的目的是为了评估所采用的架构是否能解决软件系统需求,有时还需要针对是否满足质量属性需求。

系统架构评估的三种方式:

1,基于调查问卷的方式:要求评估人员对领域和架构具有一定的了解

2,基于度量的方式;要求评估人员对建构的技术细节和度量标准有一定的了解。(数据呈现)

3,基于场景的方式:场景是从风险承担者的角度对与系统交互的简单描述。(场景模拟。4+1视图中的场景)

SAAM(基于场景的架构分析方法) 非功能质量属性的分析方法。架构描述:功能、结构、分配.主要分析可修改性

SAAM的输入:问题描述、需求声明、架构描述 评估过程:场景开发、架构描述、单个场景评估、场景交互和总结评估。

ATAM(架构权衡分析法) 一种系统架构评估方法,针对性能、可用性、安全性、可修改性评估权衡。整个评估过程强调属性(质量属性)作为架构评估的核心概念

ATAM分为四个主要的活动领域:场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、架构评审与折中。

ATAM采用质量属性效用数方法评估

效用树的结构包括:树根-质量属性-属性分类-质量属性场景(通常不超过50个)(叶子节点)

优先级对(重要度、难易度)H/M/L eg: (H,L)

ATAM的阶段解释:

1描述和介绍阶段

2调查和分析阶段 产出质量属性效应树

3测试阶段 验证架构是否满足质量属性需求

4报告阶段 评估的结果、提供改进建议,并为决策者提供决策依据

CBAM(成本效益分析方法)ATAM的补充,投资收益率来分析

3,中间件

中间件:位于客户机/服务器的操作系统之上,管理计算机资源和网络通信。

中间件是基于分布式处理的软件,最突出的特点是其网络通信功能

分类;

数据库访问中间件ODBC JDBC

远程过程调用(RPC):

面向消息中间件(MOM):RabbitMQ

分布式对象中间件:OMG的CORBA Sun的RNI/EJB Microsoft的DCOM

事务中间件(TPM):事务处理监控器