
一、软件系统质量属性一质量属性概念软件系统的质量就是“软件系统与明确地和隐含地定义的需求相一致的程度”。软件系统质量属性是一个系统的可测量或可测试的属性基于软件系统的生命周期可将软件系统的质量属性分为开发期质量属性和运行期质量属性。1.开发期质量属性(1)易理解性指设计被开发人员理解的难易程度。(2)可扩展性软件因适应新需求或需求变化而增加新功能的能力也称为灵活性。(3)可重用性指重用软件系统或某一部分的难易程度。(4)可测试性对软件测试以证明其满足需求规范的难易程度。(5)可维护性当需要修改缺陷、增加功能、提高质量属性时识别修改点并实施修改的难易程度。(6)可移植性将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。2.运行期质量属性(1)性能性能是指软件系统及时提供相应服务的能力如速度、吞吐量和容量等的要求。(2)安全性指软件系统同时兼顾向合法用户提供服务以及阻止非授权使用的能力。(3)可伸缩性指当用户数和数据量增加时软件系统维持高服务质量的能力。例如通过增加服务器来提高能力。(4)互操作性指本软件系统与其他系统交换数据和相互调用服务的难易程度。(5)可靠性软件系统在一定的时间内持续无故障运行的能力。(6)可用性指系统在一定时间内正常工作的时间所占的比例。可用性会受到系统错误 恶意攻击高负载等问题的影响。(7)鲁棒性是指软件系统在非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力也称健壮性或容错性。二面向架构评估的质量属性在架构评估过程中评估人员普遍关注的质量属性见下表1.性能提升性能的策略可以从以下几个方面考虑资源的需求减少处理事件时对资源的占用、减少处理事件的数量、控制资源的使用。资源管理并发机制、增加资源。资源仲裁先来先服务、固定优先级、动态优先级、静态调度。2.可靠性(1)容错。(2)健壮性。通常用平均失效等待时间 (Mean Time To Failure,MTTF) 和平均失效间隔时间 (Mean Time Between Failure,MTBF) 来衡量。3.可用性提升可用性的策略可以从以下几个方面考虑错误检测心跳、Ping/Echo、异常。错误恢复表决、主动冗余、被动冗余、重新同步、内测、检查点/回滚。错误避免服务下线、事务、进程监控器。4.安全性提升安全性的策略可以从以下几个方面考虑抵抗攻击用户身份验证、用户授权、维护数据机密性与完整性、限制暴露、限制访问。检测攻击入侵检测系统。从攻击中恢复恢复状态、识别攻击者。5.可修改性(1)可维护性 (Maintainability)。(2)可扩展性 (Extendibility)。(3)结构重组 (Reassemble)。(4)可移植性 (Portability)。提升可修改性的策略可以从以下几个方面考虑局部化修改高内聚低耦合、预测变更、使模块通用。防止连锁反应信息隐藏、维持现有接口、限制通信路径、使用中介。推迟绑定时间运行时注册、多态、配置文件。6.功能性7.可变性8.互操作性三质量属性场景描述由6部分组成● 刺激源 (Source):这是某个生成该刺激的实体(人、计算机系统或者任何其他刺激器)。● 刺 激(Stimulus):该刺激是当刺激到达系统时需要考虑的条件。● 环 境(Environment): 该刺激在某些条件内发生。当激励发生时系统可能处于过载、运行或者其他情况。● 制品(Artifact):某个制品被激励。这可能是整个系统也可能是系统的一部分。● 响应(Response):该响应是在激励到达后所采取的行动。● 响应度量(Measurement): 当响应发生时应当能够以某种方式对其进行度量以对 需求进行测试。1.可用性质量属性场景2.可修改性质量属性场景3.性能质量属性场景4.可测试性质量属性场景5.易用性质量属性场景6.安全性质量属性场景二、系统架构评估系统架构评估是在对架构分析、评估的基础上对架构策略的选取进行决策通常分为1.基于调查问卷和检查卷的方法2.基于场景的评估方法软件架构分析方法Software Architecture Analysis MethodSAAM架构权衡分析法Architecture Tradeoff Analysis MethodATAM成本效益分析法Cost Benefit Analysis MethodCBAM架构层次的软件可维护性预测(Architecture Level Prediction of Software MaintenanceALPSM)层次分析法 (Analytical Hierarchy Process,AHP)3.基于度量的评估方法一系统架构评估中的重要概念(1)敏感点(Sensitivity Point)和权衡点 (Tradeoff Point)。敏感点实现质量目标时应注意的点是一个或多个构件的特性。权衡点影响多个质量属性的敏感点。(2)风险承担者(Stakeholders) 或者称为利益相关人。影响体系结构或被体系结构影响的群体。(3)场景 (scenarios)。确定架构质量评估目标的交互机制一般采用触发机制“刺激”、环境和影响三方面来描述。系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。二系统架构评估方法1.软件架构分析SAAM 方 法SAAM 是卡耐基梅隆大学软件工程研究所的Kazman等人于1983 年提出的一种非功能质量属性的架构分析方法是最早形成文档并得到广泛应用的软件架构分析方法。SAAM的主要输入是问题描述、需求说明和架构描述SAAM分析评估架构的过程包括5个步骤即场景开发、架构描述、单个场景评估、场景交互和总体评估。2.架构权衡分析ATAM方法架构权衡分析法Architecture Tradeoff Analysis MethodATAM是一种系统架构评估方法主要在系统开发之前针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。传统的ATAM可以分为4 个主要的活动阶段包括需求收集、架构视图描述、属性模型构造和分析、架构决策与折中整个评估过程强调以属性作为架构评估的核心概念。ATAM 方法采用效用树 (Utility tree) 这一工具来对质量属性进行分类和优先级排序。效用树的结构包括树根—质量属性—属性分类—质量属性场景(叶子节点)。现代的ATAM方法采用效用树对质量属性进行分类和优先级排序。用ATAM 方法评估软件体系结构分为演示、调查和分析、测试和报告如下图所示。上述两种主要评估方法的对比见下表。3.CBAM 方法成本效益分析法 (the Cost Benefit Analysis Method,CBAM) 是在ATAM上构建用来对架构设计决策的成本和收益进行建模 是优化此类决策的一种手段。分为以下8个步骤。(1)整理场景。整理 ATAM 中获取的场景根据商业目标确定这些场景的优先级并选取优先级最高的1/3的场景进行分析。(2)对场景进行求精。为每个场景获取最坏情况、当前情况、期望情况和最好情况的质量属性响应级别。(3)确定场景的优先级。项目关系人对场景进行投票其投票是基于每个场景“所期望的”响应值根据投票结果和票的权值生成一个分值(场景的权值)。(4)分配效用。对场景的响应级别(最坏情况、当前情况、期望情况和最好情况)确定效用表。(5)架构策略涉及哪些质量属性及响应级别形成相关的“策略一场景一响应级别”的对应关系。(6)使用内插法确定“期望的”质量属性响应级别的效用。即根据第4步的效用表以及第5步的对应关系确定架构策略及其对应场景的效用表。(7)计算各架构策略的总收益。根据第3步的场景的权值及第6步的架构策略效用表计算出架构策略的总收益得分。(8)根据受成本限制影响的 ROI选择架构策略。根据开发经验估算架构策略的成本结合第7步的收益计算出架构策略的ROI, 按 ROI排序从而确定选取策略的优先级。4.其他评估方法1)SAEM 方法将软件架构看作一个最终产品以及涉及过程中的一个中间产品从外部质量属性和内部质量属性阐述的评估模型。2)SAABNet 方法辅助架构的定性评估帮助诊断软件问题的可能原因分析架构中的修改给质量属性带来的影响、预测架构的质量属性帮助架构设计人员做决策。SAABNet 度量的对象包括架构属性、质量准则和质量因素。(1)识别架构中的相关变量。(2)定义变量之间的概率依赖这就是BBN的定性描述。(3)评估条件概率这就是BBN 的定量描述。(4)测试BBN来验证其输出是否正确。SAABNet度量的对象包括架构属性、质量准则和质量因素3部分3)SACMM 方法一种软件架构修改的度量方法首先基于内核定义差异度量准则来计算两个软件架构之间的距离然后分析对象之间的相似性。4)SASAM 方法通过对预期架构和实际架构进行映射和比较来静态地评估软件架构。(1)产品线可能性。分析几个不相干的系统是否适用于某个共有的架构即分析它们是否能成为预期产品线的一部分。(2)产品对准性。评估系统的软件架构是否与产品线的软件架构一致。(3)重用可能性。分析组件是否能重用。(4)组件充分性。评估组件的内在质量。(5)对软件架构的理解。(6)一致性。评估架构文档和执行的一致性。(7)完备性。检测未被文档化的架构实体。(8)软件系统或产品线的文档。(9)控制演化。(10)支持架构结构的分解5)ALRRA 方法法是软件架构可靠性风险评估方法使用动态复杂度准则和动态耦合度准则来定义组件和连接件的复杂性因素。6)AHP方法层次分析法 (Analytical Hierarchy Process,AHP) 是多种架构评估度量方法的基础理论。把定性分析和定量计算相结合对各种决策因素进行处理。7)COSMICUML方法针对不同表达方式的软件架构采用统一的软件度量 COSMIC 方法来进行度量和评估。(1)将面向对象的度量准则与COSMIC 方法相关联。(2)对COSMIC标记进行完善以适用于描述UML组件图。(3)提出 UML 组件图的度量准则复杂度、耦合度和内聚度等。敏感点是为 了实现某种特定质量属性一个或多个系统组件所具有的特性。权衡点是影响多个质量属性并对 多个质量属性来说都是敏感点的系统属性。三、ATAM方法架构评估实践一阶段1——演示 (Presentation)使用ATAM评估软件体系结构的初始阶段包括3个步骤①介绍ATAM描述ATAM评估过程。②介绍业务驱动因素着重业务视角提供有关系统功能、主要利益相关方、业务目标和其他限制等信息。③介绍要评估的体系结构侧重可用性以及体系结构的质量要求。二阶段2——调查和分析使用ATAM技术评估架构第2阶段对一些关键问题彻底调查包括3个步骤①确定架构方法涉及能够理解系统关键需求的关键架构方法。1)胡佛的架构2)“银行”活动架构②生成质量属性效用树确定最重要的质量属性并确定优先次序。1)情景生成2)质量属性效用树生成③分析体系结构方法彻底调查和分析找出处理相应质量属性架构的方法。包括4 个主要阶段● 调查架构方法。● 创建分析问题。● 分析问题的答案。● 找出风险、非风险、敏感点和权衡点。三阶段3——测试①头脑风暴和优先场景将头脑风暴的优先列表与生成质量属性效用树中所获取的优先方案进行比较。②分析架构方法。这里只关注新出现的属于安全和 性能质量属性的情况。四阶段4——报告ATAM提供评估期间收集的所有信息呈现给利益相关者。