软件质量问题的13个原因
- 管理者缺乏质量观念,未从一开始就强调质量。
- 开发者未将保证质量作为自己重要而且是必须完成的任务。
- 没有真正执行决不把不合格的中间产品带到下一阶段的规定。
- 没有良好的激励机制。
- 开发人员看不到提高质量对企业的生存发展有多重要,缺乏责任感。
- 没有解决好质量管理者和开发者的关系。
- 对用户的质量要求不了解,缺乏使用户满意的思想。
- 用户对软件需求不清晰、存在二义性。
- 开发人员对用户的需求理解有偏差甚至错误。
- 质量保证与保证质量的关系不清晰。
- 开发文档与管理文档对质量控制作用不大。
- 软件开发工具引发质量控制困难。
- 不遵守软件开发标准和规范。
- 缺乏有效的质量控制和管理。
质量是唯一不能妥协的,没有质量的生产是一种破坏
7.1 质量管理概述
质量的定义
质量
:通过实体来体现的,质量的实体可以是产品,也可以是某项活动或过程的工作质量,还可以是质量管理体系运行的质量。
7.1.1 质量和质量管理
1)质量的定义
质量的内涵包括:
- 内在质量特性。产品或服务的性能、特性、强度、精度等方面的质量特性。
- 外在质量特性。产品或项目在外形、包装、装潢、色泽、味道等方面的特性。
- 经济质量特性。产品或项目的寿命、成本、价格、运营维护费用等方面的特性。
- 商业质量特性。产品的保持期、保修期、售后服务水平等方面的特性。
- 环保质量特性。指产品对于环境保护的贡献或对于环境的污染等方面的特性。
软件质量除了具有一般产品的质量特征以外,还具有6个方面的质量特性,每个方面包含若干个子特性:
- 功能性:适合性、准确性、互操作性、依从性、安全性;
- 可靠性:成熟性、容错性、易恢复性;
- 易用性:易理解性、易学性、易操作性;
- 效率:时间特性、资源特性;
- 可维护性:易分析性、易改变性、稳定性、易测试性;
- 可移植性:适应性、易安装性、遵循性、易替换性。
提高软件质量是软件企业竞争的需要,是软件企业生存的基础,也是其进入国际市场的基本条件。
2)质量管理的定义
质量管理
:确定质量方针、目标和职责,并在质量体系中通过诸如质量策划、质量控制、质量保障和质量改进使质量得以实现的全部管理活动。其中:
- 质量方针是由组织的最高管理者正式发布的一个组织总的质量宗旨和质量方向。
- 质量体系是为实施质量管理所需的组织结构、程序、过程和资源。
- 质量策划是确定质量的目标和要求,以及确定采用质量体系要素的目标和要求的活动。
- 质量控制是为达到质量要求所采取的作业技术与活动。
- 质量保障是为了保证实体能够满足质量要求,并提供足够的证明以表明实体保证能够满足质量要求,而在质量体系中实施的,并根据需要进行证实的,全部有计划和有系统的活动。
- 质量改进是为向本组织及其顾客提供更多的收益,在整个组织内所采取的旨在提高活动和过程的效益和效率的各种措施。
质量管理作为企业管理活动,贯穿企业从质量方针制定到用户对项目产品质量的最终检验的全过程;质量管理需要所有项目干系人的共同努力;质量管理不仅仅是项目产品的质量管理,而且还包括制造产品过程中工作质量的管理。
3)项目质量管理
项目质量的主体是项目,项目的结果可能是有形产品,也可能是无形产品,更多的则是两者的结合。
项目的质量管理是指围绕项目质量所进行的指挥、协调和控制等活动。项目质量管理是为了保障项目的产出物,能够满足客户以及项目各方面相关利益者的需要所开展的对于项目产出物的质量和项目工作质量的全面管理工作。
IT项目质量管理是指IT企业为了使其产品和服务质量能满足不断更新的市场与客户的质量要求而开展的策划、组织、计划、实施、控制、改进活动的总和。
IT项目质量管理认为下述6点认识至关重要:
- 必须让参加项目的每个人从进入项目这一刻就牢记,质量是软件企业的生命线,质量管理是全体员工的责任;
- 使顾客满意是质量管理的目的;
- 质量不是检测出来的,而是策划和制造出来的;
- 建立项目管理规范、标准和模板是项目质量的基本保障;
- 质量管理的关键是不断地改进和提高项目管理能力;
- 管理者对产品的质量负责。
7.1.2 质量管理过程
干系人对质量的需求与期望——>质量规划——>质量标准以及实现方式——>质量保证——>项目绩效评估报告——>质量控制——>项目质量改进措施
质量规划:确定适合于项目的质量标准决定如何满足这些标准
质量保证:开展有计划、有系统的质量活动,确保项目的所有过程满足干系人的期望
质量控制:监控具体项目过程与结果,以确定其是否符合相关质量标准。指定有效方案,以消除产生质量问题的原因
7.1.3 现代质量管理
7.2 质量管理方法与体系
7.2.1 戴明改进循环
PDCA循环具体可分为下述8个步骤:
- 第1步 分析现状,找出所有存在的质量问题和主要质量问题。尽可能用数据说明所存在的质量问题
- 第2步 诊断分析产生质量缺陷的各种影响因素。
- 第3步 找出影响质量的主要因素。
- 第4步 针对影响质量的主要因素,制定措施,提出改善计划,并预计其效果。以上4步是P(计划)阶段的具体化。
- 第5步 执行既定的计划和措施是D(执行)阶段要完成的工作。
- 第6步 根据改善计划的要求,检查、验证执行效果。计划安排的措施是否落实,是否达到了预期的效果是C(检查)阶段要完成的工作。
- 第7步 根据检查结果进行总结,把成功的经验和失败的教训都纳入到有关的标准、制度和规定之中,巩固已经取得的成绩,防止“差错”重现,旧病复发。
- 第8步 找出这一循环尚未解决的问题,把它们转入下一个PDCA循环中去。 第7、8步是A(改进)阶段的具体化。
PDCA循环有两个特点:
- 大环套小环,PDCA能应用于企业的各个方面和各个层次,整个企业的质量管理运作是一个大的PDCA循环,而其中的某一项目或部门乃至个人的行动也按PDCA循环进行,形成大环套小环的综合循环系统,相互推动。如图7-4(a)所示。
- 螺旋式上升,每次PDCA循环都不是在原地踏步,而是每次循环都能解决一些问题,下次循环就在一个较高的层面上进一步解决新的问题。所以,它在不断循环的同时,还在不断上升,呈螺旋上升状态。如图7-4(b)所示。
7.2.2 ISO9000质量认证体系
1)质量认证
质量认证
也叫合格评定
,是国际上通行的管理产品质量的有效方法。
按认证的对象分为产品质量认证和质量体系认证两类;按认证的作用可分为安全认证和合格认证。
2)ISO与ISO9000
- ISO9000:质量管理与质量保证标准
- ISO9001:质量体系-设计、开发、生产、安装与服务的质量保证模式
- ISO9002:质量体系-生产与安装的质量保证模式
- ISO9003:最终检验与实验的质量保证模式
- ISO9004:质量管理与质量体系要素
3)ISO9000的8项质量管理原则
- 原则1:以顾客为中心。
- 原则2:领导作用。
- 原则3:全员参与。
- 原则4:过程方法。过程方法是将活动和相关的资源作为过程进行管理,可以更高效地得到期望的结果。
- 原则5:管理的系统方法。管理的系统方法是将相互关联的过程作为系统加以识别、理解和管理,有助于组织提高实现目标的有效性和效率。系统方法包括系统分析、系统工程和系统管理三大环节。
- 原则6:持续改进。持续改进是组织永恒的追求、永恒的目标、永恒的活动。
- 原则7:基于事实的决策方法。
- 原则8:互利的供方关系。供方是项目供应链上的第一个环节,供方的过程是质量形成过程的组成部分。
7.2.3 软件能力成熟度模型CMM
软件质量管理要达到的目标:
- 项目的软件质量管理活动是有计划的
- 软件产品质量的可测目标和目标的优先级被定义
- 实现软件产品质量的实际进度过程被量化
7.2.4 软件质量改进的问题与对策
- (1)要重视效果,不要徒有虚名。
- (2)要循序渐进,不要急于求成。
- (3)要注重实际,不要照抄照搬。
- (4)要把握重点,不要遍地开花。
- (5)要注重过程,不要只重结果。
- (6)要争取客户支持,不要一味“埋头苦干”。
7.3 项目质量规划
质量在计划中确定,不是在检验中确定
7.3.1 质量规划依据
7.3.2 质量规划工具与技术
7.3.3 质量规划成果
7.4 项目质量保证
质量保证指通过实施计划中的系统质量活动,确保项目实施满足要求所需的所有过程。质量保证也为过程持续改进活动提供支持。
质量保证往往由质量保证部或组织中与此名称的单位提供,项目管理团队、项目经理、客户和项目利益相关人员都可以通过项目质量保证获得支持。
质量保证的作用是从外部向质量控制系统施加影响与压力,促使质量管理活动更有效地进行。
7.4.1 质量保证的意义
“质量保证”不是单纯地为了“保证质量”,“保证质量”是质量控制的任务,而“质量保证”则是以保证质量为目标,进一步引申到提供“信任”这一基本目的。
项目质量保证是为了提供信用,证明项目将会达到有关质量标准,而在质量体系中开展的有计划、有组织的工作活动。
这种保证可以向项目管理小组和执行组织提供(内部质量保证),或者向客户和其他没有介入项目工作的人员提供(外部质量保证)。
不单纯为了保证质量,以保证质量为基础,达到用户提供“信任”的基本目的
7.4.2 项目质量保证过程
质量保证是在质量系统内实施的所有计划的系统性活动,是保证质量管理计划得以实施的一组过程及步骤,旨在证明项目满足相关的质量标准。
项目质量保证的依据来源于质量规划过程获得的项目质量管理计划、质量测试指标、过程改进计划,以及在其他过程中获得的批准的变更请求、质量控制测量、实施的变更请求、实施的纠正措施、实施的预防措施、实施的缺陷补救和工作绩效信息等。
质量规划的采用的工具和技术在质量保证中同样适用。质量保证采用的主要工具和技术还有质量审计、过程分析以及质量控制技术与工具。
成果:更新组织过程资产和更新的项目管理计划
7.4.3 软件质量保证SQA
是为了使软件开发的流程按照事先定义的规范进行,以保证软件质量活动。
一般的SQA流程需要如下步骤:
- 首先建立SQA小组;
- 其次选择和确定SQA小组所要进行的质量保证活动,这些活动将作为SQA计划的重要输入;
- 第3步,制定SQA计划,明确SQA活动与整个软件开发生命周期中各个阶段的关系;
- 第4步,执行SQA计划、对相关人员进行培训、选择与整个软件工程环境相适应的质量保证工具;
- 最后是不断完善质量保证过程活动中存在的不足,改进项目的质量保证过程。
SQA活动分类
7.5 项目质量控制
质量控制QC指采取有效措施监控项目的执行结果,以确定它们是否符合有关的项目质量标准,并确定适当方式消除导致项目绩效令人不满意的原因。
7.5.1 实施质量控制
项目的质量控制工作是一个系统过程,应从项目的全过程入手,全面、综合地进行控制。项目的质量控制主要从以下两个方面进行:
- 1)项目产品或服务的质量控制
- 项目产品或服务的质量控制是一个诊断和治疗的过程。当产品生产出来以后,要检查产品的规格是否符合需要的标准,并消除产生的偏差。产品的质量控制活动包括计划、测试、记录和分析。
- 2)项目管理过程的质量控制
- 项目管理过程的质量控制是通过项目审计来进行的。项目审计是将管理过程的作业与成功实践的标准进行比较所做的详细检查。
7.5.2 质量控制工具与技术
1)因果图
又称为石川图或鱼刺图,它直观地显示出各项因素如何与各种潜在问题或结果联系起来
2)控制图和七点运行法则
控制图又称为管理图,是数据的图形表示,表明一个过程随时间的结果。
控制图的主要用途是为了预防缺陷,而不是检测或拒绝缺陷。
3)流程图
流程图用于帮助分析问题发生的缘由。它以图形的形式展示一个过程。
流程图可以使用多种格式来表示,但所有过程流程图都具有活动、决策点和过程顺序等基本要素。流程图可以帮助项目管理者预期将在何时、何地发生质量问题,有助于项目质量地控制和管理。
4)帕累托图(Pareto)(8020规则)
二八原理,即80%的问题经常是由于20%的原因引起的。
7.5.3 质量控制成果
章节练习题