部署之后又发现软件问题再进行修复,这通常要多花 100 到 1000
倍的成本。要在特定时间达到既定目标,在整个项目生命周期内不断对质量进行检验和管理必不可少。
简介
质量是我们希望自己的产品、流程和服务争取达到的目标。然而当问到“什么是质量?”时,人们的看法各有不同。常见的回答有:
“质量 ... 我不知道怎么描述它,但在具体环境中,我就明白是怎么回事。”
或者
“... 满足需求。”
也许提到质量(关于软件)时,最常见的情况就是批评质量不过关:
“他们怎么会发布质量这样低劣的产品呢!?”
这些通常的反应已可说明质量是什么,但却没怎么涉及严格质检以及在执行时加以改进。这些意见都表明需要用一种方式来定义质量,通过这种方式能够评测和实现质量达标。
但是质量并不是一个单一的特征或属性。质量是多方面的,产品或流程都可拥有质量。产品质量的核心是生产合格的产品,而流程质量的核心是合理地生产产品。请参见概念:产品质量和概念:流程质量,了解其他信息。
质量的定义
质量的定义(取自 The American Heritage Dictionary of the English
Language, 3rd Edition, Houghton Mifflin Co., c 1992,
1996)为:
Quality (kwol'i-te) n., pl.-ties. Abbr. qlty. 1.a.An
inherent or distinguishing characteristic; a property.
b.A personal trait, especially a character trait.2.
Essential character; nature.3.a. Superiority of kind.
b.Degree or grade of excellence.
如定义所述,质量不是单方面的概念,而是多方面的概念。要利用该定义并将它应用到软件开发中,这个定义必须改进。
因此,考虑到要在 Rational Unified Process 中使用,质量被定义为:
“由以下三点所确定的特征:
1 满足或超出认定的一组需求
2 使用经过认可的评测方法和标准来评估
3 使用认定的流程来生产。”
因此,质量达标不是简单地“满足需求”或生产出满足用户需要或期望的产品。更确切地说,质量还包含确定证明质量达标所使用的评测方法和标准,以及如何实施流程,以确保由此流程生产的产品已达到预期的质量水平(而且能够管理该流程并重复使用)。
另请参见以下几页,了解关于 Rational Unified Process 如何定义质量这个概念的其他信息:
产品质量
流程质量
评测质量
评估质量
谁负责质量?
一种常见的误解是质量完全由一个组来负责。通常还会成立一个称为质量保证的小组(其他名字还有:测试、质量控制或者质量工程),并让这个组专门负责质量把关,这样更加深了这种误解。
质量是,而且应该是每个人的责任。实现质量对几乎所有的流程活动而言都是不可或缺的,它不只是一条单独的规定。因此要让每个人都对他们生产的产品(或工件)的质量以及他们参与的流程的实施负责。
每个角色通过以下方式促成质量达标:
产品质量 - 通过每个正在生产的工件促成整体质量的达标。
流程质量 - 在参与的流程活动中促成质量达标。
每个人都应对生产的高质量产品(或质量低劣的产品)承担责任并且荣辱与共。但是只有那些直接参与某个流程构件生产的人员才会对那些流程构件(和工件)的质量(不论好坏)直接负责。不过,还是要有人来负责管理质量,也就是保证对质量不断地管理、评测以求最后达标。负责管理质量的角色是项目经理。
对质量常见的误解
关于质量有许多误解。最常见的包括:
质量能添加到产品中或在其中“测试”。
质量是一个单一的方面、属性或特征。
质量对于每个人的含义都相同。
质量是自发产生的。
质量能添加到产品中或在其中“测试”:
如果不明确产品是什么,需具备什么功能,用户是谁,如何使用等内容,就无法生产这种产品。同样的道理,如果质量不属于生产产品流程的一部分,而且没有产品的说明和评测方法,那么就不能实现质量的达标。
请参见概念:评测质量,和下文中标题为质量是自发产生的的部分。
质量是一个单一的方面、属性或特征,且
质量对于每个人的含义都相同:
质量不是一个单一的方面、属性或特征。质量可通过多方面来评测。已设立质量维度的一些指标和标准来满足项目、组织和客户需要。
可通过几个方面来评测质量,有些方面适用于流程质量,有些方面适用于产品质量,有些两者都适合。可以通过以下几个方面来对质量进行评测:
进度 - 例如已演示用例或已实现里程碑。
差异 - 计划的时间表、预算、人员需求等与实际情况的差异。
可靠性 - 执行过程中抗故障(崩溃、挂起、内存泄漏等)的能力。
功能 - 工件按预期方式实施和执行所需的用例。
性能 -
在经受现实世界操作的特征检验时(诸如负载、强度测试以及长时间运行等),工件能够及时响应并总是能以一种可接受的方式持续执行。
请参见概念:质量维度、概念:产品质量和概念:流程质量,了解其他信息。
质量是自发产生的:
质量不会自行出现。为了获得质量,必须实施、遵守并评测流程。Rational Unified Process
的目的在于提供一种规范的方法以在一个开发组织中分配任务并明确责任。其目标是要在一个预期的时间表和预算内保证生产出满足最终用户需要的高质量软件。Rational
Unified Process
收集了许多现代软件开发的最佳方案,方便各种各样的项目和组织利用发挥。环境工作流程将指导您如何按需进行最佳流程配置。
可以根据若干因素来配置流程并商讨质量(可接受的标准)。最常见的因素是:
风险(包括责任)。
商机。
收益需求。
人员配备或进度安排问题。
预算。
应在项目刚一开始就确定对流程和标准的变更,并就此达成共识。
Rational Unified Process 中的质量管理
质量管理的目的在于:
对合格的质量确定适合的指标(基本指标)。
确定用于质量评估的适当的评测方法。
及早并尽可能有效地确定和妥善处理影响质量的问题。
质量管理贯穿 Rational Unified Process
的所有工作流程、阶段和迭代过程。一般来说,在整个生命周期内进行质量管理即是要使流程质量和产品质量达标,并对此进行评测和评估。下面是每一工作流程在管理质量维度要强调的工作:
需求工作流程中的质量管理涉及:分析需求工件集的一致性(工件标准和其他工件之间);清晰性(向所有的股东、涉众和其他角色明白无误地传达信息),以及精确性(适当的详细程度和精确度)。
分析设计工作流程中的质量管理涉及:评估设计工件集,包括评估设计模型从需求工件转变过来,再转换为实施工件的一致性。
实施工作流程中的质量管理涉及:评估实施工件,并根据需求、设计和测试工件评估相应的源代码/可执行工件。
测试工作流程只要就是质量管理的过程,该工作流程的绝大部分工作都是为达到管理上述确定的质量目标而进行的。
环境工作流程,和测试一样,主要工作要为实现管理质量的目的而服务。在此,可获得如何对流程进行最佳配置以满足需要的指导。
部署工作流程中的质量管理涉及:评估实施和部署工件,并根据需求、设计以及将产品交付给最终客户所需的测试工件来评估相应可执行的部署工件。
项目管理工作流程包括对质量管理大部分工作的概述,涉及复审和审核开发流程的实施、遵守以及进展情况。
*************************************************************************
附录:各种质量概念(产品质量、流程质量、评测质量和评估质量)
==============================================================================
产品质量
产品质量是正在由流程生产的产品的质量。在软件开发中,产品是许多工件的聚合关系,其中包括:
已部署的可执行代码(应用程序、系统等),这可能是最显而易见的工件,因为项目通常是由于该工件才存在的。也就是说,它是为客户(最终用户、股东、涉众等)提供价值的首要产品。
已部署的不可执行工件,包括用户手册和教程资料等工件。
未部署的可执行工件,如工件的实施集,包括已创建用于支持实施的测试脚本和开发工具。
未部署的不可执行工件,如实施计划、测试计划和各种模型。
由于很多工件都建立在其他工件的基础上,所以在某种程度上,所有工件的质量都是相关的。因此,对每个工件的质量都应该评测和评估。
可执行工件的产品质量(部署的和未部署的):
可执行工件是通过其需求来描述的,并表述为用例或补充需求(如销售、性能等)。要评测并达到质量要求,必须了解这些需求并以清楚、简明和可核实(可测试)的方式陈述这些需求。对于软件来说,测试角色不会将所有需求当作测试对象(如市场渗透或销售收益)。对于那些将成为测试对象的需求来说,测试设计员必须能够指定一种方法来核实是否满足需求(正如已指定的)、没有偏离既定意图并且没有缺陷。
产品质量是通过评测以下质量维度和评测产品是否满足这些维度的要求来决定的:
可靠性:已部署的代码在执行过程中的防故障(崩溃、挂起、内存丢失等)能力。
功能:已部署的代码按既定意图执行所需的用例。
性能:在实际的操作特征(如负载、强度和长时间运行)条件下,已部署的代码以及时和可接受的方式执行和响应,并以可接受的方式继续运行。
对于每一维度,在测试的一个或多个不同阶段,应该实施和执行一种或多种测试类型。
此外,还可通过评测每一工件新版本的可执行工件中所作的变更数量和类型来评估产品质量。
不可执行工件的产品质量(已部署的或未部署的):
不可执行工件的产品质量通过工件的目的、目标和结构来描述,并通过确保工件符合以下各项要求来评估:
工件内部和工件之间的一致性(语言的使用、术语或语义等)。
指南、标准和合同需求(语言的使用、术语、语义、格式或内容等)的兼容性
此外,还可以通过工件版本之间所作变更的数量和类型来评估不可执行工件的产品质量。
为了帮助评估 RUP 中工件的产品质量,我们在 RUP 中包括了以下针对大多数工件的信息类型:
工件指南和检查点:有关如何开发、评估和使用工件的信息。
模板:工件的“模型”或原型,为内容提供结构和指导。
=======================================================================
流程质量
流程质量是指为了生成工件而对可接受的流程(包括质量评测和质量标准)实施和遵守的程度。
软件开发需要一张错综复杂的步骤网,其中既有串行步骤,又有平行步骤。随着项目规模的扩大,必须包含更多步骤来管理项目的复杂性。所有流程都由产品活动和日常管理活动组成。产品活动会取得在形成最终产品方面的实际进展。而日常管理活动对最终产品有着无形的影响,许多计划、管理和评估任务都需要进行日常管理活动。
对流程质量进行评测和评估的目的是:
管理利润率和资源
管理和化解风险
管理和维护预算、进度与质量
获取可改进流程的数据
在某种程度上,如果遵守流程并达到了较高的流程质量,这多少会在工件的质量上得以体现。也就是说,如果遵守流程并达到较高的流程质量,生成低质量工件的风险就会降低。但反之未必亦然:生成高质量的工件并不一定表示遵守了流程。
因此,不仅要按照流程被遵循的程度来评测流程质量,还要按照流程中产生成果所达到的质量等级来评测流程质量。
一般而言,每个人都应负责实施和遵守已得到认同的流程,并确保生成工件的质量达到已认同的质量标准。不过,特定的角色(如项目经理)可能会执行特定的任务来判定和影响流程质量。
=======================================================================
评测质量
对质量(包括产品质量和流程质量)的评测需要收集信息并对其进行分析,这些信息通常以评测和指标来表述。评测的目的主要是为了控制项目,以便能够管理项目。评测还被用来评估项目在完成情况、质量情况、对需求的符合情况等方面与计划所设定目标之间的差距。
指标用来达到两个目标,即了解情况的目标和变更(或成果)目标:
知识目标:使用动词如评估、预测、监控来表述。您要更好地了解开发流程。例如,可能要评估产品质量、获得用来预测测试工作的数据、监控测试覆盖或跟踪需求变更等。
变更(或成果)目标:通过使用动词如增加、减少、提高或实现进行表述。通常,您感兴趣的是,随着项目的进展事情如何从一个迭代到另一个迭代、从一个项目到另一个项目发生变更或得到改进。
使用这两个目标的指标来评测进度和产品质量。
所有指标都需要标准来标识并确定是否达到可接受的质量程度或级别。可接受的质量级别是可以协商并可以变化的,需要在开发生命周期的初期被确定并认同。例如,在早期的迭代中,可以接受较多的应用程序缺陷,但不能接受构架缺陷。而在后期迭代中,只有应用程序中美观方面的缺陷才是可以接受的。
验收标准可以采用多种方式进行说明,并可以包括多种评测方法。常见验收标准可能包括以下评测方法:
缺陷数和/或趋势,如已确定、已解决或仍然打开(没有解决)的缺陷数。
测试覆盖率,如(测试)计划、实施并执行的代码(或用例)的百分比。通常,测试覆盖率要和上面确定的缺陷标准一起使用。
性能,如发生指定操作(用例、操作或其他事件)所需的时间。该标准通常用于性能测试、故障转移及恢复测试或其他测试,在这些测试中,时间危急程度是本质问题。
相容性。该标准表示工件或流程活动/步骤必须满足已认同的标准或准则的程度。
可接受性或满意度。该标准通常用于主观评测,如可用性或美观性。
请参见概念:指标获得其他信息。
请参见整个流程中的质量评估中的表格,该表格标识了对工件或活动进行质量评估的阶段、工作流程和工件。
评测产品质量
以清晰、准确和可测试的方式说明需求只是达到产品质量的一部分。还必须确定相应的评测和标准,用来确定希望达到的质量级别,并判断是否已经达到该质量级别。评测说明如何获取用来评估质量的数据,而标准则确定产品达到可接受(或不可接受)质量的级别或点。
对可执行工件的产品质量进行评测是通过使用一种或多种评测技术实现的,例如:
复审/走查
检查
执行
根据评测的性质和质量目标,将使用不同的指标。例如,在复审、走查和检查中,首要目标集中在功能和可靠性质量等维度。缺陷、覆盖率和相容性是在使用评测技术时采用的主要指标。但是,执行则可能集中在功能、可靠性或性能上。然而,缺陷、覆盖率或性能是所使用的主要指标。其他评测和指标将根据需求的性质有所变化。
评测流程质量
对流程质量的评测是通过收集情况和成果评测实现的。
对已接受流程的标准、指南和实施的遵守程度。
相对于计划实施,当前流程实施的状况/状态。
所产生工件的质量(使用上面说明的产品质量评测)。
对流程质量进行评测是通过使用一种或多种评测技术实现的,例如:
进度 - 例如已演示用例或已完成里程碑
差异 - 计划的时间表、预算、人员配备需求等与实际情况的差异
产品质量评测和指标(已在上面的评测产品质量部分中有所说明)
==============================================================================
评估质量
为了管理质量,在整个产品生命周期中都要对流程和产品质量进行评测和评估。质量评估可以主要事件在发生时进行(如阶段结束),也可以在产生工件时进行(如代码走查)。以下是在生命周期中进行的不同评估。
里程碑和状态评估
检查、复审、走查
里程碑和状态评估
Rational Unified Process
中的每个阶段和迭代都会产生可执行产品或部分正在开发的最终产品的发布版(内部的或外部的),这时,为达到以下目的而进行评估:
演示是否达到需求(和标准)
同步期望
按某个基线将相关工件同步
确定风险
主要里程碑发生在所有四个 Rational Unified Process
阶段的结束时,并且这些里程碑将核实该阶段的目标是否已经实现。四个主要里程碑是:
生命周期目标里程碑
生命周期构架里程碑
最初的操作性能里程碑
产品发布里程碑
次要里程碑发生在每次迭代结束时,主要是为了核实是否已经实现了迭代的目标。状态评估是周期性的工作,目的是要评估正在进行的迭代和/或阶段的进度。
检查、复审和走查
检查、复审和走查是评估工件所采用的具体技术,也是提高开发流程质量和生产力的有效方法。应当采用会议的形式来实施这些方法,会议中,让一个角色主持会议,并让另一个角色作会议记录(变更请求、问题、疑问等)。
IEEE 标准词汇表(1990 年版)定义了这三类活动:
复审
一次正式的会议,其间把工件或工件集展示给用户、客户或其他相关各方,以获得他们的意见或赞同。
检查
一种正式的评估方法,由非制作者本人的个人或小组详细检查工件,以查明是否有错误、是否违反开发标准、以及是否存在其他问题。
走查
一个复审过程,由某个开发人员领导一个或多个开发团队成员对他(或她)所编写的一段工件进行检查;同时,由其他成员针对技术、风格、可能的错误、是否违反开发标准和其他问题提出问题并发表意见。