软件体系架构——系统架构评估与ATAM
选择题6分左右
大题必考一道10分
质量特性、子特性
选择,理解记忆,对应
功能 靠 用 效 护 移
功能:适 准 用 依 安
靠:错 复 成
用:学 解 作
效:源 时
护:试 改 定 分
移:应 装 一 替
生命周期-质量属性
分为开发期质量属性、运行期质量属性
开发期质量属性
1.易理解性:指设计被开发人员理解的难易程度。
2.可扩展性:软件因适应新需求或需求变化而增加新功能的能力,也称为灵活性。
3.可重用性:指重用软件系统或某一部分的难易程度。
4.可测试性:对软件测试以证明其满足需求规范的难易程度。
5.可维护性:当需要修改缺陷、增加功能、提高质量属性时,识别修改点并实施修改的难易程度。
6.可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。
运行期质量属性
1.性能:指软件系统及时提供相应服务的能力如速度、吞吐量、容量等要求。
2.安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
3.可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如通过增加服务器来提高能力。
4.互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
5.可靠性:指软件系统在一定的时间内持续无故障运行的能力,用评估无故障时间评估。
6.可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误、恶意攻击,高负载等问题影响。
7.鲁棒性:指软件系统在非正常情况下,如用户进行了非法操作、相关的软硬件系统发生了故障等,仍能够正常运行的能力,也称健壮性或容错性。
系统架构评估-质量属性
1.性能
系统的响应能力,指多长时间对某个时间作出响应。或某段时间内系统能处理的事件的个数。
常见表述:同时支持1000并发、响应时间应小于1s、显示分辨率达到4k。
性能设计策略:
资源需求:提高计算效率、减少处理事件流所需的资源、减少所处理事件的数量、控制资源的使用
资源管理:引入并发、维持数据或计算的多个副本、增加可用资源
资源仲裁:资源调度策略、资源仲裁、先进先出、固定优先级调度、动态优先级调度、静态调度
2. 可靠性
平均失效间隔时间(MTBF):相邻两次故障之间的平均时间,也称为平均故障间隔。
平均失效等待时间(MTTF)平均无故障时间,是指某个元件预计的可运作平均时间
平均故障修复时间(MTTR):修理时间的平均值。表示计算机的可维修性。
两次故障之间必然有修复行为,因此,MTBF中应包含MTTR。
MTBF=MTTR+MTTF
实际应用中MTTR很小,所以MTBF~MTTF
3. 可用性
是系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。
常见表述:主服务器故障1分钟内切换至备用服务器、系统故障1小时内修复、系统支持7*24小时。
可用性设计策略
错误检测:命令/响应、心跳线、异常处理
错误恢复:表决(通过冗余构件与表决器相联)、主动冗余、被动冗余、备件、状态再同步、检查点/回滚、影子操作
错误预防:从服务中删除、事务(事务保证一致性)、进程监视器。
4. 安全性
安全性是指,系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务
的能力。如保密性、完整性、不可抵赖性、可控性。
常见表述:可抵御SQL注入攻击、操作都有完整的记录、用户信息数据库授权必须保证99.9%可用。
设计策略:入侵检测、用户认证、用户授权、追踪审计。
抵抗攻击:对用户身份进行验证、授权、维护数据的机密性、完整性、限制暴露的信息、限制
访问
检测攻击:入侵检测
从攻击中恢复:识别攻击者(审计追踪)、恢复(冗余)
5. 可修改性
可维护性、可拓展性、结构重组、可移植性
常见表述:某个模块更改必须在两人周内完成
设计策略
局部化修改:语义一致性、预期期望的变更、泛化该模块、限制可能的选择
防止连锁反应:信息隐藏、维持现有的接口、限制通信路径、仲裁者的使用
推迟绑定时间:运行时注册、配置文件、多态、构件更换、遵守已定义的协议。
6. 功能性
7.可变性
扩充升级成新架构的能力
8.互操作性
质量场景描述
刺溦源、刺溦、环境、制品、响应、响应度量
1.可用性
2.可修改性
3.性能
4.可测试性
5.易用性的场景
系统架构评估——重要概念
1.敏感点和权衡点
敏感点,某属性会产生影响。
权衡点,对多个属性产生影响,是多个属性的敏感点。
2.风险点
或风险承担者、利益相关人。会对架构施加各种影响,确保各自自己的利益
3.非风险点
xxx是可以接受的,是可控的
4.场景
风险承担者与系统交互时的过程,一般采用刺激、环境、响应三方面描述。
系统架构评估——评估方法
1.基于调查问卷或检查表的方式
灵活,但是主观的
2.基于场景的方式
一般采用刺激、环境、响应三方面描述。
3.基于度量的方式
用数据说话
(1)软件架构分析法-SAAM方法:最初关注可修改性,后扩充到可移植性、可扩充性等。
(2)架构权衡分析法-ATAM方法:由SAAM发展而来,主要针对性能、实用性、安全性、可修改性。
(3)成本效益分析法-CBAM方法,在ATAM基础上建立的软件的“经济”模型。
体系结构权衡SAAM
过程:场景开发、架构描述、单个场景评估、场景交互、总体评估
三个输入:问题描述、需求说明、体系结构描述
架构权衡ATAM(重点)
ATAM方法采用效用树,据此对质量属性进行分类和优先级排序
树根→质量属性→属性分类→质量属性场景(叶子节点)
ATAM主要关注4类质量属性:性能、安全性、可修改性和可用性,因为这4个质量属性是利益相关者最为关心的。得到初始的效用树后,需要修剪这棵树,保留重要场景(不超过50个),再对场景按重要性给定优先级(用H/M/L的形式),再按场景实现的难易度来确定优先级(用H/M/L的形式),这样对所选定的每个场景就有一个优先级对(重要度、难易度),如(H、L)表示该场景重要且易实现。
ATAM的4个主要的活动
1.场景和需求收集
2.架构视图和场景实现
3.属性模型构造和分析
4.折中
ATAM的4个基本阶段
1.描述和介绍阶段(演示)
2.调查和分析阶段
3.测试阶段
4.报告阶段
阶段1——演示
是ATAM评估软件体系结构的初始阶段。此阶段有3个主要步骤。
第1步:介绍ATAM
涉及ATAM评估过程的描述。在此步骤中,评估负责人向所有相关参与者提供有关ATAM过程的一般信息。领导者说明评估中使用的分析技术以及评估的预期结果。领导者解决小组成员的任何疑虑、期望或问题。
第2步:介绍业务驱动因素
主要利益方介绍最终业务场景,主要利益相关方:最终用户、架构师、应用程序开发人员。在这一步中,提到了系统体系结构驱动程序的业务目标。这一步着重于系统的业务视角。它提供了有关系统功能、主要利益相关方、业务目标和系统其他限制的更多信息。
第3步:介绍要评估的体系结构
架构团队描述要评估的架构是什么样的。它侧重于体系结构、时间可用性以及体系结构的质量要求。此步骤中的体系结构演示非常重要,因为它会影响分析的质量。这里涉及的关键问题包括技术约束,与正在评估的系统交互的其他系统,以及为满足质量属性而实施的架构方法。
阶段2——调查和分析
在这个阶段,对评估期间需要重点关注的一些关键问题进行彻底调查。这个阶段细分为3个步骤。
列举主要要求场景,如每秒多少响应数,然后生成质量效应树,找到风险、非风险、敏感点和权衡点。
第4步:确定架构方法
这一步涉及能够理解系统关键需求的关键架构方法。在这一步中,架构团队解释架构的流程控制,并提供
关于如何达成关键目标以及是否达到关键目标的适当解释。
第5步:生成质量属性效用树
在评估阶段,确定系统最重要的质量属性目标,并确定优先次序和完善。这一步至关重要,通过建立效用
树,将所有利益相关方和评估人员的注意力集中在关系到体系成功至关重要的体系结构
的不同方面。
第6步:分析体系结构方法
这是”调查和分析”阶段的最后一步。在这一步中,分析前一步生成的效用树的输出并进行彻底调查和分析,
找出处理相应质量属性架构的方法。
这里还要确定每种架构方法的风险、非风险、敏感点和权衡点。
阶段3一测试
第7步:头脑风暴和优先场景
这是ATAM测试阶段的第一步。前者代表利益相关者的利益,用于理解质量属性要求。在效用树生成步骤中,主要结果是从架构师的角度来理解质量属性。在这一步中,目标是让更大的利益相关者参与其中。
第8步:分析架构方法
这是测试阶段的最后一步。在这一步中,我们分析上一步中高优先级的质量属性。找到了处理这些质量属性的架构设计方案,并检查相应的架构设计方案是否可支持满足这些属性。这一步重复“调查和分析”阶段的第6步。唯一的区别在于,在步骤6中,高优先级质量属性来自效用树,而这一步需要考虑在头脑风暴投票中,高得票数的质量属性。
阶段4——报告ATAM
这是ATAM评估的最后阶段,其中提供了评估期间收集的所有信息。ATAM团队将他们的发现呈现给利益相关者。
ATAM团队的主要发现通常包括:
一种效用树;
一组生成的场景;
一组分析问题;
一套确定的风险和非风险;
确定的架构方法。
成本效益CBAM
在ATAM基础上构建的,增加了对成本和收益的建模,一般在ATAM结束时开始。
CBAM方法分为以下8个步骤:
(1)整理场景。
(2)对场景进行求精。
(3)确定场景的优先级。
(4)分配效用。
(5)架构策略涉及哪些质量属性及响应级别,形成”策略一场景一响应级别”的对应关系。
(6)使用内插法确定”期望的”质量属性响应级别的效用。
(7)计算各架构策略的总收益
(8)根据受成本影响的ROI选择架构策略