本文主要是介绍系统架构师考试学习笔记第三篇——架构设计高级知识(10)系统质量属性与架构评估,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本章知识点:
第10课时主要学习软件系统质量属性、系统架构评估以及ATAM方法评估实践等内容。
本课时内容侧重于概念知识,根据以往全国计算机技术与软件专业技术资格(水平)。考试的出题规律,考查的知识点多来源于教材,扩展内容较少。根据考试大纲,本课时知识点会涉及单项选择题(约占8~15分)和下午案例题(25分),论文也会有覆盖。本课时知识架构如图10.1所示。
一、软件系统质量属性
1.基本概念
软件系统质量属性是一个系统的可测量或可测试的属性,基于软件系统的生命周期,可将软件系统的质量属性分为开发期质量属性和运行期质量属性,见表10.1。
属性 | 子属性 | 作用及要点 |
---|---|---|
开发期质量属性 | 易理解性 | 指设计被开发人员理解的难易程度 |
可扩展性 | 软件因适应新需求或需求变化而增加新功能的能力,也称灵活性 | |
可重用性 | 指重用软件系统或某一部分的难易程度 | |
可测试性 | 对软件测试以证明其满足需求规范的难易程度 | |
可维护性 | 当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度 | |
可移植性 | 将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度 | |
运行期质量属性 | 性能 | 软件系统及时提供相应服务的能力,如速度、吞吐量和容量等 |
安全性 | 软件系统同时兼顾向合法用户提供服务,以及组织非授权使用的能力 | |
可伸缩性 | 当用户数和数据量增加时,软件系统维持高服务质量的能力 | |
互操作性 | 软件系统与其他系统交换数据和相互调用服务的难易程度 属性 | |
可靠性 | 软件系统在一定的时间内持续无故障运行的能力 | |
可用性 | 系统在一定时间内正常工作的时间所占比例 | |
鲁棒性 | 软件系统在非正常情况(用户进行非法操作、相关软硬件系统发生故障)下仍正常运行的能力,也称健壮性或容错性 |
2.面向架构评估的质量属性
在架构评估过程中,评估人员普遍关注的质量属性见表10.2。
属性 | 子属性 | 作用及要点 |
---|---|---|
性能 | 效率指标:处理任务所需时间或单位时间内的处理量 | |
容错 | 出现错误后仍能保证系统争取运行,且自行修正错误 | |
错误不对系统产生影响,按既定程序忽略错误 | ||
正常运行的时间比例 | ||
属性 | 子属性 | 作用及要点 |
---|---|---|
性能 | 效率指标:处理任务所需时间或单位时间内的处理量 | |
可靠性 | 容错 | 出现错误后仍能保证系统争取运行,且自行修正错误 |
健壮性 | 错误不对系统产生影响,按既定程序忽略错误 | |
可用性 | 正常运行的时间比例 | |
安全性 | 系统向合法用户提供服务并阻止非法用户的能力 | |
可修改性 | 可维护性 | 局部修复使故障对架构的负面影响最小化 |
可扩展性 | 因松散耦合更易实现新特性/功能,不影响架构 | |
结构重组 | 不影响主体进行的灵活配置 | |
可移植性 | 适用于多样的环境(硬件平台、语言、操作系统等) | |
功能性 | 需求的满足程度 | |
可变性 | 总体架构可变 | |
互操作性 | 通过可视化或接口方式提供更好的交互操作体验 |
就系统架构设计师考试而言,我们针对上表梳理了一些考试常考的质量属性,以及提升或保证这些质量属性的应对措施。
(1)可用性。提升可用性的策略可以从以下几个方面考虑:
·错误检测:心跳、Ping/Echo、异常。
·错误恢复:表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。
·错误避免:服务下线、事务、进程监控器。
(2)性能。提升性能的策略可以从以下几个方面考虑:
·资源的需求:减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。
·资源管理:并发机制、增加资源。
·资源仲裁:先来先服务、固定优先级、动态优先级、静态调度。
(3)可修改性。提升性能的策略可以从以下几个方面考虑:
·局部化修改:高内聚低耦合、预测变更、使模块通用。
·防止连锁反应:信息隐藏、维持现有接口、限制通信路径、使用中介。
·推迟绑定时间:运行时注册、多态、配置文件。
(4)安全性。提升安全性的策略可以从以下几个方面考虑:
·抵抗攻击:用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。
·检测攻击:入侵检测系统。
·从攻击中恢复:恢复状态、识别攻击者。
3.质量属性场景描述
质量属性场景是一种面向特定质量属性的需求,由刺激源、刺激、环境、制品、响应、响应度量组成。
(1)刺激源(Source):某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。
(2)刺激(Stimulus):指当刺激到达系统时需要考虑的条件。
(3)环境(Environment);指该刺激在某些条件内发生。当激励发生时,系统可能处于过载、运行或者其他情况。
(4)制品(Artifact):某个制品被激励,可能是整个系统,也可能是系统的一部分。
(5)响应(Response):指在激励到达后所采取的行动。
(6)响应度量(Measurement):当响应发生时,应当能够以某种方式对其进行度量,以对需求进行测试。
二、系统架构评估
系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策,通常分为:
(1)基于调查问卷或检查表的方法:缺点是很大程度上依赖手评估人员的主观判断。
(2)基于场景的评估方法:应用在架构权衡分析法(ATAM)和软件架构分析方法(SAAM)中。
(3)基于度量的评估方法:建立质量属性和度量之间的映射原则→在软件文档中获取度量信息→分析推导系统质量属性。
1.系统架构评估中的重要概念
(1)敏感点:实现质量目标时应注意的点,是一个或多个构件的特性。
(2)权衡点:影响多个质量属性的敏感点。
(3)风险承担者或利益相关人:影响体系结构或被体系结构影响的群体。
(4)场景:确定架构质量评估目标的交互机制,一般采用触发机制(教材中解释为“刺激”)、环境和影响三方面来描述。
2.系统架构评估方法
(1)软件架构分析方法(Software.Architecture Analysis Method,SAAM).SAAM是卡耐基梅隆大学软件工程研究所的Kazman等人于1983年提出的一种非功能质量属性的架构分析方法,是最早形成文档并得到广泛应用的软件架构分析方法。SAAM的主要输入是问题描述、需求说明和架构描述,其分析过程主要包括场景开发、架构描述、单个场景评估、场景交互和总体评估,如图10.2所示。
(2)架构权衡分析法(Architecture Tradeoff Analysis Method,ATAM).ATAM是一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。传统的ATAM可以分为4个主要的活动阶段,包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中,整个评估过程强调以属性作为架构评估的核心概念。
现代的ATAM方法采用效用树对质量属性进行分类和优先级排序。用ATAM方法评估软件体系结构分为演示、调查和分析、测试和报告,如图10.3所示。
1)阶段1-演示(Presentation).
使用ATAM评估软件体系结构的初始阶段,包括3个步骤:
①介绍ATAM:描述ATAM评估过程。
②介绍业务驱动因素:着重业务视角,提供有关系统功能、主要利益相关方、业务目标和其他限制等信息。
③介绍要评估的体系结构:侧重可用性以及体系结构的质量要求。
2)阶段2-调查和分析。
使用 ATAM技术评估架构第2阶段,对一些关键问题彻底调查,包括3个步骤:
①确定架构方法:涉及能够理解系统关键需求的关键架构方法。
②生成质量属性效用树;确定最重要的质量属性,并确定优先次序。
③分析体系结构方法;彻底调查和分析,找出处理相应质量属性架构的方法。包括4个主要阶段:调查架构方法→创建分析问题→分析问题的答案→找出风险、非风险、敏感点和权衡点。
3)阶段3-测试。
①头脑风暴和优先场景:将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较。
②分析架构方法。
4)阶段4-报告ATAM.
提供评估期间收集的所有信息,呈现给利益相关者。
上述两种主要评估方法的对比,见表10.3。
项目 | SAAM | ATAM |
特定目标 | 通过程序文档验证体系结构,注重发现潜在问题,可用于评价单系统或进行多系统比较 | 确定在多个质量属性之间折中的必要性 |
评估技术 | 场景技术 | 场景技术、启发式分析方法 |
质量属性 | 可修改性是主要分析内容 | 性能、可用性、安全性和可修改性 |
风险承担者 | 所有参与者 | 场景和需求收集过程中的相关人 |
架构描述 | 围绕功能、结构和分配描述 | 五个基本结构及其映射关系 |
方法活动 | 场景开发、体系结构描述、单个场景评估、场景交互和总体评估 | 场景和需求收集、体系结构视图和场景实现、属性模型构造和分析、折中 |
知识库可复用性 | 不涉及 | 有基于属性的体系模型,可复用 |
方法验证(应用领域) | 空中交通管制系统、嵌入式音频系统、修正控制系统 | 仍处于研究中 |
(3)成本效益分析法(Cost Benefit Analysis Method,CBAM)分为整理场景→对场景进行求精→确定场景的优先级→分配效用→架构策略涉及哪些质量属性及响应级别→使用内插法确定“期望的”质量属性响应级别的效用→计算各架构策略的总收益→根据受成本限制影响的 ROI 选择架构策略。
(4)其他评估方法。
1)SAEM方法:将软件架构看作一个最终产品以及涉及过程中的一个中间产品,从外部质量属性和内部质量属性阐述的评估模型。
2)SAABNet方法:辅助架构的定性评估,帮助诊断软件问题的可能原因,分析架构中的修改给质量属性带来的影响、预测架构的质量属性,帮助架构设计人员做决策。SAABNet度量的对象包括架构属性、质量准则和质量因素。
3)SACMM方法:一种软件架构修改的度量方法,首先基于内核定义差异度量准则来计算两个软件架构之间的距离,然后分析对象之间的相似性。
4)SASAM方法:通过对预期架构和实际架构进行映射和比较来静态地评估软件架构。
5)ALRRA 方法:是软件架构可靠性风险评估方法,使用动态复杂度准则和动态耦合度准则来定义组件和连接件的复杂性因素。
6)AHP方法:把定性分析和定量计算相结合,对各种决策因素进行处理。
7)COSMIC+UML.方法:针对不同表达方式的软件架构,采用统一的软件度量COSMIC方法来进行度量和评估。
三、课后练习
1.识别风险、非风险、敏感点和权衡点是进行软件架构评估的重要过程。“改变业务数据编码方式会对系统的性能和安全性产生影响”是对(1)的描述,“假设用户请求的频率为每秒1个,业务处理时间小于30毫秒,则将请求响应时间设定为1秒钟是可以接受的”是对(2)的描述。
(1)A.风险点 B.非风险 C.敏感点 D.权衡点
(2)A.风险点 B.非风险 C.敏感点 D.权衡点
2.请详细阅读有关软件架构评估方面的说明,回答下列问题。
【说明】某电子商务公司拟升级目前正在使用的在线交易系统,以提高客户网上购物时在线支
付环节的效率和安全性。公司研发部门在需求分析的基础上,给出了在线交易系统的架构设计。公
司组织相关人员召开了针对架构设计的评估会议,会上用户提出的需求、架构师识别的关键质量属
性场景和评估专家的意见等内容部分列举如下:
(a)在正常负载情况下,系统必须在0.5秒内响应用户的交易请求。
(b)用户的信用卡支付必须保证99.999%的安全性。
(c)系统升级后用户名要求至少包含8个字符。
(d)网络失效后,系统需要在2分钟内发现错误并启用备用系统。
(e)在高峰负载情况下,用户发起支付请求后系统必须在10秒内完成支付功能。
(f)系统拟采用新的加密算法,这会提高系统的安全性,但同时会降低系统的性能。
(g)对交易请求处理时间的要求将影响系统数据传输协议和交易处理过程的设计。
(h)需要在30人·月内为系统添加公司新购买的事务处理中间件。
(i)现有架构设计中的支付部分与第三方支付平台紧耦合,当系统需要支持新的支付平台时,这种设计会导致支付部分代码的修改,影响系统的可修改性。
(j)主站点断电后,需要在3秒内将访问请求重定向到备用站点。
(k)用户信息数据库授权必须保证99.999%可用。
(I)系统需要对Web界面风格进行修改,修改工作必须在4人·月内完成。
(m)系统需要为后端工程师提供远程调试接口,并支持远程调试。
【问题1】在架构评估过程中,质量属性效用树(Utility Tree)是对系统质量属性进行识别和优先级排序的重要工具。请给出合适的质量属性,填入下图中(1)、(2)空白处;并选择题干描述的(a)~(m),填入(3)~(6)空白处,完成该系统的效用树。
【问题2】在架构评估过程中,需要正确识别系统的架构风险、敏感点和权衡点,并进行合理的架构决策。请用300字以内的文字给出系统架构风险、敏感点和权衡点的定义,并从题干(a)~(m)中各选出1个对系统架构风险、敏感点和权衡点最为恰当的描述。
答案解析:
1、解析:风险是某个存在问题的架构设计决策,可能会导致问题;非风险与风险相对,是良好的架构设计决策;敏感点是一个或多个构件的特性;权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。根据上述定义,可以看出“改变业务数据编码方式会对系统的性能和安全性产生影响”是对权衡点的描述,“假设用户请求的频率为每秒1个,业务处理时间小于30毫秒,则将请求响应时间设定为1秒钟是可以接受的”是对非风险的描述。
答案:D B
2、答案1:在架构评估过程中,质量属性效用树(Utility Tree)是对系统质量属性进行识别和优先级排序的重要工具。效用树主要关注性能、可修改性、可用性和安全4个方面。
答案2:系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。敏感点是为了实现某种特定质量属性,一个或多个系统组件所具有的特性。权衡点是影响多个质量属性,并对多个质量属性来说都是敏感点的系统属性。根据上述分析可知题干描述中,(i)描述的是系统架构风险;(g)描述的是敏感点;(f)描述的是权衡点。
这篇关于系统架构师考试学习笔记第三篇——架构设计高级知识(10)系统质量属性与架构评估的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!