软件项目管理第6章项目质量管理Brucencepuwork@sohu.com22019/10/14如何看待的项目的质量?32019/10/14实例曾经对一个国际性的软件公司作了一个调查,选择了由质量问题引起的10项额外工作1.开发人员修正缺陷2.测试人员验证缺陷3.返工4.设计或代码完成后的需求变化5.不清楚或无效的缺陷报告6.代码完成后补充的测试用例7.由于缺陷修复后所做的回归测试8.测试环境设置错误9.产品发布后遗漏的缺陷验证10.为产品发布后遗漏的缺陷出补丁包42019/10/14实例(续)统计结果表明,由于质量问题造成的成本(劣质成本)竟高达45.86%,差不多占开发总成本的一半。所以,软件项目质量管理,不仅有助于提高软件产品质量,而且有助于缩短开发周期,降低成本52019/10/14冰山一角62019/10/14真理产品质量是生产出来的,不是检验出来的。——威廉·戴明现实:很多软件公司投入大量时间和精力来发现和修正错误(需求、设计、实现),导致进度延期。少了些质量管理《理解专业程序员》中,扔进垃圾代码,因为错误无法交工而不断修改,最终开发出较好代码的故事72019/10/14软件的质量管理贯穿了整个软件开发周期。质量管理不仅确保项目最终交付的产品满足质量要求,而且要保证项目实施过程中阶段性成果的质量。也就是保证软件需求分析、设计和代码的质量,包括各种文档的质量正如ISO8402所规定和倡导的:“质量管理是指确定质量方针、目标和职责,并通过质量体系中的质量策划、质量控制、质量保证和质量改进来使其实现的所有管理职能的全部活动。”质量管理项目质量管理项目质量管理质量规划(始).1输入.1事业环境因素.2组织过程资产.3项目范围说明书.4项目管理计划.2工具和技术.1成本效益分析.2基准对照.3实验设计.4质量成本.5其他质量计划工具.3输出.1质量管理计划.2质量衡量指标.3质量检查表.4过程改进计划.5质量基准.6项目管理计划(更新)执行质量保证(中).1输入.1质量管理计划.2质量测量指标.3过程改进计划.4工作绩效信息.5批准的变更请求.6质量控制度量.7实现的变更请求.8实现的纠正措施.9实现的缺陷修复.10实现的预防措施.2工具和技术.1质量计划工具和技术.2质量审计.3过程分析.4质量控制工具和技术.3输出.1请求的变更.2推荐的纠正措施.3组织过程资产(更新).4项目管理计划(更新)执行质量控制(尾).1输入.1质量管理计划.2质量测量指标.3质量检查表.4组织过程资产.5工作绩效信息.6批准的变更请求.7可交付成果.2工具和技术.1因果图.2控制图.3流程图.4直方图.5帕雷托图.6趋势图.7散点图.8统计抽样.9检查.10缺陷修复审查.3输出.1质量控制度量.2确认的缺陷修复.3质量基准(更新).4推荐的纠正措施.5推荐的预防措施.6请求的变更.7推荐的缺陷修复.8组织过程资产(更新).9确认的可交付成果.10项目管理计划(更新)92019/10/14第6章项目质量管理6.1质量管理概述6.2项目质量的组织保证6.3质量计划6.4软件评审方法和过程6.5缺陷预防和跟踪分析6.6质量度量6.7过程质量管理102019/10/14质量管理概论不同的质量管理方式:病入膏肓及早治疗提前预防112019/10/146.1质量管理概述软件质量控制(SQC,SoftwareQualityControl)是科学地测量过程状态的基本的方法。就象汽车表盘上的仪器,可以了解行驶中的转速、速度、油量等。软件质量保证(SQA,SoftwareQualityAssurance)则是过程和程序的参考与指南的集合。就像汽车中的用户手册。软件质量管理(SQM,SoftwareQualityManagement)才是操作的誓学,教你如何驾车,建立质量文化和管理思想。122019/10/14四种不同的质量管理水平检查,通过检验保证产品的质量,符合规格的软件产品为合格品,不符合规格的产品为次品。只能判断产品质量,不检验工艺流程、设计、服务等,不能提高软件质量。相当于“软件测试/质量控制”;保证,质量目标通过软件开发部门来实现,制定质量目标和质量计划,保证软件开发流程合理性、流畅性和稳定性。相当于初期的“质量保证”;预防,软件质量以预防为主,以过程管理为重,把质量的保证工作重点放在过程管理上。从需求、设计开始就引入预防思想,相当于成熟的“质量保证”;完美,以客户为中心,贯穿于软件开发生存期过程,全员参与,追求卓越,相当于“全面软件质量管理”。132019/10/14质量管理的支持质量管理技术(开发技术成熟度、开发工具、自动化测试水平)方法(开发模型、开发流程)基础设施(质量文化、开发环境、标准体系142019/10/14技术层次的质量管理支持制定编程规范,有利于整体风格的统一、提高代码可读性、可维护性、可扩展性组织应通过制定统一的模板来规范文档,统一文档内容和风格实施覆盖生命周期的软件测试,包括单元、集成、系统测试,不仅要动态测试,也要静态测试(需求分析、系统设计需要评审和验证)采用统计方法(一般是量化的数理统计分析)揭示产品特征和软件开发过程特征,发现各种不一致性问题152019/10/14基础设施162019/10/14第6章项目质量管理6.1质量管理概述6.2项目质量的组织保证6.3质量计划6.4软件评审方法和过程6.5缺陷预防和跟踪分析6.6质量度量6.7过程质量管理172019/10/14组织保证管理层测试组SQA组SEPG组项目组182019/10/14组织保证(续)管理组:很强的“质量第一”的意识,能制定有利于保证和提高质量的正确策略和方针,在整个组织中营造良好的质量文化。SQA组(监督):从流程上对软件质量进行跟踪、控制和改进。即监督项目按已经定义的流程进行,并符合已定义的相关标准。如要求建立相关文档、需求变更控制测试组(执行):负责对软件产品进行全面的测试,包括需求评审、设计评审、功能和性能测试等,从中找出所存在的缺陷。测试组面向产品,进行事后检查。SEPG组(立法):软件工程过程组,通常有软件专家组成,领导和协调过程改进的小组。其主要任务是推动企业所应用的过程的定义、维护和改进。类似于一个“立法”机构192019/10/14第6章项目质量管理6.1质量管理概述6.2项目质量的组织保证6.3质量计划6.4软件评审方法和过程6.5缺陷预防和跟踪分析6.6质量度量6.7过程质量管理202019/10/14质量计划概述质量计划:进行项目质量管理,实施项目质量方针和目标的具体规划。质量计划通常在组织的质量方针指导下定义项目的质量目标,描述项目质量管理中所需的资源、职责分配,说明如何采用正确的流程和操作程序、质量控制方法和评审技术来保证质量。软件质量计划需要覆盖软件开发和维护的整个生命周期,即需要对需求分析、设计、编码、测试、部署提出质量目标和要求,并就质量控制内容、方法和手段给出建议和指导。212019/10/146.3质量计划6.3.1质量计划的内容6.3.2质量计划制定的步骤6.3.3如何制定有效的质量计划6.3.4质量计划的实施和控制222019/10/146.3.1质量计划的内容目的和范围参考的文件列表质量目标,总体目标,分阶段目标,分项目标质量的任务,包括组织流程说明会,关键成果评审参与质量管理的相关人员及其责任对一些关键文档提出要求。如测试计划,配置管理计划重申适合项目的相关标准。如文档模板标准,代码编写标准评审的流程和标准。如明确区分代码评审和技术评审的不同点配置管理要求,如代码版本控制、需求变更控制问题报告和处理系统采用的质量控制工具、技术和方法等232019/10/14质量计划模板参照项目概述实施策略项目组织质量保证对象分析及选择质量保证任务划分实施计划资源计划记录的收集、维护与保存样例详见P141242019/10/14质量评审的内容和手段内容1.需求说明评审2.设计文档评审3.测试计划评审4.功能性审核(内审)5.物理性审核(内审)6.管理评审手段内审:部门内部审查自己的工作,或者由一个独立部门审查其他各部门的工作,以检查组织内部是否遵守已有的模板、规则和流程等复审:在软件开发生命周期每个阶段结束之前,都正式用结束标准对该阶段的阶段性成果进行严格的技术审查。252019/10/14质量计划制定的步骤(1)1.了解项目的基本概况,收集项目有关资料重点了解项目的目标、用户需求和项目的实施范围2.确定项目的质量目标先根据项目总体目标和用户需求确定项目的质量总目标再根据项目组成和划分来分解项目质量目标然后建立各个具体的质量目标3.确定围绕质量目标的工作任务评审、跟踪、统计分析等4.明确项目质量管理组织机构配备各级质量管理人员、设备资源确定质量管理人员的角色和责任,建立质量管理机构262019/10/14质量计划制定的步骤(2)-项目质量责任表角色质量责任项目经理协助质量保证人员、测试组长的工作。进行全程的质量跟踪,报告质量问题,负责质量改进措施的实施质量保证人员对开发和测试过程进行质量控制,制定质量计划并负责实施、监控,组织所要求的各类评审会议等系统分析员负责需求评审的组织和实施,保证需求定义符合相关的规范架构师开发组负责人,负责设计的评审编程人员负责详细设计、编程、单元测试测试组组长参与需求、设计评审等会议。制定测试计划和测试用例的评审,执行测试的质量跟踪测试人员编写测试用例,并参与评审文档编写人员审查相关文档是否采用了最新的模板,是否符合文档规范的要求272019/10/14质量计划制定的步骤(3)5.制定项目质量控制程序项目质量控制工作程序初始的检查试验和标识程序项目实施过程中的质量检查程序不合格项目产品的控制程序各类项目实施质量记录的控制程序和交验程序6.项目质量计划的评审如果项目规模较大,可以按照子项目,或根据项目进度分阶段编制和评审项目计划282019/10/146.3.3如何制定有效的质量计划质量计划有效性体现在:1.项目质量计划要保证项目按计划期限完成2.要处理好项目质量计划与其他计划之间的关系保证项目质量计划有效性的几种方法:1.利益/成本分析。效益与成本之比尽可能的大。利益:减少重复性工作(避免返工),增加投资者的满意度成本:项目质量管理活动的付出2.基准:以其他同类历史项目的质量计划进行比较,为改进项目实施过程提供思路和可参考的标准。3.流程图:因果图:主要用来寻找引起质量问题的根本原因系统流程图或处理流程图:可以帮助找出解决所遇质量问题的相关方法4.试验设计。尝试找出最影响质量的因素、验证质量管理的合理性292019/10/146.3.4质量计划的实施和控制质量计划主要是获得产生质量缺陷的原因,从而减少软件缺陷或避免将来犯类似错误通过设置检查点、验证点,对阶段性成果进行评审或完成质量评估,以确定项目阶段性成果是否达到所设定的质量标准。项目收尾阶段的质量控制是一个非常重要而又容易忽视的内容。它需要检查项目文件资料的完备性,包括评审会议记录、测试报告等。同时进行项目总结302019/10/146.3.4质量计划的实施和控制(续)加强对质量计划执行情况的检查,及时发现问题在项目总体目标不变的前提下,应根据原质量计划和实际情况进行比较分析,找出问题产生的根本原因针对原因,制定出相应的技术保证措施,对原计划做出适当的调整,以确保项目质量总目标的圆满实现。312019/10/14第6章项目质量管理6.1质量管理概述6.2项目质量的组织保证6.3质量计划6.4软件评审方法和过程6.5缺陷预防和跟踪分析6.6质量度量6.7过程质量管理322019/10/146.4软件评审方法和过程6.4.1软件评审的方法和技术6.4.2角色和责任6.4.3软件评审过程6.4.4如何有效地组织评审332019/10/14软件评审不管你有没有发现他们,缺陷总是存在,问题只是你最