第9章软件体系结构评估参考书《软件体系结构原理、方法与实践》张友生《软件构架评估》PaulCleements著孙学涛译清华大学出版社第9章软件体系结构评估9.1体系结构评估概述软件体系结构的设计是整个软件开发过程中关键的一步。对于庞大而复杂的系统来说,没有一个合适的体系结构而要成为一个成功的软件设计几乎是不可能的。不同类型的系统需要不同的体系结构,甚至一个系统的不同子系统也需要不同的体系结构。体系结构的选择往往会成为一个系统设计成败的关键。第9章软件体系结构评估9.1体系结构评估概述怎样才能知道为软件系统所选用的体系结构是恰当的呢?如何确保按照所选用的体系结构能顺利地开发出成功的软件产品呢?要回答这些问题,需要专门的方法来对其进行评估。体系结构评估可以只针对一个体系结构,也可以针对一组体系结构。在体系结构评估过程中,评估人员所关注的是系统的质量属性。第9章软件体系结构评估9.1体系结构评估概述所有的评估方法所普遍关注的质量属性如下•性能•可靠性•可用性•安全性•可修改性•功能性•可变性•可集成性•互操作性第9章软件体系结构评估9.1体系结构评估概述◇性能性能是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段事件内系统所能处理的事件的个数。经常用单位事件内所处理事务的数量或系统完成某个事务处理所需的时间来对性能进行定量的表示。性能测试经常要使用基准测试程序(用以测量性能指标的特定事务集或工作量环境)。◇可靠性(1)可靠性是软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。可靠性通常用平均失效等待时间(MTTF)和平均失效间隔时间(MTBF)来衡量。在失效率为常数和修复时间很短的情况下,MTTF和MTBF几乎相等。第9章软件体系结构评估9.1体系结构评估概述◇可靠性(2)◎容错◎健壮性第9章软件体系结构评估9.1体系结构评估概述第9章软件体系结构评估9.1体系结构评估概述◇可用性可用性是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。第9章软件体系结构评估9.1体系结构评估概述◇安全性安全性是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性是根据系统可能受到的安全威胁的类型来分类的。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。其中,机密性保证信息不泄露给未授权的用户、实体或过程;完整性保证信息的完整和准确,防止信息被非法修改;可控性保证对信息的传播及内容具有控制的能力,防止为非法者所用。第9章软件体系结构评估9.1体系结构评估概述◇可修改性◎可维护性◎可扩展性◎结构重组◎可移植性第9章软件体系结构评估9.1体系结构评估概述◇功能性功能性是系统所能完成所期望的工作的能力。一项任务的完成需要系统中许多或大多数构件的相互协作。第9章软件体系结构评估9.1体系结构评估概述◇可变性可变性是指体系结构经扩充或变更而成为新体系结构的能力。这种新体系结构应该符合预先定义的规则,在某些具体方面不同于原有的体系结构。当要将某个体系结构作为一系列相关产品(例如,软件产品线)的基础时,可变性是很重要的。第9章软件体系结构评估9.1体系结构评估概述◇集成性可集成性是指系统能与其他系统协作的程度。第9章软件体系结构评估9.1体系结构评估概述◇互操作性作为系统组成部分的软件不是独立存在的,经常与其他系统或自身环境相互作用。为了支持互操作性,软件体系结构必须为外部可视的功能特性和数据结构提供精心设计的软件入口。程序和用其他编程语言编写的软件系统的交互作用就是互操作性的问题,这种互操作性也影响应用的软件体系结构。第9章软件体系结构评估9.1体系结构评估概述◇基本概念(1)敏感点和权衡点敏感点是一个或多个构件(和/或构件之间的关系)的特性。研究敏感点可使设计人员或分析员明确在搞清楚如何实现质量目标时应注意什么。权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。例如,改变加密级别可能会对安全性和性能产生非常重要的影响。提高加密级别可以提高安全性,但可能要耗费更多的处理时间,影响系统性能。如果某个机密消息的处理有严格的时间延迟要求,则加密级别可能就会成为一个权衡点。第9章软件体系结构评估9.1体系结构评估概述◇基本概念(2)风险承担者系统的体系结构涉及到很多人的利益,这些人都对体系结构施加各种影响,以保证自己的目标能够实现。表中列出了软件体系结构评估中可能涉及的一些风险承担者及其所关心的问题。体系结构评估中的风险承担者(一)体系结构评估中的风险承担者(二)体系结构评估中的风险承担者(三)第9章软件体系结构评估9.1体系结构评估概述◇基本概念(3)场景(1)在进行体系结构评估时,一般首先要精确地得出具体的质量目标,并以之作为判定该体系结构优劣的标准。我们把为得出这些目标而采用的机制叫做场景。场景是从风险承担者的角度对与系统的交互的简短描述。在体系结构评估中,一般采用刺激、环境和响应三方面来对场景进行描述。第9章软件体系结构评估9.1体系结构评估概述◇基本概念(3)场景(2)刺激是场景中解释或描述风险承担者怎样引发与系统的交互部分。例如,用户可能会激发某个功能,维护人员可能会做某个更改,测试人员可能会执行某种测试等,这些都属于对场景的刺激。环境描述的是刺激发生时的情况。例如,当前系统处于什么状态?有什么特殊的约束条件?系统的负载是否很大?某个网络通道是否出现了阻塞等。响应是指系统是如何通过体系结构对刺激作出反应的。例如,用户所要求的功能是否得到满足?维护人员的修改是否成功?测试人员的测试是否成功等。第9章软件体系结构评估9.2SA评估的主要方式◇主要的评估方式◇基于调查问卷或检查表的评估方式◇基于场景的评估方式◇基于度量的评估方式第9章软件体系结构评估◇基于调查问卷或检查表的评估方式(1)CMU/SEI的软件风险评估过程采用了这一方式。调查问卷是一系列可以应用到各种体系结构评估的相关问题,其中有些问题可能涉及到体系结构的设计决策;有些问题涉及到体系结构的文档,有的问题针对体系结构描述本身的细节问题。检查表中也包含一系列比调查问卷更细节和具体的问题,它们更趋向于考察某些关心的质量属性。9.2SA评估的主要方式第9章软件体系结构评估◇基于调查问卷或检查表的评估方式(2)这一评估方式比较自由灵活,可评估多种质量属性,也可以在软件体系结构设计的多个阶段进行。但是由于评估的结果很大程度上来自评估人员的主观推断,因此不同的评估人员可能会产生不同甚至截然相反的结果,而且评估人员对领域的熟悉程度、是否具有丰富的相关经验也成为评估结果是否正确的重要因素。尽管基于调查问卷与检查表的评估方式相对比较主观,但由于系统相关的人员的经验和知识是评估软件体系结构的重要信息来源,因而它仍然是进行软件体系结构评估的重要途径之一。9.2SA评估的主要方式第9章软件体系结构评估◇基于场景的评估方式(1)基于场景的方式由SEI首先提出并应用在体系结构权衡分析方法(ATAM)和软件体系结构分析方法(SAAM)中。这种软件体系结构评估方式分析软件体系结构对场景也就是对系统的使用或修改活动的支持程度,从而判断该体系结构对这一场景所代表的质量需求的满足程度。例如,用一系列对软件的修改来反映易修改性方面的需求,用一系列攻击性操作来代表安全性方面的需求等。9.2SA评估的主要方式第9章软件体系结构评估◇基于场景的评估方式(2)这一评估方式考虑到了包括系统的开发人员、维护人员、最终用户、管理人员、测试人员等在内的所有与系统相关的人员对质量的要求。基于场景的评估方式涉及到的基本活动包括确定应用领域的功能和软件体系结构的结构之间的映射,设计用于体现待评估质量属性的场景以及分析软件体系结构对场景的支持程度。9.2SA评估的主要方式第9章软件体系结构评估◇基于场景的评估方式(3)不同的应用系统对同一质量属性的理解可能不同,例如,对操作系统来说,可移植性被理解为系统可在不同的硬件平台上运行,而对于普通的应用系统而言,可移植性往往是指该系统可在不同的操作系统上运行。由于存在这种不一致性,对一个领域适合的场景设计在另一个领域内未必合适,因此基于场景的评估方式是特定于领域的。这一评估方式的实施者一方面需要有丰富的领域知识以对某种质量需求设计出合理的场景,另一方面,必须对待评估的软件体系结构有一定的了解以准确判断它是否支持场景描述的一系列活动。9.2SA评估的主要方式第9章软件体系结构评估◇基于度量的评估方式(1)度量是指为软件产品的某一属性所赋予的数值,如代码行数、方法调用层数、构件个数等。传统的度量研究主要针对代码,但近年来也出现了一些针对高层设计的度量,软件体系结构度量即是其中之一。代码度量和代码质量之间存在着重要的联系,类似地,软件体系结构度量应该也能够作为评判质量的重要的依据。9.2SA评估的主要方式第9章软件体系结构评估◇基于度量的评估方式(2)基于度量的评估方式有:赫尔辛基大学提出的基于模式挖掘的面向对象软件体系结构度量技术Karlskrona和Ronneby提出的基于面向对象度量的软件体系结构可维护性评估西弗吉尼亚大学提出的软件体系结构度量方法等都在这方面进行了探索,提出了一些可操作的具体方案。9.2SA评估的主要方式第9章软件体系结构评估◇基于度量的评估方式(3)基于度量的评估技术都涉及三个基本活动:首先需要建立质量属性和度量之间的映射原则,即确定怎样从度量结果推出系统具有什么样的质量属性;然后从软件体系结构文档中获取度量信息;最后根据映射原则分析推导出系统的某些质量属性。因此,这些评估技术被认为都采用了基于度量的评估方式。9.2SA评估的主要方式第9章软件体系结构评估◇基于度量的评估方式(4)基于度量的评估方式提供更为客观和量化的质量评估。这一评估方式需要在软件体系结构的设计基本完成以后才能进行,而且需要评估人员对待评估的体系结构十分了解,否则不能获取准确的度量。自动的软件体系结构度量获取工具能在一定程度上简化评估的难度,例如MAISA可从文本格式的UML图中抽取面向对象体系结构的度量。9.2SA评估的主要方式第9章软件体系结构评估◇三种评估方式的比较9.2SA评估的主要方式•9.3.1ATAM的参与人员•9.3.2ATAM的结果•9.3.3ATAM的阶段•9.3.4小结第9章软件体系结构评估9.3ATAM评估方法9.3.1ATAM的参与人员ATAM(ArchitectureTradeoffAnalysisMethod)—体系结构权衡分析法。ATAM方法的特点是不仅可以揭示出体系结构满足特定质量目标的情况,而且可以使我们更清楚地认识到质量目标之间的联系。一种质量属性的获得可能对另一种质量属性产生负面影响,这种负面影响是否在可以接受的范围里面。如果不能接受,那么获得的质量属性就会有问题,会对其他的质量属性产生很严重的负面影响。网上银行的例子。ATAM的中心问题是对用于体系结构评估的有限时间进行管理。第9章软件体系结构评估9.3ATAM评估方法第9章软件体系结构评估9.3ATAM评估方法9.3.1ATAM的参与人员ATAM要求以下3个小组的参与和合作:•评估小组通常由3-5人组成,每个人要扮演多个角色。•项目决策人客户、项目管理人员、委托进行评审的人•体系结构涉众第9章软件体系结构评估9.3ATAM评估方法9.3.1ATAM的参与人员评估小组评估小组可以是一个常设小组,其中要定期执行体系结构评估。其成员也可以是为了应对某次评估,从了解体系结构的人中挑选出来的。他们可以是与开发小组(其体系结构是公开的)为相同的组织工作,也可以是外部的咨询人员。在任何情况下,他们都应该是有能力、没有偏见且私下没有其他工作要做的外部人员。第9章软件体系结构评估9.3ATAM评估方法9.3.1ATAM的参与人员ATAM评估小组角色(1)第9章软件体系结构评估9.3ATAM评估方法9.3.1ATAM的参与人员ATAM评估小组角色(2)第9章软件体系结构评估9.3