1、第九章 软件体系结构评估,内容,9.1 体系结构评估概述9.2 软件体系结构评估方式9.3 ATAM方法9.4 SAMM方法,基本介绍,软件系统的基础是它的体系结构,软件体系结构将影响系统的很多质量属性。在软件体系结构确定下来以后,软件系统的这些属性就是可预见的。软件体系结构评估的目的在开发过程的早期,通过分析系统的质量需求是否在软件体系结构中得到体现,来识别软件体系结构设计中的潜在风险,预测系统质量属性,并辅助软件体系结构制定决策。,评估结果,软件体系结构评估会产生一个评估报告,报告的形式和内容随着所使用评估方法的不同而不一样。但是,通过软件体系结构评估可以回答下面两类问题:软件体系结构是否
2、适合用于基于它的软件系统?如果对于目前的系统有多个软件系统结构可以选择,那个是最适合的?,质量属性(1),在体系结构评估过程中,评估人员所关注的是系统的质量属性。所有评估方法所关注的质量属性有以下9个:,功能性可变性集成性互操作性,性能可靠性可用性安全性可修改性,质量属性(2),1.性能定义:性能是指系统的响应能力,即经过多长时间才能对某个事件作出响应,或者在某段时间内系统所能处理的事件个数。性能的度量:系统在单位时间内所能处理事件的个数,或完成某个事物处理需要的时间。,质量属性(2),2.可靠性定义:可靠性是软件系统在意外或错误使用的情况下,仍然能够维持软件系统的功能特性的基本能力,包括容错
3、能力和健壮性。容错:在错误发生时确保系统正确的行为,并进行内部“修复”;健壮性:保护应用程序不受错误使用和错误输入的影响,即在遇到意外错误事件时确保应用系统处于定义好的状态。可靠性的度量:平均失效等待时间(MTTF)和平均失效间隔时间(MTBF)。,质量属性(3),3.可用性定义:可用性是系统有效工作的时间比例。可用性的度量:两次故障之间的时间长度,或者是出现故障后系统能够恢复正常运行的速度。,质量属性(3),4.安全性定义:安全性是指系统在为合法用户提供服务的同时能够抵制未授权的使用请求和拒绝服务的能力。安全性的类型分类:机密性:保证信息不泄露给未授权的用户、实体或过程完整性:保证信息的完整
4、性和准确,防止信息被非法修改不可否认性:保证系统的用户无法抵赖自己曾经作过的操作可控性:保证对信息的传播及内容具有控制能力,防止为非法者使用。,质量属性(3/3),5.可修改性定义:可修改性是指能够快速有效地修改系统的能力。可修改性的分类:可维护性:在错误发生后“修复”软件系统的能力可扩展性:它以添加新功能或修改完善现有功能来考虑软件的未来成长结构重组:重新组织软件系统的构件及构件间的关系可移植性:系统能够在不同计算环境(硬件或软件)下运行的能力,质量属性(3/3),6.功能性定义:功能性是系统能够按照预期完成工作的能力。7.可变性定义:可变性是指软件体系结构能够通过扩展或修改来得到新的体系结
5、构的能力。,质量属性(3/3),8.集成性定义:集成性是指系统能与其他系统协作的程度9.互操作性定义:系统各组成部分之间或系统和其他系统之间的交互能力,内容,9.1 体系结构评估概述9.2 软件体系结构评估方式9.3 ATAM方法9.4 SAMM方法,软件体系结构评估的主要方式:基于调查问卷或检查表的评估方式基于场景的评估方式基于度量的评估方式,基于调查问卷或检查表的评估方式,该方法主要是通过问卷调查的方式向相关人员进行提问,再综合调查人员的观点,对SA做出最终评估。,基于调查问卷或检查表的评估方式,基于场景的评估方式,场景场景是对于风险承担者与系统进行交互的简短描述。一般采用刺激、环境、响应
6、三个方面来描述场景。,风险承担者系统体系结构所涉及到的人员。包括架构设计师、开发人员、维护人员等。,基于场景的评估方式,这种软件体系结构评估方式分析软件体系结构对场景也就是对系统的使用或修改活动的支持程度,从而判断该体系结构对这一场景所代表的质量需求的满意程度,综合所有场景的评估结果得出最后的结论。,基于场景的评估方式,优点:涉及到的参数与开发的人员较多,评估结果较准确,缺点:由于不同的应用系统对同一质量属性的理解不同,因此这种评估方法是基于特定领域的,基于度量的评估方式,度量是指为软件产品的某一个属性所赋予的数值,如代码行数、方法调用层次、构件个数等。该方法提供客观和量化的质量评估。主要工作
7、:(1)需要建立质量属性和度量之间的映射原则;(2)从软件体系结构文档中获取度量信息;(3)根据映射原则分析推导出系统的某些质量属性。,基于度量的评估方式,优点:能够提供更为客观和量化的质量评估,缺点:要在体系结构的设计基础完成后才能评估,而且要求评估人员对系统结构较熟悉,三种评估方式的比较,内容,9.1 体系结构评估概述9.2 软件体系结构评估方式9.3 ATAM方法9.4 SAMM方法,ATAM评估方法,基本介绍,体系结构权衡分析方法(ATAM)是在SAAM的基础上发展起来的,SAAM考察的是软件体系结构单独的质量属性。而ATAM提供从多个竞争的质量属性方面来理解软件体系结构的方法。ATA
8、M方法不但能够反映一个软件体系结构满足某些特定质量目标的程度,同时还能够给出这些质量目标相互之间的交互方式,即它们之间是如何权衡的。,方法步骤,整个 ATAM评估过程包括下面的九个步骤:描述ATAM方法描述商业动机描述体系结构确定体系结构的方法生成质量属性效果树分析体系结构方法讨论和分析场景分析体系结构方法(是第六步的重复)描述评价结果,描述ATAM方法,描述商业动机,项目决策者(最好是项目经理或系统关键客户)从商业角度来介绍系统的概况。,描述商业动机,描述体系结构,在这一步中,首席设计师或设计小组要对体系结构进行详略恰当的介绍。“详略恰当”的因素包括软件体系结构相关文档的详细程度,可用的时间
9、、行为和质量需求的实质。,描述体系结构,描述体系结构,确定体系结构的方法,设计师确定体系结构方法,由分析小组捕获,但不进行分析。体系结构的方法定义了系统的关键结构,描述了系统的成长方式、应对变化的方式、抵制攻击的方式、与其它系统集成的方式等等。,生成质量属性效用树,评估小组、设计小组、管理人员和客户代表一起来确定系统最重要的质量属性目标,并对它们进行优先级划分和细化。体系结构级的分析不能考虑到所有的方面,所以需要通过构建效用树的方式来实现对体系结构各个方面的分析。,生成质量属性效用树,分析体系结构方法,根据效用树对实现重要质量属性的体系结构方法进行考察。并列出体系结构方法或风格的列表。,分析体
10、系结构方法,讨论和分级场景,了解主要的利益相关群体集体讨论3种类型的场景用例场景,代表利益相关人员所期望的系统使用方式;成长场景,代表软件体系结构处理成长和变化的方式;探索场景,代表成长的极限形式,包括新的性能或可用性需求、架构的主要改变或系统的任务等等。,分析体系结构方法,在收集并分析了场景之后,设计师就可以把最高级别的场景映射到所描述的体系结构中,并对相关的体系结构如何有助于该场景的实现作出解释。,描述评价结果,最后,要把ATAM分析中所得到的各种信息进行归纳,并反馈给风险承担者。评估结果包括:已文档化的体系结构方法或风格场景及优先权基于属性的问题效用树所发现的风险决策已文档化的风险决策所
11、发现的敏感点和权衡点,ATAM评估的四个阶段,阶段1:评估团队在这个阶段被建立,同时评估组织与需要评估软件体系结构的组织建立合作伙伴关系。阶段2:这个阶段以软件体系结构为中心,着重于获取软件体系结构信息并对其进行分析。阶段3:这个阶段以利益相关人员为中心。着重于获得利益相关人员的观点然后验证第二个阶段的结果。阶段4:在这个阶段中产生最终的报告,计划接下来的动作,然后评估组织更新其业绩记录和经验基础。,内容,9.1 体系结构评估概述9.2 软件体系结构评估方式9.3 ATAM方法9.4 SAMM方法,基于场景的体系结构分析方法(SAAM)是最早形成文档并得到广泛使用的软件体系结构分析方法。该方法
12、最初用来分析软件体系结构(SA)的可修改性,后来实践证明也可以用于其他质量属性的评估,如可移植性、可扩充性等。SAAM使用场景作为评估质量属性的表述手段,如果是评估单个软件体系结构,SAAM将指出体系结构中未能满足质量属性需求的地方,并提出改进的意见。而对于多个体系结构的比较,则明确哪一个能更好地满足质量属性需求。,第九章 软件体系结构评估,典型基于场景的评估方法SAAM方法简介,第九章 软件体系结构评估,典型基于场景的评估方法SAAM方法工作原理,1.形成场景,2.描述体系结构,4.对间接场景进行单个评估,3.对场景进行分类和确定优先级,5.评估场景的相互作用,6.形成总体评估,形成场景,场
13、景能够说明系统必须支持的活动类型,同时还必须说明客户参与者将给系统带来的变化类型。通过集体讨论的方式获取场景。形成场景和软件体系结构描述的过程是相关的,同时也是迭代的。,描述体系结构,结构设计师应该采用参加评估的所有人员都能够理解的形式,对待评估的体系结构进行描述。描述既可以采用自然语言,也可以采用形式化语言。,对场景进行分类和确定优先级,直接场景场景的进行不需要修改软件体系结构间接场景场景没有被直接支持,但存在一些可表示的软件体系结构的变化来支持场景,对间接场景进行单个评估,设计人员需要说明如何修改软件体系结构才能适应间接场景。并列出支持场景必须对软件体系结构做得修改,然后还要估计修改的代价
14、。,评估场景的相互作用,当多个间接场景需要修改软件体系结构的同一个构件时,我们就称这些场景在此构件上相互作用。,形成总体评估,评估人员要对场景和场景之间的交互作一个总体的权衡和评价,根据每个场景对系统成功的相对重要性来为每个场景设置一个权值。,第九章 软件体系结构评估,典型基于场景的评估方法SAAM实例应用,我们所要分析的系统是一个简单的在文章中查找和重组关键词(Key Word In Context,KWIC)的系统。该系统的基本功能是,输入一些句子,KWIC系统把句子中的词语重新组合成新的句子,然后按字母顺序进行输出。,输入:predicting software qualty,输出:pr
15、edicting software qualtyqualty predicting softwaresoftware qualty predicting,输入,主控程序,循环转换,按字母顺序排序,输出,句子存储,转化索引,按字母顺序排序索引,计算构件,数据存储,数据流,控制流,主控程序,输入,输出,句子存储,set,转换句子,setup,getNext,按字母顺序排序句子,i-th,getNext,setup,计算构件,数据存储,数据流,控制流,抽象数据类型,场景设计主要设计下面三个场景:修改KWIC程序,使之成为一个增量方式而不是批量处理方式。修改KWIC程序,使之能删除在句子前端的噪音单词
16、。改变句子的内部表示。,循环转换,输出,句子存储,转化索引,按字母顺序排序索引,输出,句子存储,set,转换句子,setup,getNext,按字母顺序排序句子,i-th,getNext,输入,主控程序,按字母顺序排序,输出,句子存储,转化索引,按字母顺序排序索引,主控程序,输入,输出,句子存储,set,getNext,i-th,getNext,setup,转换句子,按字母顺序排序句子,输入,主控程序,循环转换,按字母顺序排序,输出,句子存储,转化索引,按字母顺序排序索引,主控程序,输入,输出,句子存储,setup,getNext,i-th,setup,转换句子,按字母顺序排序句子,总结我们首先介绍了软件体系结构评估的9个主要的质量属性。其次介绍了软件体系结构评估的三种主要方法(1)基于问卷的评估方式(2)基于场景的评估方式(3)基于度量的评估方式。然后具体介绍了两种基于场景的评估方式:SAAM和ATAM评估方法,并针对SAAM介绍了一个实例。现在的评估都是由人工来完成的,如果可以设计一套自动评估的工具来帮助设计师来分析结构是一件很有意义的事情。,