1 概念
1.1 项目质量
从项目作为一次性活动来看,体现在WBS反映出的项目范围内所有的阶段、子项目、项目工作单元的质量所构成。
从项目作为一项最终产品来看,项目质量体现在其性能或者使用价值上,即项目的产品质量。
项目的质量应该是顾客的要求进行的,不同的顾客有不同的质量要求,其意图最反映在项目合同中。项目合同通常是进行项目质量管理的主要依据。
2 项目质量管理
质量管理是指确定质量方针、目标和职责,并通过质量体系的质量规划、质量保证和质量控制以及质量改进来实现所有管理职能的全部活动。传统的质量管理是通过强调检查,现代的质量管理是强调预防。
项目质量管理是由过程组成,是项目管理的重要组成部分。在质量管理体系中,具体包括规划质量管理、实施质量保证、质量控制。
2.1 规划质量管理
规划质量管理是识别项目及其可交付成果的质量要求和标准,并准备对策确保符合质量要求的过程。其作用为整个项目如何管理和确认质量提供指南和方向。
2.1.1 规范质量管理的输入
2.1.1.1项目管理计划
项目管理计划指定质量管理计划,包括:
(1)项目范围说明书:项目的描述、主要项目交付成果以及验收标准
(2)工作分解结构
(3)进度基准
(4)成本基准
(5)其他管理计划
2.1.1.2干系人登记册
识别对质量重视或有影响的人。
2.1.1.3风险登记册
识别影响质量要求的各种威胁和机会的信息。
2.1.1.4需求文件
需求文件记录项目应该满足的、与干系人期望有关的需求。产品需求和质量需求等。
2.1.1.5事业环境因素
可能影响质量规划管理过程的事业环境因素包括:
(1)政府法规;
(2)特定应用领域的相关规则、标准和指南;
(3)可能影响项目质量的项目或可交付成果的工作条件或运行条件;
(4)可能影响质量期望的文化观念。
2.1.1.6组织过程资产
可能影响质量规划管理过程的组织过程的资产包括
(1)组织质量政策、程序及指南;
(2)历史数据库;
(3)以往阶段或项目的经验教训。
2.1.2 规划质量管理的工具和技术
(1)成本效益分析法
(2)质量成本法
(3)七种基本质量工具
① 因果图
② 流程图
③ 核查表
④ 帕累托图
⑤ 直方图
⑥ 控制图
⑦ 散点图
(4)标杆对照
(5)实验设计
(6)统计抽样
(7)其他质量管理工具
① 头脑风暴
② 力场分析
③ 名义小组技术
(8)会议
召开规划会议指定质量管理计划,参与人员包括:
① 项目经理
② 项目发起人
③ 项目团队成员
④ 干系人
⑤ 负责项目质量管理人员等
2.1.3 规划质量管理输出
2.1.3.1质量管理计划
质量管理计划的的详细程度取决于项目的具体需要,质量管理计划应该在项目早期进行评审。
2.1.3.2过程改进计划
过程改进计划是项目管理计划的子计划或组成部分。过程改进计划详细说明对项目管理过程和产品开发过程进行分析的各个步骤,以识别增值活动,需要考虑的包括:
(1)过程边界。描述过程的目的,过程的开始和结束、过程的输入和输出、过程的责任和干系人;
(2)过程配置
(3)过程测量指标
(4)绩效改进目标
2.1.3.3质量测量指标
质量测量指标专用于描述项目或产品属性,以及控制质量过程如何对属性进行测量。质量测量指标用于实施质量保证和控制质量过程。
2.1.3.4质量核对单
核对单是一种结构化工具,通常具体列出各项内容,用来核实所要求的一系列步骤是否已得到执行。
2.1.3.5项目文件更新
(1)干系人登记册
(2)责任分配矩阵
(3)WBS和WBS词典
2.2 实施质量保证
实施质量保证是审计质量要求和质量控制测量结果,确保采用合理的质量标准和操作性定义的过程。
项目管理过程中,实施质量保证是开展预防和检查,质量保证部门对质量保证活动进行监督,对项目团队、组织管理层、客户等干系人提供质量保证支持。
2.2.1 实施质量保证输入
(1)质量管理计划
(2)过程改进计划
(3)质量测量指标
(4)质量控制测量结果
(5)项目文件:项目文件可能影响质量保证工作,应该放在配置管理系统内监控。
2.2.2 实施质量保证方法与工具
2.2.2.1质量审计
又称为质量保证体系审核,质量审计的目标是:
(1)识别全部正在实施的良好及最佳实践;
(2)识别全部违规做法、差距及不足;
(3)分享所在组织或行业中类似项目的良好实践;
(4)积极、主动提供协助,以改进过程的执行,从而帮助团队提高生产效率;
(5)强调每次审计都应对组织经验教训的积累做出贡献。
质量审计还可确认已批准的变更请求,包括更新、纠正措施、缺陷补救和预防措施的实施情况。
2.2.2.2过程分析
是指按照过程改进计划中概况的步骤来识别所需的改进。它也要检查在过程运行期间遇到的问题、制约因素,以及发现的非增值活动。
2.2.2.3质量管理和控制工具
实施质量保证过程使用规划质量管理和控制质量过程的工具和技术以外,还有包括:
(1)亲和图
(2)过程决策程序图(PDPC)
(3)关联图
(4)树形图
(5)优先矩阵
(6)活动网格图
(7)矩阵图
2.2.3 实施质量保证输出
2.2.3.1变更请求
2.2.3.2项目管理计划更新
(1)质量管理计划
(2)范围管理计划
(3)进度管理计划
(4)成本管理计划
2.2.3.3项目文件更新
(1)质量审计报告
(2)培训文档
(3)过程文档
2.2.3.4组织过程资产更新
可能需要更新组织过程资产包括质量标准和质量管理系统等。
2.3 质量控制
质量控制是监督并记录质量活动执行结果,以便评估绩效,并推荐必要的变更的过程。本过程的主要作用包括:
(1)识别过程低效或产品质量低劣的原因,建议并采取措施消除这些原因;
(2)确认项目的可交付成果及工作满足主要干系人的既定需求,足以进行最终的验收。
2.3.1 质量控制输入
2.3.1.1项目管理计划
项目管理计划内有质量管理计划,用于控制质量。质量管理计划描述将如何在项目中开展质量控制。
2.3.1.2质量控制指标
描述了项目或产品属性及其测量方式。质量测量指标的例子包括功能点、平均故障间隔时间和平均修复时间。
2.3.1.3质量核对单
是结构化清单,核实项目工作及其交付成果是否满足一系列的要求。
2.3.1.4工作绩效数据
与计划相比
(1)实际技术性能
(2)实际进度绩效
(3)实际成本绩效
2.3.1.5批准的变更请求
2.3.1.6可交付成果
2.3.1.7项目文件
(1)协议
(2)质量审计报告和变更日志
(3)培训计划和效果评价
(4)过程文档
2.3.1.8组织过程资产
(1)组织的质量标准和政策
(2)标准化的工作指南
(3)问题和缺陷报告程序及沟通政策
2.3.2 质量控制工具和技术
(1)7Q
(2)统计抽样
(3)检查
(4)审查已批准的变更请求
2.3.3 质量控制输出
(1)质量控制测量结果
质量控制测量结果是对质量控制活动的结果的书面记录。
(2)确认的变更
对变更或补救的对象进行检查,做出接受或者拒绝的决定,并通知干系人,被拒绝的对象可能要进行返工。
(3)核实的可交付成果
(4)工作绩效信息
(5)变更请求
(6)项目管理计划的更新
① 质量管理计划
② 过程改进计划
(7)项目文件更新
① 质量标准
② 协议
③ 质量审计报告和变更日志
④ 培训计划和效果评估
⑤ 过程文档
(8)组织过程资产更新
① 完成的核对单
② 经验教训文档
3 软件质量管理现状
在现实软件开发过程中,许多软件产品却时常陷入质量低下、甚至软件不符合用户需求的旋涡。分析有以下几个方面:
(1)软件质量保证技术(审查、复审和测试)没有贯穿到整个软件开发全过程中去。
(2)软件产品对其质量的把握,仅停留在减少软件运行错误、加强软件测试,避免软件缺陷的一般性层面,而对整个软件开发生命周期的全过程质量管理,缺乏总体架构。
(3)测试管理的一些误区也会导致严重的质量问题。没有按照测试原则进行尽早测试、连续测试与自动化测试。
(4)质量是全过程的,不仅是测试。质量管理者应该将质量控制与保证着眼于整个软件开发生存周期内。而事实上,质量管理者仅仅认为通过严格的测试就可以保证软件质量。
4 实施细则
4.1 质量管理内容
4.1.1 编制质量管理计划
制定质量管理计划是依据项目计划及项目质量目标确定需要检查的主要过程和工作产品,识别项目过程中的干系人及其活动,估计检查时间和人员,并制定出本项目的《质量管理计划》。
质量管理计划的主要内容包括:
(1)例行审计和里程碑评审,
(2)需要监督的重要活动和工作产品,
(3)确定审计方式,根据项目计划中的评审计划确定质量保证人员需要参加的评审计划;
(4)明确质量审计报告的报送范围。
质量管理计划的评审,质量保证计划需要经过评审方能生效,以确保质量保证计划和项目计划的一致性。经过批准的质量保证计划需要纳入配置管理。当项目计划变更时,需要及时更改和复审质量保证计划。
4.1.2 过程和产品的质量检查
根据质量管理计划进行质量的审计工作,并发布《质量审计报告》。
审计的主要内容包括:
(1)是否按照过程要求执行了相应的活动,
(2)是否按照过程要求产生了相应的工作产品。
本项目中对质量的控制主要体现在不同阶段的审计当中。
4.1.3 不符合项的记录和跟踪
对审计中发现的不符合项,记录并要求项目组及时处理,质量保证人员需要确认不符合项的状态,直到最终的不符合项状态为“完成”为止。
4.2 质量管理人员的职责分配
开发项目上按照规范化软件的生产方式进行开发。每个项目除配备了项目开发所需角色外,还专门配备了质量保证小组、配置管理小组、测试小组来确保质量管理的实施。
4.2.1 质量保证小组职责
质量保证小组作为质量保证的实施小组,在项目开发的过程中几乎所有的部门都与质量保证小组有关。
质量保证小组的主要职责是:
(1)编写《质量管理计划》(根据项目管理计划和项目目标编写);
(2)独立审查方式,从第三方的角度监控软件开发任务的执行;
(3)分析项目内存在的质量问题;
(4)审查项目的质量活动,给出质量审计报告;
(5)项目是否遵循已制定的计划、标准和规程,给开发人员和管理层提供反映产品和过程质量的信息和数据,使他们能了解整个项目生存周期中工作产品和过程的情况,提高项目透明度,从而支持其交付高质量的软件产品。
质量保证人员的职责是:
(1)依据质量管理计划,通过质量审计报告向项目经理及有关人员提出已经识别出的不符合项;
(2)跟踪不符合项的解决过程,通过审计周报或者审计月报向项目经理提供过程和产品质量数据;
(3)与项目组协商不符合项的解决办法。
质量保证小组的检测范围主要包括:
(1)项目的进度是否按照项目计划执行;
(2)用户需求是否得到了用户的签字确认;
(3)软件需求是否正确的反映了用户的需求;
(4)是否将每一项用户需求都映射到软件需求;
(5)系统设计是否完全反映了软件需求;
(6)实现的软件是否正确的体现了系统设计;
(7)测试人员是否进行了较为彻底的和全面的测试;
(8)客户验收和交接清单是否完备;
(9)对于系统运行中出现的问题,维护人员是否记录了详细的维护记录;
(10)配置管理员是否按照配置管理计划建立了基线,是否严格控制变更过程,是否对配置库进行了维护。
4.2.2 配置管理小组职责
配置管理活动的目的是通过执行版本控制、变更控制、基线管理等规程,借助配置管理工具的使用,来保证整个生命周期过程产生的所有配置项的完整性、一致性和可追溯性。
配置管理是对工作成果(阶段工作成果和产品成果、进展状态成果)的一种有效保护形式,是反映项目及其工作产品的过去、现在、动态的资料和数据集中管理体现。
配置管理小组的主要职责包括:
(1)根据项目计划制定《配置管理计划》,
(2)建立配置库,
(3)为项目组人员分配配置库权限,
(4)创建需求、设计、开发、测试、交付阶段的基线。
(5)当纳入基线库的工作产品发生变更时,严格按照配置项变更控制过程执行变更,变更后建立新的基线
4.2.3 测试小组职责
测试作为质量控制的主要手段,如同软件开发一样,测试在执行之前,测试小组制定软件测试计划、测试用例的编写等。
测试可以分为如下几种类型:
(1)代码走查(开发人员自测);
(2)单元测试;
(3)集成测试;
(4)系统测试。
为了保证程序的质量,质量保证需要全员参与:
(1)开发人员需要对同伴的代码进行代码走查;
(2)开发人员同时对自己编写的程序进行单元测试,确保程序编译、运行正确;
(3)测试人员根据软件需求分析报告进行《软件集成测试用例》和《系统测试用例》的编写;
(4)测试人员对编写完成的《测试用例》提交项目组进行评审;
(5)质量保证人员对评审过程和工作产品进行监测;
(6)测试人员根据《测试计划》和《测试用例》执行测试用例;
(7)测试人员发现的缺陷进行记录,只有这样才能确保项目组开发的软件产品满足用户需求;
(8)测试人员完成集成测试之后,可以进行软件系统测试,系统测试包括:
① 功能测试;
② 性能测试;
③ 安全测试;
④ 压力测试。
只有进行了系统测试软件测试才是完整的。系统测试在本项目中占有重要的地位,性能要求有可能改变软件的设计,为避免造成软件的后期返工,测试在性能上需要较大的侧重。
4.3 质量保证措施
4.3.1 制定《项目计划》
《项目计划》由项目负责人制定,由项目各小组组长、项目成员、干系人、质量保证人员、配置管理员等人进行评审。评审过程主要讨论的内容是项目计划的可行性,对其中不合理的地方提出修改意见,对计划中不合理的地方进行修改完善,并由质量保证人员对其结果进行跟踪处理,以确保项目计划完整性、可行性,项目计划评审通过后,交由配置管理人员进行配置管理。
项目负责人制定项目进度计划,按项目计划中里程碑为界限,将整个开发周期划分为若干阶段。根据里程碑的完成情况,适当的调整每一个较小的阶段的任务量和完成的任务时间,动态跟踪和动态调整,以利于项目质量保证的实施。
实际运作中,质量保证人员在对项目执行过程进行检查时,对于发现的项目偏差,以《质量审计报告》的形式提交项目负责人。由项目负责人组织人员对计划进行维护,对于已经变动的项目计划,由配置管理进行配置管理。
4.3.2 需求管理
以便保证需求调研质量,同时形成用户《需求说明书》。需求评审时由公司管理层、项目实施层共同进行,对于通过用户确认的需求,交由配置管理员形成需求基线。
用户需求在招标方确认后,由系统分析人员形成《软件需求分析报告》,同时对《软件需求分析报告》进行评审,对于评审通过的《软件需求分析报告》可以交由测试人员进行《测试计划》和《测试用例》的编写。
开发过程存在的需求变动,应进行以下流程:
(1) 需要填写《变更申请单》发给项目经理,在质量保证人员参加的情况下,对这个变更进行评审;
(2) 由项目经理组织项目组成员一起讨论实施变更的可行性及实施后所带来的影响;对于影响小的变更直接记录,大的变更则需要形成正式的《变更报告》,
(3) 变更都需要对相应的文档实施同步变更(包括需求分析报告、系统设计、安装手册、操作手册等);
(4) 无法实现或是变更会带来巨大的影响而将导致进度的延期,将《变更报告》提交给用户并召开协调会议,讨论变更取舍问题或是项目进度变更问题;
(5) 决定变更之后,由项目负责人组织实施变更;
(6) 测试人员检测变更结果;
(7) 质量保证人员监督变更实施过程;
(8) 配置管理员对变更后的成果进行配置管理;
(9) 变更实施完后,运行前还需要协助用户一同测试并由用户签字后同意方可上线。
4.3.3 系统设计管理
4.3.3.1系统的可扩展性和可配置项
优良的体系结构应当具备可扩展性和可配置性,而好的体系结构则需要好的设计方法,需要针对项目的结构、项目的特征和用户的需求来分析。项目中将安排我公司高级系统架构师担当项目总体设计师,汇同总体设计组完成系统设计。
对公共类模块的开发,由总体设计组通过对需求的仔细研究,尽可能的识别出公共类,并进行定义和设计,以减少重复工作。
4.3.3.2系统的设计文档
对于项目组提供的设计文档,由项目经理组织,质保小组成员参与,对其设计文档进行评审,及时发现设计中可能存在的错误,降低项目开发风险。
确保设计文档(概要设计、详要设计、数据库设计)能为开发人员、测试人员提供确实的指导。对于可复用的设计进行提取作为公共库设计和开发,提供项目组。最后交由配置管理员进行设计文档的版本控制。
4.3.4 系统开发管理
系统开发是依据系统设计文档,由程序员进行程序编写,以便实现设计要求,系统实现过程中,开发人员需要对模块进行代码走查和交叉单元测试,以保证模块代码质量。对于测试完成的程序可以交由配置管理人员进行配置管理。
4.3.5 系统测试管理
在开发过程中,我们将质量控制贯穿于所有阶段和所有参与系统的人员中,包括系统分析、设计和编码。分阶段的评审和测试是软件质量的有力保障。
系统存在平台测试和应用系统的测试以及最终的测试。由于测试也存在协调的问题,如问题定位,在应用系统发现一个错误,到底是应用系统的自身的错误还是中间件存在的错误,需要开发人员进行准确的判断。
4.3.5.1测试方法
测试方法包括:
(1)黑盒测试:着重于测试软件系统的外部特性;根据系统的设计要求,每一项功能都要进行逐个测试,检查其是否达到了预期的要求,是否能正确地接受输入,是否能正确地输出结果。
(2)白盒测试:由于软件的所有源代码都要由项目组成员编写,对其内部的逻辑规则和数据流程,都要进行测试,以检查其代码编写是否符合设计要求。
4.3.5.2测试策略
测试策略包括:
(1)单元测试:由开发人员或测试人员来做。谁来做并没有一个绝对的标准,要根据公司的实际情况来决定
(2)集成测试:在所有模块都通过了单元测试后,将各个模块组装在一起,进行组装测试,用于发现与接口相联系的问题。在通过组装测试后,将经过单元测试的模块组装成一个符合设计要求的软件结构。
(3)系统测试:项目通过了以上的测试步骤后,与其它系统元素(如硬件服务器、网络系统等)进行集成测试和系统级的确认测试,将各种可能的缺陷完全排除掉,从根本上保证系统的长期稳定运行。
4.3.6 系统跟踪服务管理
项目中技术支持小组的任务一方面是保证对项目客户的跟踪服务,另一方面是确保该项目的技术咨询工作。
系统维护期,对于一般性的错误,如操作不当等引起的问题,全部由技术支持小组执行完成,但需要用户测试确认上线。如果较大的修改则需要走变更控制流程,填写《变更申请》,经项目组讨论分析可行方案在由技术支持小组实施,通过测试后方可提交用户。
在这个过程中质量人员需要对维护过程和维护记录单进行检查。
5 交付件
(1)《项目计划》
(2)《质量管理计划》
(3)《质量审计报告》
(4)《配置管理计划》
(5)《测试计划》
(6)《测试用例》
(7)《测试报告》
(8)《需求说明书》
(9)《需求变更申请》
(10)《软件需求分析报告》
(11)《变更申请单》
(12)《变更报告》
(13)《概要设计》
(14)《数据库设计》
(15)《详要设计》
(16)《用户手册》:安装、操作