软件体系结构评估
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件体系结构评估
计算机101 聂英子 10416105
1.软件体系结构的发展历史
软件体系结构本质上并不是一个全新的概念,早在20 世纪六七十年代,Dijkstra 和Parnas 等人对软件设计基本原则的研究就是对软件体系结构的最初认识[1].自20 世纪90 年代,Perry & Wolf 和Garlan & Shaw 分别提出了软件体系结构的概念[2,3]以来,软件体系结构得到了学术界和工业界的广泛重视.虽然10 多年来出现了上百个关于软件体系结构的定义(详见CMU-SEI 网站的收集),但是在以下方面的认识是一致的:1) 软件体系结构是软件系统的结构(或组织),包括构件(组成元素)、构件的外显特性和构件之间的关系;2) 软件体系结构是软件开发过程早期的一项软件制品,是一组使系统满足系统涉众(stakeholder)功能和非功能需求的设计决策。
Pressman 在他的书中这样写道“软件工程方法的唯一目标是:生产高质量的软件”[4].软件质量从软件工程的诞生起就一直得到广泛关注,但是人们对软件质量的认识却在发生变化,其内涵愈加丰富,从功能属性、性能属性,到可移植、可扩展、易用、易维护、安全、可靠等诸多非功能质量属性;从满足用户需求到满足系统涉众的需求.如何在一个系统中平衡诸多属性(这里,将系统对需求的满足也作为系统可表征的属性),给系统开发方提出了挑战.“缺陷放大模型”以及业界大量的统计数据表明[4]:修正软件缺陷的成本随着发现该缺陷的时间推迟而增长,而且50%~75%的缺陷是设计阶段注入.软件体系结构评估的目的就是为了在开发过程的早期,通过分析系统的质量需求是否在软件体系结构中得到体现,识别软件体系结构设计中的潜在风险,预测系统质量属性,并辅助软件体系结构决策的制定.
2.软件体系结构的概念
目前,软件体系结构的有关定义说法不一:有文献将软件体系结构定义为:在软件密集的大规模系统或具有类似需求和结构的软件产品线的开发中,必须从一个较高的层次来考虑组成系统的构件、构件之间的交互,以及由构件与构件交互形成的拓扑结构,这些要素应该满足一定的限制,遵循一定的设计规则,能够在一定的环境下进行演化。而且,软件体系结构应能反映系统开发中具有重要影响的设计决策,便于各种人员的交流,反映多种关注,据此开发的系统能完成系统既定的功能和性能需求。
而另一种定义为:软件体系结构的问题包括软件系统整体的组织和控制结构;通讯、同步和数据存取的协议;系统单元的功能分配;物理分布;系统单元的集成;系统性能以及在各设计方案间进行选择等问题。
还有一种定义是:软件体系结构的一个简单定义:软件体系结构是一个程序或系统的组件的组织结构、它们之间的关联关系、以及支配系统设计和演变的原则及方针。
尽管各种定义都从不同的角度关注软件体系结构,但其核心内容都是软件系统的结构,并且都涵盖了如下一些实体:构件、构件之间的交互关系、限制、构件和连接件构成的拓扑结构、设计原则与指导方针。
3.软件体系结构的评估
所谓软件体系结构的分析评估,就是事先通过代价低廉的评估活动来识别软件结构中存在的潜在风险,找出软件体系结构中影响系统质量的主要因素及改进措施,并在此基础上检
验软件的质量需求是否在具体设计中得到体现,并预测未来软件质量。软件体系结构在软件开发和管理中扮演着越来越重要的角色。软件体系结构设计是对软件质量有着至关重要的影响,对于确保最终系统的质量有重要的意义。软件体系结构评估,是对系统的某些值得关心的属性(性能、可靠性等)进行评价和判断。评估的结果可用于确认潜在的风险,并检查设计阶段系统需求的质量,在系统被实际构造之前,预测其质量属性。软件体系结构评估中,评估人员关注的是软件系统质量,这些质量可用性能、可靠性、可用性、安全性、功能性、可变性、集成性、互操作性等相关属性来表示。评估人员首先提出具体质量指标,并以这些质量指标作为软件体系结构优劣的评估标准。
4 .软件体系结构的发展现状
近年来,人们逐渐认识到软件体系结构在软件开发中的重要地位,好的软件体系结构已经是决定一个软件系统成功的重要因素。因此,软件工程研究人员将研究热点集中到软件体系结构的研究上。目前已有一些公用的体系结构范型,如管道过滤器、层次系统、Client Server 结构等。但是软件体系结构的研究尚处在发展之中,用于对软件体系进行规格描述的模型、标记法和工具目前仍很不正规,只是用特定的方式来理解并用于特定的系统。软件系统设计者没有从系统体系结构中寻找共性,以便在特定领域形成通用的体系结构范型;没有对体系结构模型进行选择的原则,甚至没有能将他们的设计技巧规范地表达出来。因此,为了使模型、标记法更为精确和健壮,在很多方面的研究工作还需要继续进行,如充实、完善公用体系结构范型中所用的术语,使之标准化和规范化。另外还要为软件构件间的交互定义更好的抽象模型并加以实现。建立完善的软件体系结构的形式模型、描述方法、度量模型、评价方法和可复用的软件体系结构范型库,将有助于对软件的理解、复用,以及解决软件危机问题,并且使以后的软件开发者节省时间。
20 世纪90 年代以来,软件体系结构的评估技术一直是研究的热点问题.软件体系结构的评估技术不断出现,一些方法已经比较成熟并得到了应用和验证,如基于场景的软件体系结构分析方法——SAAM[5]、软件体系结构折中分析方法——ATAM[6]、利用软件性能工程SPE 对软件体系结构进行评估的PASA 方法[7,8]、软件体系结构层次可维护性预测方法——ALMA[9,10]等.近年来,随着技术和应用经验的积累,一些新的评估方法也逐渐出现,比如基于贝叶斯信念网的软件体系结构评估方法[11,12]、软件体系结构度量方法[13,14]等.
4.1 基于场景的评估方法
该类评估方法的基本观点是,大多数软件质量属性极为复杂,根本无法用一个简单的尺度来衡量.同时,质量属性并不是处于隔离状态,只有在一定的上下文环境中才能做出关于质量属性的有意义的评判[6].利用场景技术则可以具体化评估的目标,代替对质量属性(可维护性、可修改性、健壮性、灵活性等)的空洞表述,使对软件体系结构的测试成为可能[6].所以,场景对于评估具有非常关键的作用,整个评估过程就是论证软件体系结构对关键场景的支持程度.通过对多种基于场景的评估方法的分析,我们认为该类方法具有以下重要的特征:(1) 场景是这类评估方法中不可缺少的输入信息,场景的设计和选择是评估成功与否的关键因素;(2) 这类评估是人工智力密集型劳动,评估质量在很大程度上取决于人的经验和技术.基于场景的评估方法是研究最广泛,应用最成熟,数量最多的一类软件体系结构评估方法.本文调查了9 种基于场景的评估方法,分别是基于场景的软件体系结构分析方法(SAAM)[ 5 ]、基于复杂场景的SAAM(SAAMCS)[18]、基于领域的 SAAM(ESAAMI)[19]、软件体系结构折中分析方法(ATAM)[6]、针对演化和重用的SAAM(SAAMER)[20]、设计中间产品积极评审方法(ARID)、软件体系结构层次的可更改性分析方法(ALMA)[9,10]、基于模式软件体系结构评估方法(PSAEM)[21]、基于方面的SAAM(ASAAM)[22]、软件体系结构层次的可用性分析方法(SALUTA)[23].利用第1 节中的评价框架,针对基于场景的评估方法的特点,本文从软