第九章软件质量管理与质量保证§9.1软件质量9.1.1影响软件质量的因素人的因素软件需求测试的局限性质量管理的困难软件人员的传统习惯开发规范开发工具支持不够什么是软件质量成本可靠维护及时交付正确功能功能成本及时交付软件质量的若干侧面9.1.2McCall提出的表明软件质量的11个质量特性▲使用性▲测试性▲正确性▲维护性▲可靠性▲移植性▲效率▲重用性▲完整性▲互操作性▲适应性(灵活性)9.1.3产品质量与过程质量产品质量开发技术成本、时间、进度过程质量人员素质影响产品质量的4个方面§9.2软件质量保证质量保证也是一个过程,已列入国际标准“ISO/IEC12207信息技术-软件生存期过程”中。9.2.1质量保证的主要功能质量方针的制定和展开质量保证方针的质量保证标准的制定质量保证体系的建立和管理各阶段的质量评审9.2.2质量保证的实施质量度量方法ISO建议的软件质量评价标准分为三级:高层:质量需求评价准则(SQRC)中层:质量设计评价准则(SQDC)低层:质量度量评价准则(SQMC)ISO建议的软件质量度量模型正确性可跟踪性完备性准确性容错性简洁性模块性通用性扩充性可容性效率安全性可维护性适应性连接性SQDCSQRCSQMC可用性一致性由各使用单位根据实际情况决定能用于软件质量定量评价的软件度量美国国防部AD报告:把质量表现形式归纳为190多个问题;IEEE质量标准词典规定:39组度量公式39个度量项分为四级:0级:已公式化,尚未被运行有效确认1级:已为软件界采用,应用范围有限2级:已被软件界接受,已取得一定经验3级:软件界已广泛使用,已取得相当经验3级的8个度量项(1)缺陷密度(2)需求可追踪性(3)Halstead软件科学(4)McCabe复杂性度量(5)发现k个缺陷的平均时间(6)按耗时作故障分析(7)平均故障时间(8)故障率9.2.3技术评审软件评审是一个“过滤器”,用于“净化”软件工程各项活动§9.3软件可靠性硬件系统故障率0tZ(t)软件系统故障率0tZ(t)9.3.1基本概念软件可靠性定义在给定时间间隔内和特定的环境下,软件按规格说明成功运行的概率。软件可靠性的主要指标借用硬件可靠性的定量度量方法来度量软件的可靠性:MTBF:平均故障间隔时间MTTF:平均故障时间t1,t2,.....,tn:失效时间MTTF=ni=1n1∑ti软件可靠性定义的要素(1)环境条件规定软件的使用环境(输入数据要求和环境)(2)规定时间时间t是随机变量。(3)规定的功能(4)成功运行§9.4质量管理、质量认证与质量审核质量管理的类型:(1)质量检验型管理(2)全面质量管理(3)质量认证软件质量保证体系的研究和主要技术目前国际上软件过程质量管理最主要的三个典型代表:•CMM/PSP/TSP•ISO9000系列•ISO/IEC15504过程与软件质量管理随着软件技术和软件应用的发展,以过程为中心的软件开发、生产与质量管理是现代软件产业的时代特征。质量形成于过程,高可信、高质量的软件必须依赖对软件过程的管理。过程与软件质量管理ISO90002000版将过程定义为“一组将输入转化为输出的相互关联或相互作用的活动”软件过程分为:•软件工程过程:软件开发和生产的过程,如:需求分析、设计、编码、测试等过程;•软件管理过程:对软件开发和生产的过程进行管理的过程,如:项目策划过程、跟踪监控过程、质量保证过程•软件支持过程:对软件开发和生产的过程进行支持的过程,如:评审过程、培训过程、质量过程。技术改进与过程改进的关系—技术改进必须与过程改进同时并举低技术高技术过程成熟过程不成熟低风险途径高风险途径原始态理想态可能无结果途径软件工程的五个发展方向方向说明技术组织管理编程方法例如:结构化编程面向对象编程高低低形式化方法例如:Z语言、CSP、…高低低计算机辅助软件工程例如:CASE工具高低低软件开发模型例如:瀑布模型、……高中低软件工程过程探讨软件过程(包括开发过程、软件支持过程或维护过程等)的管理和改进。例如:CMMSPICEBOOTSTRAPSPERM高高高软件过程的管理模式CMM:软件过程管理与改进CMM是软件工程过程学科中的一个管理与改进软件过程的模式,也是一种衡量软件开发能力和成熟度的标准。CMM/PSP/TSP技术流派CMM(软件能力成熟度模型:CapabilityMaturityModelForSoftware)是由美国卡内基梅隆大学的软件工程研究所(SEI:SoftwareEngineeringInstitute)受美国国防部评估软件供应商能力的要求,1986年开始研究制定,并在美国,随后在全世界推广实施的一种软件评估标准,主要用于软件开发过程和软件开发能力的评估和改进。CMM标准共分五个等级,由低到高分别为:初始级、可重复级、已定义级、定量管理级和优化级。1998年SEI启动了CMMI(CMMIntegration)CMMI通过提供统一的过程改进框架,消除了不同模型之间的不一致和重复性,可望成为今后软件过程改进领域比较稳定的一个实用模型。目前SEI正在进行二个方面的扩充:•将质量管理的理念和思想向人力资源管理方面扩展(PSP/TSP/P-CMM);•将过程技术与产品线技术融合;如2000年推出的软件产品线PLP(ProductsLinePractice)和COTS(CommercialOffTheShelf)ISO9000标准系列1987年ISO公布ISO9000质量管理和质量保证标准系列。至1997年底,约100个国家、地区推行ISO9000质量认证活动;ISO9000族列标准现有20个标准,分为五类:(1)质量术语标准:ISO8402-1994(2)质量保证标准(3)质量管理标准(4)质量管理和质量保证标准的选用和实施指南(5)支持性技术标准ISO9000主体可分为两组:用于“需方对供方要求质量保证”的标准:9001—9003用于“供方建立质量保证体系”的标准:—90049001、9002、9003的区别其对象的工序范围不同:9001范围最广,包括从设计到售后服务;9002是9001的子集;9003是9002的子集。ISO/IEC155041998年SPICE(SoftwareProcessImprovementandCapabilitydTermination)项目组织发表用于确定自我能力改造和进行软件供应商能力的国际标准ISO/IEC15504.该标准覆盖了过程评估、过程改进和过程能力确认等指南和模型。目前,有关组织正在就CMMI和15504标准的兼容性问题进行探讨,很有可能CMMI会最终和ISO/IEC15504标准兼容,并同时支持和兼容CMM。CMM模型及其实践在CMM模型及其实践中,企业的过程能力被作为一项关键因素予以考虑。所谓过程能力,是指把企业从事软件开发和生产的过程本身透明化、规范化和运行的强制化。这样一来,就可以把软件开发及生产过程中成功或失败的经验教训变成今后可以借鉴和吸取的营养,大大加快软件生产的成熟程度提高。在软件开发过程中,一些关键的过程域(KPA)可以被识别出来,成为某些CMM模型方法中的衡量基准。利用过去软件工程发展的成果,侧重这些关键过程域的实施,将会有效地建立一个过程,加快软件企业成熟度的提升。CMM级别世界软件企业通过CMM的数量世界软件企业通过CMM的份额5级41家3%4级54家4%3级232家17%2级438家32%1级600家44%CMM一共有5级,18个关键过程域(KPA),52个目标,300多个关键实践。据美国卡内基.梅隆大学SEI统计,至2001年6月底,CMM的认证情况如下表所示。过程成熟度框架要区分不成熟和成熟软件组织需要构造一个软件过程成熟度框架,它描述一条从无序到有序的软件过程的进化途径,框架是支持持续改进的基础。软件过程成熟度框架包括四个概念:•软件过程•软件过程能力•软件过程性能•软件过程成熟度:CMM分为五级软件过程成熟度的五个等级012345软件过程能力成熟度等级优化级(5)管理级(4)不断改进的过程定义级(3)重复级(2)初始级(1)可预测的过程标准的一致的过程有纪律的过程级别特点1初始级软件开发过程是一个偶然的甚至无序的过程,很少有明确的定义,成功完全依赖于个体的能力.2重复级实施基本的项目管理:跟踪软件成本、进度和功能。依照以往项目成功的经验来建立基本的过程规则,使得其他相似项目能重复以往的成功。3定义级软件过程的管理和实行方法都已文档化、标准化,使开发商有一个开发过程的标准。即所有项目都可以依照标准来开发和维护软件。4管理级定义了评估软件过程和产品质量的度量。利用此度量对软件过程和产品做出推断和控制。5优化级系统地引导新理念及技术的反馈,从而不断改进软件过程。5个成熟度等级在开发过程中变化的显著特点五级成熟度的特性等级1—初始级CMM1杰出的主管和优秀的队伍项目成功CMM1一般的主管和队伍项目成功难以预测等级2—重复级项目经验定义准则和跟踪新的类似项目再成功五级成熟度的特性等级3—定义级CMM重复定义软件过程可视和可控等级4—管理级软件过程能力量化改进与预测等级5—优化级已有的技术等级2—4中的改进已有的技术等级5中的优化新的技术CMM的内部结构与定义能力成熟度模型的结构过程能力成熟度等级关键过程域包含共同特点被规划成关键实践包含指示目标完成规范化阐述活动描述关键过程域优化级(5)过程更改管理技术改革管理缺陷预防管理级(4)软件质量管理定量过程管理每一个关键过程域指出了改进过程能力的主要过程定义级(3)同行评审组间协调软件产品工程集成软件管理培训大纲组织过程定义组织过程集点重复级(2)软件配置管理软件质量保证软件子合同管理软件项目跟踪和监督软件项目策划需求管理初始级(1)CMM成熟度等级的评估评估步骤:1.项目关键实践(被执行活动)的性能评分2.评定关键过程域所达到的目标3.项目的成熟度等级评定4.有多个项目的等级来评定组织(软件商)的成熟度等级重复级的关键实践需求管理:•执行约定•执行能力•被执行活动•测量和分析•检查软件项目计划:•……软件项目跟踪和监督:•……管理级的关键实践组织过程定义组织标准软件过程集成软件管理项目定义软件过程定量分析项目定义软件过程性能控制数据软件过程性能在定义的范围内定量过程管理改进定义过程管理软件质量管理软件质量管理定量过程管理软件产品管理集成软件管理管理级定义级实现定量目标:软件产品定量分析:项目定义软件过程实践:项目定义软件过程建立:项目定义软件过程软件过程评估和软件能力评价软件过程评估:集中关注一个组织所需改进之处及其轻重缓急;软件能力评价:集中关注识别一个特定项目再进度要求和预算限制内构造出高质量软件所面临的风险。软件过程评估和软件能力评价的差别是在开放、合作的环境中进行的;目的在于暴露问题和帮助经理和工程师改进他们组织的软件过程;软件过程评估软件能力评价是在更为面向审计的环境中进行的,评价的目的与金钱密切相关,评估评价组的推荐意见将影响挑选承制方或投放资金。统一软件开发过程RUPRUP(RationalUnifiedProcess)是Rational公司1998年发布的通用的软件开发过程框架RUP是一种软件工程过程;统一了各种开发方法;使用统一建模语言UML•RUP和CMM相辅相成;•软件企业使用RUP很容易达到CMM3级的要求;•RUP可以作为CMM3级所要求的机构标准软件过程;RUP的特点•用例驱动;•架构为核心;•增量迭代的开发过程;第十章软件复用§10.1软件复用概述10.1.1软件复用的定义软件复用就是通过对已有软件的各种知识来建立新的软件。这些软件知识包括:•领域知识•开发经验•设计决定•体系结构•需求•设计•编码•测试•文档等复用的益处•提高软件生产率,降低软件生产代价•提高软件质量•其它:•系统对用户体现较多的一致性•系统具有较好的互操作性•推动标准化•支持原型开发10.1.2软件复用的过程•抽象:从已有软件制品的简要描述中抽取本质信息(即可复用部分),摒弃细节