第10章软件质量与质量保证第10章软件质量与质量保证10.1软件质量的概念10.1.1软件质量定义与软件产品满足规定的和隐含的需要的能力有关的特征或特性的组合。软件质量的特性:与明确确定的功能和性能需求的一致性。即软件需求是质量度量的基础,缺少与需求的一致性就无质量可言;与明确成文的开发标准的一致性。不遵循专门的开发标准将导致软件质量低劣;与所有专业开发的软件所期望的隐含的特性的一致性。忽视软件隐含的需求,软件质量将不可信。第10章软件质量与质量保证10.1.2影响软件质量的因素正确性:系统满足规格说明和用户的程度,即在预定环境下能正确地完成预期功能的程度。健壮性:在硬件发生故障、输入的数据无效或操作等意外环境下,系统能做出适当响应的程度。效率:为了完成预定的功能,系统需要的计算资源的多少。完整性:对未经授权的人使用软件或数据的企图,系统能够控制的程度。可用性:系统在完成预定应该完成的功能时令人满意的概率。风险性:按预定的成本和进度把系统开发出来,并且使用户感到满意。可理解性:理解和使用该系统的容易程度。第10章软件质量与质量保证可维修性:诊断和改正在运行现场发生的错误所需要的概率。灵活性:修改或改正在运行的系统需要的工作量的多少。可测试性:软件容易测试的程度。可移植性:把程序从一种硬件配置和(或)软件环境转移到另一种配置和环境时,需要的工作量多少。有一种定量度量的方法是:用原来程度设计和调试的成本除移植时需要的费用。可再用性:在其他应用中该程序可以被再次使用的程度(或范围)。可运行性:把该系统和另外一个系统结合起来的工作量的多少。第10章软件质量与质量保证软件质量评价应遵循的原则:应强调软件总体质量(低成本高质量),而不应片面强调软件正确性,忽略其可维护性与可靠性、可用性与效率等;软件生产的整个周期的各个阶段都注意软件的质量,而不能只在软件最终产品验收时注意质量;应制定软件质量标准,定量地评价软件质量,使软件产品评价走上评测结合,以测为主的科学轨道。第10章软件质量与质量保证10.2软件质量的度量10.2.1软件度量软件度量是对软件开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。软件开发主体及其度量内容角色度量内容经营者开发组织(1)顾客满意度;(2)收益;(3)风险;(4)绩效;(5)发布的缺陷的级别;(6)产品开发周期;(7)日程与作业量估算精度;(8)复用有效性;(9)计划与实际的成本第10章软件质量与质量保证角色度量内容管理者项目组(1)不同阶段的成本;(2)不同开发小组成员的生产率;(3)产品规模;(4)工作量分配;(5)需求状况;(6)测试用例合格率;(7)主要里程碑之间的估算期间与实际期间;(8)估算与实际的员工水平;(9)结合测试和系统测试检出的缺陷数目;(10)审查发现的缺陷数目;(11)缺陷状况;(12)需求稳定性;(13)计划和完成的任务数目作业者软件开发人员(1)工作量分配;(2)估算与实际的任务期间与工作量;(3)单体测试覆盖代码;(4)单体测试检出缺陷数目;(5)代码和设计的复杂性第10章软件质量与质量保证10.2.2软件度量的分类度量维度侧重点具体内容项目度量理解和控制当前项目的情况和状态;项目度量具有战术性意义,针对具体的项目进行。规模、成本、工作量、进度、生产力、风险、顾客满意度等产品度量侧重理解和控制当前产品的质量状况,用于对产品质量的预测和控制。以质量度量为中心,包括功能性、可靠性、易用性、效率性、可维护性、可移植性等过程度量理解和控制当前情况和状态,还包含了对过程的改善和未来过程的能力预测;过程度量具有战略性意义,在整个组织范围内进行。如成熟度、管理、生命周期、生产率、缺陷植入率等第10章软件质量与质量保证10.2.3软件度量过程1.过程计划的制定(1)确认范围(2)定义程序步骤2.过程的实施(1)数据的采集(2)数据的分析3.过程的改善(1)确认目标(2)对当前能力的理解及评价第10章软件质量与质量保证(3)设计度量过程(4)过程原型(5)过程文档(6)过程实施(7)程序扩展第10章软件质量与质量保证10.3软件质量保证功能:质量方针的制定和开展;质量保证方针和质量保证标准的制定;质量保证体系的建立和管理;明确各个阶段的质量保证工作;各个阶段的质量评审;确保设计质量;重要质量问题的提出与分析;总结实现阶段的质量保证活动;整理面向用户的文档、说明书等;产品质量鉴定、质量保证系统鉴定;质量信息的收集、分析和使用。第10章软件质量与质量保证10.3.1质量保证策略1.以检测为重:产品制成之后进行检测,只能判断产品质量,不能提高产品质量。2.以过程管理为重:把质量的保证工作重点放在过程管理上,对制造过程中的每一道工序都要进行质量控制。3.以新产品开发为重:在新产品的开发设计阶段,采取强有力的措施来消灭由于设计原因而产生的质量隐患。第10章软件质量与质量保证10.3.2质量保证的内容(1)与SQA计划直接相关的工作(2)参与项目的阶段性评审和审计(3)对项目日常活动与规程的符合性进行检查(4)对配置管理工作的检查和审计(5)跟踪问题的解决情况(6)收集新方法,提供过程改进的依据第10章软件质量与质量保证10.3.3软件质量保证措施1.基于非执行的测试(也称为复审或评审):用来保证在编码之前各个阶段产生的文档的质量;2.基于执行的测试(即前面讲过的软件测试):需要在程序编写出来之后进行,它是保证软件质量的最后一道防线;3.程序正确性证明:使用数学方法严格验证程序是否对它的说明完全一致。第10章软件质量与质量保证10.4ISO9000软件质量体系10.4.1ISO9000系列标准(1)ISO9000-1:1994质量管理和质量保证标准第一部分:选择和使用指南(2)ISO9000-2:1993质量管理和质量保证标准第二部分:ISO9001、ISO9002、ISO9003的实施指南(3)ISO9003-3:1991质量管理和质量保证标准第三部分:ISO9001在软件开发、供应和维护中的使用指南(4)ISO9000-4:1993质量管理和质量保证标准第四部分:可信性大纲管理指南。可信性大纲是用于管理可信性的组织、结构、职责、程序、过程和资源第10章软件质量与质量保证10.4.2ISO9000质量认证的一般程序1.1.质量认证的一般程序(1)准备阶段(2)认证阶段2.ISO9000国际标准的应用第10章软件质量与质量保证10.5软件配置管理10.5.1软件配置项基线是软件生存期中各开发阶段的一个特定点,它的作用是把开发各阶段工作的划分更加明确化,使本来连续的工作在这些点上断开,以便于检查与肯定阶段成果。因此基线可以作为一个检查点,在开发过程中,当采用的基线发生错误时,我们可以知道处于的位置,返回到最近和最恰当的基线上。软件配置项(SCI)是软件工程中产生的信息项(文档、报告、程序、表格数据),是配置管理的单位。不直接执行的材料:如书写的文档、程序清单、测试数据、测试结果等。可直接执行的材料:如目标代码、数据库信息等。它们可由计算机处理,存于某种存储介质上。第10章软件质量与质量保证10.5.2软件配置管理过程1.配置标识:(名字、描述、一组“资源”,“实现”)2.版本控制3.变更控制4.配置状态报告5.配置审核正式技术评审:着重检查已完成修改的软件配置对象的技术正确性,它应对所有的变更进行,除了那些最无价值的变更之外。软件配置审核:它是正式技术评审的补充,评价在评审期间通常没有被考虑的SCI的特性。软件配置审核提出并解答以下问题。第10章软件质量与质量保证10.6软件过程能力成熟度模型简介10.6.1基本概念1.软件过程指人们开发和维护软件及其相关产品所采取的一系列活动。2.软件过程能力与性能软件过程能力是软件过程本身具有的按预定计划生产产品的固有能力。软件过程性能是软件过程执行的实际结果。第10章软件质量与质量保证3.软件过程成熟度软件过程成熟度是指一个软件过程被明确定义、管理、度量和控制的有效程度。CMM模型包括的内容:第10章软件质量与质量保证成熟度等级:一个成熟度等级是在朝着实现成熟软件过程进化途中的一个妥善定义的平台。过程能力:软件过程能力描述通过遵循软件过程能实现预期结果的程度。关键过程域:每个成熟度等级由若干关键过程域组成。关键过程域分别定义在各个成熟度等级之中,并与之联系在一起。目标:目标概括了关键过程域中的关键实践,并可用于确定一个组织或项目是否已有效地实施了该关键过程域。目标表示每个关键过程域的范围、边界和意图。第10章软件质量与质量保证公共特性:CMM把关键实践分别归入下列5个公共特性之中:执行约定、执行能力、执行活动、测量和分析以及验证实施。公共特性是一种属性,它能指示一个关键过程域的实施和规范化是否是有效的、可重复的和持久的。关键实践:每个关键过程域都用若干关键实践描述,实施关键实践有助于实现相应的关键过程域的目标。关键实践描述对关键过程域的有效实施和规范化贡献最大的基础设施和活动。第10章软件质量与质量保证10.6.2软件过程能力成熟度等级1.初始级:在初始级,企业一般不具备稳定的软件开发与维护环境。项目成功与否在很大程度上取决于是否有杰出的项目经理和经验丰富的开发团队。组织的软件过程能力不可预测。2.可重复级:在可重复级,组织建立了管理软件项目的方针以及为贯彻执行这些方针的措施。组织基于在类似项目上的经验对新项目进行策划和管理。组织的软件过程能力可描述为有纪律的,并且项目过程处于项目管理系统的有效控制之下。3.已定义级:在已定义级,组织形成了管理软件开发和维护活动的组织标准软件过程,包括软件工程过程和软件管理过程。项目依据标准定义自己的软件过程进行管理和控制。组织的软件过程能力可描述为标准的和一致的,过程是稳定的和可重复的并且高度可视。第10章软件质量与质量保证4.已管理级:在已管理级,组织对软件产品和过程都设置定量的质量目标。项目通过把过程性能的变化限制在可接受的范围内,实现对产品和过程的控制。组织的软件过程能力可描述为可预测的,软件产品具有可预测的高质量。5.优化级:在优化级,组织通过预防缺陷、技术创新和更改过程等多种方式,不断提高项目的过程性能以持续改善组织软件过程能力。组织的软件过程能力可描述为持续改善的。第10章软件质量与质量保证10.6.3关键过程域管理组织工程初始级可重复级需求管理,软件项目计划,软件项目追踪和监督,软件分包管理,软件质量保证,软件配置管理定义级集成式软件管理,组间协调组织过程关注,组织过程定义,培训软件产品工程,对等审查定量管理级软件项目追踪和监督软件质量管理优化级技术变更管理、过程变更管理缺陷预防第10章软件质量与质量保证10.6.4关键实践1.执行约定:企业为了保证过程建立和继续起作用必须采取的行动,一般包括建立组织方针和高级管理者的支持。2.执行能力:组织和项目实施软件过程的先决条件。执行能力一般指提供资源、分派职责和人员培训。3.执行的活动:指实施关键过程区域所必需的角色和规程,一般包括制订计划和规程、执行活动、跟踪与监督并在必要时采取纠正措施4.测量和分析:对过程进行测量和对测量结果进行分析。测量和分析一般包括为确定执行活动的状态和有效性所采用的测量的例子。5.验证实施:保证按已建立的过程执行活动的步骤。一般包括高级管理者、项目经理和软件质量保证部门对过程活动和产品的评审和审计。