您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程课件--lecture2_sqm
软件工程2009年秋季学期本次作业•各小组商讨集体项目的选题,并于下次上课前上报教师或助教,要求参见上节课软件质量软件也有质量•质量是产品的生命,软件也不例外•在预算经费范围内,按期完成并且移交给用户使用,而且此系统也能正确执行用户要求的功能,是不是已经足够了呢?是不是可以肯定这样的软件系统是一个高质量的软件系统呢?•还不够?为什么?(人心不足蛇吞象!)因为……•虽然正确执行了功能,但是还可能:•难以理解,难以修改,难以维护•难以使用,容易出错•难以于其它软件系统组合,甚至共处•或许可靠性差,时不时死机•这一切表明:正确不等于高质量什么是软件质量•IEEE729-1983定义:与软件产品满足规定的和隐含的能力有关的性质和特性的全体,或-软件产品中能满足给定需要的性质和特性的总体-软件具有各种属性组合的程度-用户觉得软件满足其综合期望的程度-软件在使用中满足用户预期要求的特性的合成程度例子1•某公司开发的软件产品X,邀请了国内外若干专家参加鉴定会,与会专家一致表示,该产品让专家组十分满意,并已达到地方/国内/国际先进水平……•这是否表明该软件产品的质量?为什么?例子2•某软件产品是由著名软件企业X联合另一家在行业内居领先地位的Y公司开发的,花费超过千万元;该开发团队阵容强大,拥有一大批经验丰富,在本行业内有盛名的顶尖级的开发人员;同时开发过程采用目前最先进的技术和工具……•这一切就是本软件产品质量的无可争议的最好证明!例子3•某机构组织用户对同一类型的三种软件产品进行质量评定,让用户对该三种产品每一种分别打一个分(按照优良中差或百分制),结果表明产品A的打分明显高于其他两种,于是我们说,产品A的质量高于其他。•这种做法是否有问题?软件质量定义的讨论•满足用户需求•软件自身的内在特性•特性的全体软件质量评价技术•1968年,Rubey和Hartwick最早提出了从整体上来度量软件质量。但并未建立模型,方法也不完全•1976年,Boehm提出了定量评价软件质量的概念,并首次提出质量度量的层次模型•1978年,McCallWalters等提出了三层次模型•G.Murine在此基础上提出了SQM技术,并得到使用•国际标准化组织(ISO)于1985年以来提出了有关的报告,1993年正式出台ISO9126软件质量评价技术(续)•ISO9126由几部分构成目前最新的版本包括:-ISO9126-1:2001质量模型-ISO9126-2:2003外部度量-ISO9126-3:2003内部度量-ISO9126-4:2004实用度量•第二代软件产品质量标准:SQuaRE–SoftwareQualityRequirementsandEvaluation软件质量需求和评价,即ISO25000:-ISO25000:2005GuidetoSQuaRE$112Boehm模型讨论•1976首次提出软件质量度量模型•软件质量可从三方面来考虑:软件的可使用性,软件的可维护性,软件的可移植性•软件质量分解为若干层次,对于最底层的软件质量概念再引入数量化的指标,从而得到软件质量的总体评价McCall等人的三层次模型•1976提出软件质量要素(factor),准则(criteria)到度量(metrics)的三层次式软件质量模型•软件质量基于11个要素之上,分别面向软件产品的运行(operation),修正(revision)和转移(transition)•要素是质量的反映,软件属性可用作评价准则,定量化的度量属性可反映质量优劣ISO的软件质量模型•1985年建议,软件质量度量模型由三层组成:-高层(toplevel):软件质量需求评价准则(SQRC)-中层(midlevel):软件质量设计评价准则(SQDC)-低层(lowlevel):软件质量度量评价准则(SQMC)•对高层和中层建立标准,对低层则应由各机构根据实际情况确定•1993年,ISO9126出台层次式模型ISO9126ISO9126•来源于McCall等人的模型•高层,中层,低层分别对应于McCall等人的要素,准则和度量•一级质量特性面向用户软件质量要素的选取•面向用户,面向软件开发人员,还是面向管理者?•McCall选择可测试性作为质量要素,这是面向开发人员的。开发人员对软件进行测试的难易程度感兴趣,而用户则不然•ISO最终选择了面向用户,采用了6个软件质量要素(一级质量特性)ISO9126选取的软件质量一级特性•功能性(functionality):软件实现的功能满足用户需求的程度•可靠性(reliability):在规定的一段时间和条件下,与软件维持其性能水平的能力•易用性(usability):由一组规定或潜在的用户为使用软件所需作的努力程度•效率性(efficiency):与在规定条件下软件的性能水平与所使用资源量之间关系•可维护性(maintainability):与进行指定的修改所需的努力程度•可移植性(portability):与软件从一个环境转移到另一个环境的容易程度功能性(functionality)•实现的功能满足用户需求的程度•用户的(明确的和隐含的)需求是否满足•用户要求的功能是否全部实现了•最基本的质量需求可靠性(reliability)•在规定的时间和条件下,软件所能维持其性能水平的程度•反映了软件正常运行的程度•也反映了在故障发生时能继续运行的程度•重要的质量需求易用性(usability)•用户学习、操作、准备输入和理解输出时所做努力的程度•反映了用户友好性,使用软件时是否方便•对于许多软件来说,这都是重要的质量需求效率(Efficiency)•在指定的条件下,用软件实现某种功能所需的计算机资源的有效程度。•反映了软件在完成功能时,没有浪费资源•资源包括了存储空间,通道能力和处理器时间可维护性(maintainability)•在一个可运行的软件中,为了满足用户需求,环境改变或者软件错误发生时,进行相应的修改所作的努力程度•反映了对软件系统进行修改的容易程度•容易维护的系统也是易理解、易测试和易修改的软件可移植性(portability)•从一个计算机系统或环境转移到另一个计算机系统或环境的容易程度•反映了软件对其所运行的环境的依赖程度质量要素间的关系•6个要素间存在着有利和不利影响(考虑功能性和可靠性,效率和可维护性)•软件质量要素之间有时是矛盾的,不可能在所有方面都达到最优•对于具体的软件来说,只能有所侧重•每一个质量要素,都与若干个二级质量特性相联系二级质量特性•包括:若干特性(参见前图)•一级特性的分解和转换,面向技术。对各类技术人员有用度量•每个二级特性分解为若干度量•一个度量可以对应于几个二级特性•度量是一些信息或数据,可以从软件产品的开发过程取得,有些需通过计算获得确定软件质量需求•对不同的软件,各个要素的重要性不同(考虑实时系统,生存期很长的系统)•先考虑三个基本要素:功能性,可靠性和可维护性•基本要素的质量指标过低,会影响其他要素高质量指标的实现软件质量管理活动•质量要求和质量指标的确定•开发过程中的质量控制•产品质量评价和验收标准•软件质量的可测性和定量化质量需求影响开发举例•以可移植性为例:•-实现同样的功能,有系统调用可以用、第三方工具库、语言标准库都能实现,如何选择?•-例如:C语言打开文件,fopen/open/OpenFile等等软件综合评价•质量评价•水平评价•效益评价•软件成本质量保证(QualityAssurance)软件质量控制•定义简明而又清晰,却很难把握•常常难以定量化•不确定的因素太多(涉及太多的人和事)•“只有看到的时候才能知道”重温软件质量度量模型•功能性(functionality)•可靠性(reliability)•易用性(usability)•效率性(efficiency)•可维护性(maintainability)•可移植性(portability)质量保证技术•评审•标准化•度量•测试系统测试与质量保证•将被测试的软件放在运行环境中进行综合的测试和检验•软件产品付诸使用前的一道完整有系统的测试•是质量保证的最后一道关键环节,直接影响产品的质量系统测试的任务•系统功能确认测试•系统验收测试•强度测试•背景测试•性能测试•配置测试•恢复测试•安全性测试•其它测试验收测试•验收测试:由用户参与的测试,对系统进行最后的确认•Alpha测试:用户在开发者的指导下进行测试•Beta测试:由最终用户在实际环境中使用进行测试,不受开发者的控制•验收通过,产品发行测试与质量•开发测试(查找和排除错误)•系统测试(符合需求)•验收测试(用户满意)•质量评价软件错误(bug)生命周期•影响软件质量•必须跟踪管理•何时发现,是否重复,何时解决…•工具Bugzilla-软件bug跟踪工具•Mozilla组织的自由软件•在业界广为使用,包括许多商业公司和著名系统软件•拥有商业支持•官方网站的用户•FreeSoftwareProjects•Mozilla:•LinuxKernel:•Gnome:•KDE:•ApacheProject:•OpenOffice:•Eclipse:•LinuxDistributions•RedHat:•Mandrake:•Gentoo:•TurboLinux:•Novell:•Companies•Ximian:•NASA:•IdSoftware:更多….•A•AaronGraves(public)AbiWord(public)ABLEatCarnegieMellionUniversity(public)AccessGrid,ArgonneNationalLaboratory(public)Achievo(public)Activestate(public)ad2,Inc.AddMomentumAdexaInc.AditiTechnologiesPvt.Ltd(public)AffinegyLLCAGXTechnologyAimetisAkamaiTechnologies,IncAKQAAlgentaTechnologiesAlice(public)ALMWorksAltapAltasysAmcorAMDAmericanMegatrends,Inc.(AMI)AMPYMeteringLimitedAnopeIRCServices(public)AnywareTechnologiesApacheProject(public)ApexInternetSolutionsApplySolutionsArcheusCapitalManagementArythia(public)ASPLinux(public)AspectC++(public)ASPLSoftware(public)aspseek.org(publi
本文标题:软件工程课件--lecture2_sqm
链接地址:https://www.777doc.com/doc-213361 .html