第十讲软件质量管理内容软件质量的基本概念和模型软件质量管理过程软件质量体系质量的度量提高软件质量的途径质量的重要性软件危机的主要矛盾低质量的软件就像定时炸弹低质量的产品,增加成本质量是生命也是信誉软件质量的重要性尽管所有的商品或服务都存在质量问题,但是软件的特殊性,特别是复杂性和不可见性,使其更为重要软件的无形性:很难知道项目中的特定任务是否完全满足软件开发过程中的错误积累软件危险性的增加:企业越来越依赖软件质量的概念符合目的或者用途(JosephJuran)用户的感觉就是质量(AVFeigenbaum)符合顾客在其合理价格下对产品的要求(SudIngle)产品或者服务满足明确和隐含需要能力的性能特性的总体(BS4778)质量的概念DavidGarvin:质量是一个复杂的多层面的概念,可以从以下5个方面来描述,这些不同的方面表达了一个整体的“质量”的概念。从先验论的角度看,质量是可以识别出来,但不能明确定义的从用户的角度看,质量是对目的的满足程度从制造的角度看,质量是对规范的符合程度从产品的角度看,质量是产品的内在特征从基于价值的角度看,质量依赖于客户愿意付多少钱购买。什么是软件质量?IEEE《StandardGlossaryofSoftwareEngineeringTerminology》:质量是系统、部件或过程满足(1)明确需求的程度。(2)客户或用户需要或期望的程度。质量管理理论的发展过程工匠自控质量检查19201940质量控制TQM质量保证19601970软件质量管理的发展过程发展时期程序设计程序系统年代成品开发组织方式开发技术特点开发工具质量管理特征软件工程至50年代末至70年代初至今程序软件软件产品个体项目设计组、软件作坊软件机构(软件工厂)靠开发者个人技巧机器代码、汇编语言个人设计、个人使用、手工技巧、无维护观念、无系统化方法程序设计理论深入、模块化、自顶向下,逐步求精,不重视维护问题高级语言、操作系统、数据管理系统靠少数人协调把关系统化、规范化、全员化逐步产生与各种方法相应的工具、开发环境结构化设计理论和方法面向对象方法、快速原型技术。。。软件质量框架模型Boehm软件质量模型软件质量模型多不胜数,Boehm(1976)构建了其中著名的一种。分层特性同时反映了用户的期望和硬件特性Boehm认为:合格的软件是能够满足该软件涉及到的用户和程序员的需求的软件。即软件作了用户要它做的事情正确有效的使用了资源易于学习和使用具有好的设计、编码,并且易于测试和维护软件质量模型1979年McCall等人改进Boehm质量模型又提出了一种软件质量模型。模型包括质量要素(factor)、准则(criteria)和度量(metric)三层次。McCall软件质量度量模型为软件质量管理奠定了基础McCall质量度量模型框要素(特性)评价准则评价准则评价准则度量度量度量面向管理观点的产品质量决定产品质量的软件属性定量化地度量软件属性McCall软件质量模型JamesA.McCall软件质量模型:产品修正性产品转移性产品运行性可维护性灵活性可测试性可移植性可重用性可互操作性正确性可靠性有效性完整性有用性计算软件质量要素软件质量要素Fj的值可用下式计算其中:Mk是软件质量要素Fj对第k种评价准则的测量值,Cjk是McCall定义的评价准则多数都没有客观的测量方法,只能凭主观印象为评价准则定值。McCall将评价准则分为0--10级。0级最低,10级最高。Mk的取值是0,0.1,0.2,…,1.011,...1,1jMCFLkkjkjMcCall软件质量要素评价准则加权系数Cjk满足∑Cjk=1其中Cjk≥0当质量要素Fj与k项评价准则无关时,Cjk=0McCall评价准则项数L=21质量要素与评价准则(1/2)要素关系准则正确性可靠性有效性完整性可维护可测试可移植可重用互操作可用性灵活性可审查性VV准确性V通信通用性V完全性V简明性VVV一致性VVVV数据通用性V容错性V执行效率V可扩充性V通用性VVVV质量要素与评价准则(2/3)要素关系准则正确性可靠性有效性完整性可维护可测试可移植可重用互操作可用性灵活性硬件独立性VVVV检测性VVV模块化VVVVVVV可操作性VV安全性V自文挡化VVVVV简单性VVVV软件独立性VV可追踪性V易培训性V质量要素与评价准则(3/3)软件质量准则质量因素软件质量准则正确性可追溯性、一致性、完备性可靠性容错性、一致性、精确性、简单性有效性执行有效性、存储有效性完整性访问控制、访问审计可用性可操作性、培训、沟通、输入/输出量、输入/输出率可维护性一致性、简单性、简洁性、模块性、自描述性可测试性简单性、模块性、工具、自描述性灵活性模块性、普遍性、可扩展性、自描述性可移植性模块性、自描述性、机器无关性、软件系统无关性可重用性普遍性、模块性、软件系统无关性、机器无关性、自描述性互操作性模块性、通信通用性、数据通用性ISO9126提出的目的:处理软件质量的定义问题。目前存在许多质量模型,如Boehm质量模型、McCall质量模型,但是缺乏公共的标准。如,可维护性可能指错误可以迅速的被定位和修改,也可以指软件能够很容易的被修改。1991年ISO9126标准就是处理软件质量的定义问题。这份13页的文档为制定进一步的标准奠定了基础。ISO9126质量模型ISO9126与Boehm模型的主要区别:ISO的层次结构是严格的左边的特性与软件用户的观点有关,与内部开发人员无关ISO9126质量模型质量特性定义功能性软件中所要求的功能的可用程度可靠性软件的可靠性程度可用性软件的可用性和软件用户判定软件易用的程度效率软件的效率可维护性软件产品易于修正和维护的程度可移植性软件从某一环境移植到另一环境的容易程度软件质量质量特性质量子特性度量功能性适合性准确性互操作性依从性安全性可靠性成熟性容错性易恢复性可使用性易理解性易学习性易操作性效率时间特性资源特性可维护性易分析性稳定性易变更性易测试性可移植性适应性易安装性遵循性易替换性度量由使用单位自行决定ISO9126也提供了使用这些质量特性的指南。对于不同的产品,各种质量特性的重要程度是各不相同的。一旦软件产品的需求建立起来以后,就要进行下列步骤:1、质量特性的度量的选择:ISO9126没有给出具体的方法2、排序水平定义:质量度量的结果需要映射成等级以确定需求满足的程度。Responsetime(second)Qualityscore252-344-536-728-91903、评价准则定义对每个特性进行评价后,需要对整个产品有一个综合的质量评价ISO9126没有给出具体的方法推荐方法:首先根据产品的特点确定强制性质量特性。如果产品在这些方面没有满足则不能采用。对于那些不是强制性的质量特征,采用如下方法进行综合计算:ProductqualityImportancerating(a)ProductAProductBQualityscore(b)Weightedscore(a*b)Qualityscore(b)Weightedscore(a*b)Usability31339Efficiency42828Maintainability23612overall1719内容软件质量的基本概念和模型软件质量管理过程软件质量体系质量的度量提高软件质量的途径质量形成于产品或者服务的开发过程中,而不是事后的检查把关等。质量管理质量管理的对象过程的质量产品的质量软件质量管理过程软件项目的质量计划软件质量保证软件质量控制质量计划确定项目应达到的质量标准决定如何满足质量标准的计划安排和方法质量计划模板参照项目概述实施策略项目组织质量保证对象分析及选择质量保证任务划分实施计划资源计划记录的收集、维护与保存质量保证的概念什么是质量保证,它是为保证产品和服务充分满足消费者要求的质量而进行的有计划、有组织的活动。质量保证是面向消费者的活动,是为了使产品实现用户要求的功能,站在用户立场上来掌握产品质量的。软件的质量保证就是向用户及社会提供满意的高质量的产品。软件的质量保证活动也和一般的质量保证活动一样,是确保软件产品从诞生到消亡为止的所有阶段的质量的活动。即为了确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动。软件质量保证的目标是以独立审查方式,从第三方的角度监控软件开发任务的执行,就软件项目是否遵循已制定的计划、标准和规程,给开发人员和管理层提供反映产品和过程质量的信息和数据,提高项目透明度,同时辅助软件项目组取得高质量的软件产品。质量保证(QA)质量保证的要点:在项目进展过程中,定期对项目各个方面的表现进行评价;通过评价来推测项目最后是否能够达到相关的质量指标;通过质量评价来帮助项目相关的人建立对项目质量的信心。软件质量保证的工作内容主要包括以下6类:与SQA计划直接相关的工作参与项目的阶段性评审和审计对项目日常活动与规程的符合性进行检查对配置管理工作的检查和审计跟踪问题的解决情况收集新方法,提供过程改进的依据质量保证与质量控制QA:Istofocustheprocess.QC:IstocontrolthequalitybeforedeliveryP1P2P3……ProductQAQCQA质量保证活动-审计(Audit)审计(Audit)是对过程或者产品的一次独立评估。将审核的主体与为该主体以前建立的一组规程和标准进行比较目的是确保真正的遵循了这一个过程,产生了合适的文档和精确反映实际项目的报告。可以预先规划的,也可以是临时决定的。质量保证组质量保证组独立于开发组,其主要活动:验证软件正确性的测试活动——充当客户代言人的角色;参与软件开发各小组的质量审计(audit):提供产品和过程的可视性——审计报告软件项目中常用的质量保证活动审计(Audit)项目执行过程评审(审计):对项目的执行过程进行检查,确保所有活动遵循规程进行。项目产品审计:对项目过程中的工作产品进行质量审查的过程。记录不符合项编写产品审计报告软件项目中常用的质量控制活动静态分析动态测试(Test)缺陷追踪静态分析定义:不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态测试技术。方法:走查:WalkThrough审查:Inspection评审:ReviewMichaelFaganIBM(1976)静态分析的主要对象软件需求规格软件设计规格测试计划用户手册源代码。。。。。。软件测试单元测试集成测试系统测试压力测试接受测试。。。。。。软件测试目的(1)测试是程序的执行过程,目的在于发现错误;(2)一个好的测试用例在于能发现至今未发现的错误;(3)一个成功的测试是发现了至今未发现的错误的测试。内容软件质量的基本概念和模型软件质量管理过程软件质量体系质量的度量提高软件质量的途径质量体系组织结构程序过程资源质量体系为实施质量管理所需的组织结构、程序、过程和资源。质量体系与质量计划的区别质量体系是企业长期遵循和需要重复实施的文件,具有较强的标准性质质量计划是一次性实施的,项目结束,质量计划的有效性就结束。一个质量体系例子过程改善组织程序规范产品标准保证执行决策、建立、维护包含关键过程域支持过程域过程规范产品过程执行组织质量保证组织保证质量体系要素关系图质量文件体系支持过程域产出ISO9000是国际标准化组织提出的企业质量体系标准,它由5个部分组成,着眼于质量管理和质量保证。这是一个通用的质量标准,适合各类制造业和服务业,要求认证的企业有文档记录并实现符合标准规定的20个质量要素,证明有提供满足客户要求的产品和服务的能力。该标准只是为企业建立良好的质量体系提供指导原则,但本身并不涉及相关的实现技术。GB/T19000-20