第八章 软件质量属性域架构评估8.1 软件系统质量属性非常重要选择案例定义软件系统的质量就是“软件系统与明确地和隐含地定义的需求相一致的程度”影响软件质量的主要因素划分为6个维度特性:6大21小制作口诀背基于软件系统的生命周期理解记忆开发期质量属性(1)易理解性:指设计被开发人员理解的难易程度。(2)可扩展性:软件因适应新需求或需求变化而增加新功能的能力也称为灵活性。(3)可重用性:指重用软件系统或某一部分的难易程度。(4)可测试性:对软件测试以证明其满足需求规范的难易程度。(5)可维护性:当需要修改缺陷、增加功能、提高质量属性时识别修改点并实施修改的难易程度。(6)可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。运行期质量属性(1)性能:指软件系统及时提供相应服务的能力如速度、吞吐量、容量等要求。(2)安全性:指软件系统同时兼顾向合法用户提供服务以及阻止非授权使用的能力。(3)可伸缩性:指当用户数和数据量增加时软件系统维持高服务质量的能力。例如通过增加服务器来提高能力。(4)互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。(5)可靠性:指软件系统在一定的时间内持续无故障运行的能力。(6)可用性:指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误、恶意攻击高负载等问题影响。(7)鲁棒性:指软件系统在非正常情况下(如用户进行了非法操作、相关的软硬件系统发生了故障等)仍能够正常运行的能力也称健壮性或容错性。面向架构评估的质量属性1.性能重要指系统的响应能力即要经过多长时间才能对某个事件做出响应或者在某段时间内系统所能处理的事件的个数。性能战术资源需求:提高计算效率、减少处理事件流所需的资源、减少所处理事件的数量、控制资源的使用:资源管理:引入并发、维持数据或计算的多个副本、增加可用资源资源仲裁:资源调度策略、先进先出、固定优先级调度、动态优先级调度、静态调度2.可靠性可靠性是软件系统在应用或系统错误面前在意外或错误使用的情况下维持软件系统的功能特性的基本能力。通常用来衡量在规定的条件和时间内软件完成规定功能的能力。平均失效间隔时间(MTBF):是指相邻两次故障之间的平均时间也称为平均故障间隔。平均失效等待时间(MTTF)也称平均无故障时间【运行时间-故障时间/故障次数】是指某个元件预计的可运作平均时间平均故障修复时间(ITTR):是描述产品由故障状态转为工作状态时修理时间的平均值。表示计算机的可维修性【平均故障耗时】。MTBF MTTF ITTR3.可用性重要是系统能够正常运行的时间比例经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。如故障间隔时间。可用性战术错误检测:命令/响应、心跳线、异常处理错误恢复:表决(通过冗余构件与表决器相联)、主动冗余、被动冗余、备件、状态再同步、检查点/回滚错误预防:从服务中删除、事务(事务保证一致性)、进程监视器。4.安全性重要是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。如保密性、完整性、不可抵赖性、可控性。常见场景分析:(1)可抵御SQL注入攻击。(2)对计算机的操作都有完整的记录。(3)用户信息数据库授权必须保证 99.9%可用。设计策略:入侵检测、用户认证、用户授权、追踪审计。抵抗攻击:对用户身份进行验证、授权、维护数据的机密性、完整性、限制暴露的信息、限制访问检测攻击:“入侵检测”从攻击中恢复:识别攻击者(审计追踪)、恢复(冗余)5.可修改性理解可修改性(Modiability)是指能够快速地以较高的性价比对系统进行变更的能力。通常以某些具体的变更为基准通过考查变更的代价来衡量可修改性。可修改性包含以下4个方面:(1)可维护性(2)可扩展性(3)结构重组(4)可移植性常见场景分析(1)更改系统报表模块必须在2人周内完成。(2)对Web界面风格进行修改修改必须在4人月内完成。可修改性战术局部化修改:维持语义的一致性前后一致、预期期望的变更、泛化该模块、限制可能的选择防止连锁反应:信息隐藏、维持现有的接口、限制通信路径、仲裁者的使用推迟绑定时间:运行时注册、配置文件、多态、构件更换、遵守已定义的协议。6.功能性7.可变性理解可变性是指架构经扩充或变更而成为新架构的能力。这种新架构应该符合预先定义的规则在某些具体方面不同于原有的架构。当要将某个架构作为一系列相关产品的基础时(例如软件产品线)可变性是很重要的。8.互操作性扩展9、易用性被易于使用的程度1、常见场景(1)界面友好。(2)新用户学习使用系统时间不超过2小时。2、易用性战术运行时:任务的模型、用户的模型、系统的模型(维护任务、用户、系统信息了解系统用户的需求等)设计时:接口与其余部分分离支持用户主动操作:如取消、撤销等10、可测试性对软件系统进行测试以证明满足需求规格的能力。指的是通过测试揭示软件缺陷的容易程度。1、常见场景:提供远程调试接口支持远程调试。2、可测试性策略输入/输出:记录回放、接口与实现分离、优化访问线路接口内部监控质量属性场景描述重要是一个具体的质量属性需求由6部分组成刺激源:这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。刺激:该刺激是当刺激到达系统时需要考虑的条件。环境:该刺激在某些条件内发生。当激励发生时系统可能处于过载、运行或者其他情况。制品:某个制品被激励。可能是整个系统也可能是系统的一部分。响应:该响应是在激励到达后所采取的行动。响应度量:当响应发生时应当能够以某种方式对其进行度量以对需求进行测试。8.2 系统架构评估相关该概念1敏感点(Sensitivity Point)和权衡点 (Tradeoff Point)。背诵定义敏感点是一个或多个构件(和或构件之间的关系)的特性。研究敏感点可使设计师明确在搞清楚如何实现质量目标时应注意什么。权衡点是影响多个质量属性的特性是多个质量属性的敏感点。例如改变加密级别可能会对安全性和性能产生非常重要的影响。提高加密级别可以提高安全性但可能要耗费更多的处理时间影响系统性能。如果某个机密消息的处理有严格的时间延迟要求则加密级别可能就会成为一个权衡点。2风险承担者(Stakeholders)或者称为利益相关人。系统的架构涉及很多人的利益这些人都对架构施加各种影响以保证自己的目标能够实现。风险会带来隐患、不确定非风险可控/可接受点3场景在进行架构评估时一般首先要精确地得出具体的质量目标并以之作为判定该架构优劣的标准。为得出这些目标而采用的机制称之为场景。场景是从风险担者的角度对与系统的交互做的简短描述。在架构评估中一般采用刺激、环境和响应三方面来对场景进行描述。系统评估方法重要1.基于调查问卷或检查表的方式主观2.基于场景的方式3.基于度量的方式度量是指为软件产品的某一属性所赋予的数值如代码行数、方法调用层数、构件个数等。(1)软件架构分析法-SAAM方法:最初关注可修改性后扩充到可移植性、可扩充性等。SAAM 分析评估架构的过程包括5个步骤即场景开发、架构描述、单个场景评估、场景交互和总体评估。通过各类风险承担者协商讨论开发一些任务场景体现系统所支持的各种活动。用一种易于理解的、合乎语法规则的架构描述软件架构体现系统的计算构件、数据构件以及构件之间的关系(数据和控制)。对场景(直接场景和间接场景)生成一个关于特定架构的场景描述列表。通过对场景交互的分析得出系统中所有场景对系统中的构件所产生影响的列表。最后对场景和场景间的交互作一个总体的权衡和评价。(2)架构权衡分析法-ATAM方法:由SAAM发展而来主要针对性能、实用性、安全性、可修改性。4个主要的活动领域重要场景和需求收集架构视图和场景实现属性模型构造和分析折中效用树重要ATAM方法采用效用树(Utilitytree)这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根一质量属性一属性分类一质量属性场景(叶子节点)。ATAM 主要关注4类质量属性:性能、安全性、可修改性和可用性因为这4个质量属性是利益相关者最为关心的。得到初始的效用树后需要修剪这棵树保留重要场景(不超过50个)再对场景按重要性给定优先级(用H/ML的形式)再按场景实现的难易度来确定优先级(用H/M/的形式)这样对所选定的每个场景就有一个优先级对(重要度、难易度)如(H、L)表示该场景重要且易实现。(3)成本效益分析法-CBAM方法在ATAM基础上建立的软件的“经济”模型。CBAM 的思想就是架构策略影响系统的质量属性反过来这些质量属性又会为系统的项目干系人带来一些收益(称为效用)CBAM 协助项目干系人根据其投资回报(ROI)选择架构策略。八个步骤了解(1)整理场景。(2)对场景进行求精。(3)确定场景的优先级。(4)分配效用。(5)架构策略涉及哪些质量属性及响应级别形成策略一场景一响应级别的对应关系。(6)使用内插法确定期望的质量属性响应级别的效用。(7)计算各架构策略的总收益(8)根据受成本影响的ROI选择架构策略(4) SAAM (了解)8.3 ATAM方法架构评估实践ATAM方法评估软件体系结构分为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团队的主要发现通常包括:1种效用树;一组生成的场景;一组分析问题;一套确定的风险和非风险;确定的架构方法。补充——软件复用了解软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。软件元素包括需求分析文档、设计过程、设计文档、程序代码、测试用例、领域知识等。对于新的软件开发项目而言它们或者是构成整个目标软件系统的部件或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。软件重用分垂直式重用与水平式重用1、垂直式重用是指局限于某一垂直领域的重用如只在电力系统中用到的构件;2、水平式重用是指通用领域的重用如标准函数库任何软件都能用所以是水平式重用。√水平—不分行业通用。√垂直–分行业专用。构建复用了解