IT项目的质量管理.docx
- 文档编号:11977104
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:26
- 大小:32.51KB
IT项目的质量管理.docx
《IT项目的质量管理.docx》由会员分享,可在线阅读,更多相关《IT项目的质量管理.docx(26页珍藏版)》请在冰豆网上搜索。
IT项目的质量管理
提起如今的IT项目,软件工程倍受关注。
而软件的质量更是众人关注的焦点,因为目前还没有一套完善的评估标准。
甚至有人提出,现在的软件开发根本提不上是“工程”,因为它太稚嫩了,还没有一套成熟的标准来比照;因而软件项目极易出现失败或失误。
大量实践证明,软件工程项目的成败,通常是因为管理问题(协同工作的能力),而不是技术上的问题。
要想做一盘“完美”的软件大餐,质量管理的作用是不言而喻的。
在实际的项目质量管理中,质量管理总是围绕着质量保证(QualityAssurance)过程和质量控制(QualityControl)过程两方面。
这两个过程相互作用,在实际应用中还可能会发生交叉。
正如引言所述,关于软件的质量,很难下一个非常明确的定义。
本文主要针对软件工程中的质量管理来进行讨论。
做软件“大餐”的工序
软件质量保证(SoftwareQualityAssurance,以下简称SQA)的目的是验证在软件开发过程中是否遵循了合适的过程和标准。
软件质量保证过程一般包含以下几项活动:
首先是建立SQA组;其次是选择和确定SQA活动,即选择SQA组所要进行的质量保证活动,这些SQA活动将作为SQA计划的输入;然后是制定和维护SQA计划,这个计划明确了SQA活动与整个软件开发生命周期中各个阶段的关系;还有执行SQA计划、对相关人员进行培训、选择与整个软件工程环境相适应的质量保证工具;最后是不断完善质量保证过程活动中存在的不足,改进项目的质量保证过程。
独立的SQA组是衡量软件开发活动优劣与否的尺度之一。
SQA组的这一独立性,使其享有一项关键权利——“越级上报”。
当SQA组发现产品质量出现危机时,它有权向项目组的上级机构直接报告这一危机。
这无疑对项目组起到相当的“威慑”作用,也可以看成是促使项目组重视软件开发质量的一种激励。
这一形式使许多问题在组内得以解决,提高了软件开发的质量和效率。
选择和确定SQA活动这一过程的目的是策划在整个项目开发过程中所需要进行的质量保证活动。
质量保证活动应与整个项目的开发计划和配置管理计划相一致。
一般把该活动分为以下五类:
1)评审软件产品、工具与设施
软件产品常被称为“无形”的产品。
评审时难度更大。
在此要注意的一点是:
在评审时不能只对最终的软件代码进行评审,还要对软件开发计划、标准、过程、软件需求、软件设计、数据库、手册以及测试信息等进行评审。
评估软件工具主要是为了保证项目组采用合适的技术和工具。
评估项目设施的目的是保证项目组有充足设备和资源进行软件开发工作。
这也为规划今后软件项目的设备购置、资源扩充、资源共享等提供依据。
2)SQA活动审查的软件开发过程
SQA活动审查的软件开发过程主要有:
软件产品的评审过程、项目的计划和跟踪过程、软件需求分析过程、软件设计过程、软件实现和单元测试过程、集成和系统测试过程、项目交付过程、子承包商控制过程、配置管理过程。
特别要强调的是,为保证软件质量,应赋予SQA阻止交付某些不符合项目需求和标准产品的权利。
3)参与技术和管理评审
参与技术和管理评审的目的是为了保证此类评审满足项目要求,便于监督问题的解决。
4)做SQA报告
SQA活动的一个重要内容就是报告对软件产品或软件过程评估的结果,并提出改进建议。
SQA应将其评估的结果文档化
5)做SQA度量
SQA度量是记录花费在SQA活动上时间、人力等数据。
通过大量数据的积累、分析,可以使企业领导对质量管理的重要性有定量的认识,利于质量管理活动的进一步开展。
要说明的是,并不是每个项目的质量保证过程都必须包含上述这些活动或仅限于这些活动,要根据项目的具体情况来定。
SQA计划中必须明确定义在软件开发的各个阶段是如何进行质量保证活动的。
它通常包含以下内容:
质量目标;定义每个开发阶段的开始和结束边界;详细策划要进行的质量保证活动;明确质量活动的职责;SQA组的职责和权限;SQA组的资源需求,包括人员、工具和设施;定义由SQA组执行的评估;定义由SQA组负责组织的评审;SQA组进行评审和检查时所参见的项目标准和过程;需由SQA组产生的文档。
选择合适的SQA工具并不是试图通过选择SQA工具来保证软件产品的质量,而是用以支持SQA的活动。
选定SQA工具时,首先需要明确质量保证目标。
根据目标制定选择SQA工具的需求并文档化,包括对平台、操作系统以及SQA工具与软件工程平台接口的要求等。
如何使白壁“无瑕”
按工序去做也不一定能得到一盘完美的“大餐”,因为火侯等因素实在很难掌握。
万一掌握不好怎么办?
软件质量控制主要就是发现和消除软件产品的缺陷。
对于高质量的软件来讲,最终产品应该尽可能达到零缺陷。
而软件开发是一个以人为中心的活动,所以出现缺陷是不可避免的。
因此,要想交付一个高质量的软件,消除缺陷的活动就变得很重要。
缺陷消除是通过“评审”和“测试”这类质量控制活动来实现的。
缺陷在软件开发的任何阶段都可能会被引入。
项目质量管理过程包含了许多可以识别缺陷、消除缺陷的过程。
“识别缺陷”和“消除缺陷”本来是两个不同的过程,但在这里为了简便统一用“消除”来代表它们。
潜在的缺陷越大,用来消除它所花的费用越高。
因此成熟的软件开发过程在每一个可能会引入潜在缺陷的阶段完成之后都会开展质量控制活动。
这些为了消除缺陷的活动包括:
需求评审、设计评审、代码走查、单元测试、集成测试、系统测试以及验收测试等。
质量控制的任务就是策划可行的质量管理活动,然后正确地执行和控制这些活动以保证绝大多数的缺陷可以在开发过程中被发现。
正如前面提到的,在进行评审和测试时可检测到缺陷。
评审是面向人的过程,测试是运行软件(或部分软件)以便发现缺陷。
在一个项目里,评审和测试活动是预先策划好的(计划书中确定执行哪些质量控制活动和何时执行这些活动)。
在执行过程中,根据已定义好的过程来执行这些活动。
通过执行这些活动来识别缺陷,然后消除这些缺陷。
例如,系统测试过程一般包括制定测试计划,测试计划中应列出在测试执行过程中所有的测试用例,评审测试计划,并且最终执行测试计划。
软件项目质量管理经验谈
摘要:
本文详细阐述了作者对软件项目质量管理的认识,是作者实际经验的总结。
主要内容包括对软件项目质量管理理论的认识、软件项目质量管理在实践中的具体做法。
文章详细介绍了有关质量计划编制、质量控制、质量保证的有关理论;文章也描述了进行质量管理责任分配、质量管理实施的具体方法。
第一章 引言
许多IT项目开发的系统应用在生死攸关的场合。
例如,1981年,由计算机程序改变而导致的1/67的时间偏差,使航天飞机上的5台计算机不能同步运行,这个错误导致了航天飞机发射失败。
1986年,1台Therac25机器泄露致命剂量的辐射,致使两名医院病人死亡。
造成惨剧的原因是一个软件出现了问题,导致这台机器忽略了数据校验。
这些惨痛的教训说明,在软件开发项目中认真抓好质量管理,并加强有关软件项目质量管理的研究是摆在我们面前的重要课题。
软件项目质量管理包括:
质量计划编制、质量保证和质量控制三个过程域。
质量计划是质量管理的第一过程域,它主要结合各个公司的质量方针,产品描述以及质量标准和规则通过收益、成本分析和流程设计等工具制定出来实施方略,其内容全面反应用户的要求,为质量小组成员有效工作提供了指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。
质量保证则是贯穿整个项目全生命周期的有计划和有系统的活动,经常性地针对整个项目质量计划的执行情况进行评估、检查与改进等工作,向管理者、顾客或其他方提供信任,确保项目质量与计划保持一致。
质量控制是对阶段性的成果进行检测、验证,为质量保证提供参考依据,它是一个PDCA循环过程。
第二章 对软件项目质量管理理论的认识
软件项目的质量管理指的是保证项目满足其目标要求所需要的过程,它包括编制质量计划、质量控制、质量保证等过程。
2.1 质量计划编制
现代质量管理的基本宗旨是:
“质量出自计划,而非出自检查”。
只有做出精准的质量计划,才能指导项目的实施、做好质量控制。
编制项目的质量计划,首先必须确定项目的范围、中间产品和最终产品,然后明确关于中间产品和最终产品的有关规定、标准,确定可能影响产品质量的技术要点,并找出能够确保高效满足相关规定、标准的过程方法。
编制质量计划通常采用流程图、因果分析图等方法对项目进行分析,确定需要监控的关键元素,设置合理的见证点(W点)、停工待检点(H点),并制定质量标准:
1) 流程图:
显示系统的各种成分是如何相互关系的,帮助我们预测在何处可能发生何种质量问题,并由此帮助开发处理他们的办法。
2) 因果分析图(也称鱼刺图):
对于复杂的项目,编制质量计划时可以采用因果分析图,描述相关的各种原因和子原因如何产生潜在问题或影响,将影响质量问题的“人员、设备、参考资料、方法、环境”等各方面的原因进行细致的分解,方便地在质量计划中制定相应的预防措施。
其次,质量计划中还必须确定有效的质量管理体系,明确质量监理人员对项目质量负责和各级质量管理人员的权限。
戴明环(又名PDCA循环法)作为有效的管理工具在质量管理中得到广泛的应用,它采用计划——执行——检查——措施的质量环,质量计划中必须将质量环上各环节明确落实到各责任单位,才能保证质量计划的有效实施。
2.2 按照质量计划实施有效的质量控制
质量计划确定后,按照其建立的质量管理体系,各责任单位就必须按照PDCA质量环的要求,实施有效的质量控制。
质量控制应贯穿于项目的整个过程,它可分为监测和控制两个阶段:
监测的目的就是收集、记录和汇报有关项目质量的数据信息;控制就是使用质量监测提供的数据,进行控制,确保项目质量与计划保持一致。
在质量监测过程中,对于质量计划中设置的见证点、停工待检点,质量监测人员要按照作业程序及时进行测量检查(其中对于停工待检点必须由监理人员签字认可后才能进入下一道工序),以确定项目成果(或阶段成果)是否符合相关的质量标准。
对于见证点或停工待检点要防止跳过检查,因为避免错误的成本总是大大低于补救错误的成本。
对质量监测的结果应采用相应的统计方法进行分析,如帕累托图法(按发生频率排序的直方图,它显示了可识别原因的种类和所造成的结果的数量)等。
通过统计分析对人员、设备、参考资料、方法、环境等影响项目质量的因素进行监控,确定项目实施过程是否在控制之中,同时进行趋势分析,对一些偏向于不合格的趋势及早进行控制。
质量控制阶段应根据验收数据做出验收决定,确定是否进入下一步工序。
对于质量监测中发现的不合格,应及时利用“因果分析图”等方法分析原因,并进行适宜的处置,保证不合格得到识别和有效的控制。
不合格处置包括返工、返修、降级、让步放行、报废等形式。
作者:
麦秸杆儿 2006-5-2916:
51 回复此发言
2
软件项目质量管理经验谈
质量监测分析时,对于已发现的不合格或潜在不合格,应制定相应的纠正措施或预防措施,以消除不合格或潜在不合格的原因,防止不合格的发生。
纠正措施或预防措施制定后,应对质量计划进行相应的调整,保证项目的顺利实施。
项目收尾包括项目评估和项目终止两个阶段。
项目收尾阶段的质量控制是一个非常重要而又容易忽视的内容。
项目质量评估不仅仅是在项目完成后进行,还包括对项目实施过程中的各个关键点的质量评估。
项目质量评估看起来属于事后控制,但它的目的不是为了改变那些已经发生的事情,而是试图抓住项目质量合格或不合格的精髓,以使将来的项目质量管理能从中获益。
项目终止阶段,是在决策项目终止后,检查项目文件资料完备,包括项目施工质量验评表、竣工报告等,同时进行项目总结。
项目总结是一个把实际运行情况与项目计划不断比较以提炼经验教训的过程。
通过项目质量计划和总结,项目过程中的经验和教训将得到完整的记录和升华,成为“组织财富”。
四、项目质量管理的难点
每个项目的实施总是拥有同样的总体目标:
质量、时间和成本。
三者是一个相互制约、相互影响的统一体,其中任一项目标变化,都会引起另两个目标变化,并受其制约。
如何合理的保证项目质量,正确处理质量与时间、成本之间的矛盾是项目质量管理的一个难点,这需要整合项目所有方面的内容,保证按时、低成本地实现预定的质量目标。
根据侧重点不同,项目可分为质量倾斜型、工期倾斜型及成本倾斜型体系。
我们在编制项目计划时,一般而言是时间、成本、质量标准均已确定,在项目实施过程中就需在从客观因素、具体情况出发,根据将要采取的行动和可能导致的后果进行综合分析研究;按切合实际的原则,使项目进展平衡有节奏地进行,以求达到预期目标。
避免出现工期紧张或成本减少,导致质量降低的现象,而质量下降又往往造成返工等后果而导致延长工期和增加成本。
2.3 对软件质量保证的认识
2.3.1 有关SQA的理论
我们都知道一个项目的主要内容是:
成本、进度、质量;良好的项目管理就是综合三方面的因素,平衡三方面的目标,最终依照目标完成任务。
项目的这三个方面是相互制约和影响的,有时对这三方面的平衡策略甚至成为一个企业级的要求,决定了企业的行为,我们知道 IBM的软件是以质量为最重要目标的,而微软的“足够好的软件”策略更是耳熟能详,这些质量目标其实立足于企业的战略目标。
所以用于进行质量保证的SQA工作也应当立足于企业的战略目标,从这个角度思考SQA,形成对SQA的理论认识。
软件界已经达成共识的:
影响软件项目进度、成本、质量的因素主要是 “人、过程、技术”。
首先要明确的是这三个因素中,人是第一位的。
现在许多实施 CMM的人员沉溺于CMM的理论过于强调“过程”,这是很危险的倾向。
这个思想倾向在国外受到了猛烈抨击,从某种意义上各种敏捷过程方法的提出就是对强调过程的一种反思。
“XP”中的一个思想“人比过程更重要” 是值得我们思考的。
我个人的意见在进行过程改进中坚持“以人为本”,强调过程和人的和谐。
根据现代软件工程对众多失败项目的调查,发现管理是项目失败的主要原因。
这个事实的重要性在于说明了 “要保证项目不失败,我们应当更加关注管理”,注意这个事实没有说明另外一个问题“良好的管理可以保证项目的成功”。
现在很多人基于一种粗糙的逻辑,从一个事实反推到的这个结论,在逻辑上是错误的,这种错误形成了更加错误的做法,这点在SQA的理解上是体现较深。
如果我们考证一下历史的沿革,应当更加容易理解 CMM的本质。
CMM首先是作为一个“评估标准”出现的,主要评估的是美国国防部供应商保证质量的能力。
CMM关注的软件生产有如下特点:
(1)质量重要
(2)规模较大
这是 CMM产生的原因。
它引入了“全面质量管理”的思想,尤其侧重了“全面质量管理”中的“过程方法”,并且引入了“统计过程控制”的方法。
可以说这两个思想是CMM背后的基础。
作者:
麦秸杆儿 2006-5-2916:
51 回复此发言
3
软件项目质量管理经验谈
上面这些内容形成了我们对软件过程地位、价值的基本理解;在这个基础上我们可以引申讨论 SQA。
2.3.2 生产线的隐喻
如果将一个软件生产类比于一个工厂的生产。
那么生产线就是过程,产品按照生产线的规定过程进行生产。
SQA的职责就是保证过程的执行,也就是保证生产线的正常执行。
抽象出管理体系模型的如下,这个模型说明了一个过程体系至少应当包含 “决策、执行、反馈”三个重要方面。
QA的职责就是确保过程的有效执行,监督项目按照过程进行项目活动;它不负责监管产品的质量,不负责向管理层提供项目的情况,不负责代表管理层进行管理,只是代表管理层来保证过程的执行。
2.3.3 SQA和其他工作的组合
在很多企业中,将 SQA的工作和QC、SEPG、组织级的项目管理者的工作混合在一起了,有时甚至更加注重其他方面的工作而没有做好SQA的本职工作。
国内现在基本有三种QA(按照工作重点不同来分):
一是过程改进型,一是配置管理型,一是测试型。
个人认为是因为SQA工作和其他不同工作组合在一起形成的。
下面根据经验对它们之间的关系进行一个说明。
QA和QC ,两者基本职责;
QC:
检验产品的质量,保证产品符合客户的需求;是产品质量检查者;
QA:
审计过程的质量,保证过程被正确执行;是过程质量审计者;
注意区别检查和审计的不同,检查:
就是我们常说的找茬,是挑毛病的;
审计:
来确认项目按照要求进行的证据;仔细看看CMM中各个KPA中SQA的检查采用的术语大量用到了“证实”,审计的内容主要是过程的;对照CMM看一下项目经理和高级管理者的审查内容,他们更加关注具体内容。
对照上面的管理体系模型,QC进行质量控制,向管理层反馈质量信息;QA则确保QC按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。
这就是QA和QC工作的关系。
在这样的分工原则下, QA只要检查项目按照过程进行了某项活动没有,产出了某个产品没有;而QC来检查产品是否符合质量要求。
如果企业原来具有 QC人员并且QA人员配备不足,可以先确定由QC兼任QA工作。
但是只能是暂时的,独立的QA人员应当具备,因为QC工作也是要遵循过程要求的,也是要被审计过程的,这种混合情况,难以保证QC工作的过程质量。
QA和SEPG,两者基本职责。
SEPG:
制定过程,实施过程改进;QA:
确保过程被正确执行。
SEPG应当提供过程上的指导,帮助项目组制定项目过程,帮助项目组进行策划;从而帮助项目组有效的工作,有效的执行过程。
如果项目和QA对过程的理解发生争持,SEPG作为最终仲裁者。
为了进行有效过程改进,SEPG必须分析项目的数据。
QA本也要进行过程规范,那么所有QA中最有经验、最有能力的QA可以参加SEPG,但是要注意这两者的区别。
如果企业的 SEPG人员具有较为深厚的开发背景,可以兼任SQA工作,这样利于过程的不断改进;但是由于立法、执法集于一身也容易造成SQA过于强势,影响项目的独立性。
管理过程比较成熟的企业,因为企业的文化和管理机制已经健全, SQA职责范围的工作较少,往往只是针对具体项目制定明确重点的SQA计划,这样SQA的审计工作会大大减少,从而可以同时审计较多项目。
另一方面,由于分工的细致化,管理体系的复杂化,往往需要专职的 SEPG人员,这些人员要求了解企业的所有管理过程和运作情况,在这个基础上才能统筹全局的进行过程改进,这时了解全局的SQA人员就是专职SEPG的主要人选;这些SQA人员将逐渐的转化为SEPG人员,并且更加了解管理知识,而SQA工作渐渐成为他们的兼职工作。
这种情况在许多 CMM5企业比较多见,往往有时看不见SQA人员在项目组出现或者很少出现,这种SEPG和SQA的融合特别有利于组织的过程改进工作。
SEPG确定过程改进内容,SQA计划重点反映这些改进内容,从保证有效的改进,特别有利于达到CMM5的要求。
从这个角度,国外的SQA人员为什么高薪就不难理解了,也决定了当前中国SQA人员比较被轻视的原因;因为管理过程还不完善,我国的SQA人员还没有产生这么大的价值。
作者:
麦秸杆儿 2006-5-2916:
51 回复此发言
4
软件项目质量管理经验谈
2.3.4 QA和组织级的监督管理
有的企业为了更好的监督管理项目,建立了一个角色,我取名为 “组织级的监督管理者”,他们的职责是对所有项目进行统一的跟踪、监督、适当的管理,来保证管理层对所有项目的可视性、可管理性。
为了有效管理项目, “组织级的监督管理者”必须分析项目的数据。
他们的职责对照上图的模型,就是执行 “反馈”职能。
QA本身不进行反馈工作,最多对过程执行情况的信息进行反馈。
SQA职责最好不要和“组织级的项目管理者”的职责混合在一起,否则容易出现SQA困境:
一方面SQA不能准确定位自己的工作,另一方面过程执行者对SQA人员抱有较大戒心。
如果建立了较好的管理过程,那么就会增强项目的可视性,从而保证企业对所有项目的较好管理;而 QA来确保这个管理过程的运行。
2.3.5 SQA的工作内容和工作方法
2.3.5.1 计划
针对具体项目制定 SQA计划,确保项目组正确执行过程。
制定SQA计划应当注意如下几点:
有重点:
依据企业目标以及项目情况确定审计的重点。
明确审计内容:
明确审计哪些活动,那些产品。
明确审计方式:
确定怎样进行审计。
明确审计结果报告的规则:
审计的结果报告给谁。
2.3.5.2 审计/证实
依据 SQA计划进行SQA审计工作,按照规则发布审计结果报告。
注意审计一定要有项目组人员陪同,不能搞突然袭击。
双方要开诚布公,坦诚相对。
审计的内容:
是否按照过程要求执行了相应活动,是否按照过程要求产生了相应产品。
2.3.5.3 问题跟踪
对审计中发现的问题,要求项目组改进,并跟进直到解决。
2.3.5.4 SQA的素质
过程为中心:
应当站在过程的角度来考虑问题,保证了过程, QA就尽到了责任。
服务精神:
为项目组服务,帮助项目组确保正确执行过程。
了解过程:
深刻了解企业的工程,并具有一定的过程管理理论知识。
了解开发:
对开发工作的基本情况了解,能够理解项目的活动。
沟通技巧:
善于沟通,能够营造良好的气氛,避免审计活动成为一种找茬活动。
第三章 软件项目质量管理在实际中的具体做法
3.1 质量管理责任分配
笔者曾在美国TAJ Technologies公司任软件工程师工作。
TAJ Technologies公司(位于美国明尼苏达州,有约200名员工)在开发项目上按照规范化软件的生产方式进行生产,在生产流程上采用ISO9000的标准进行。
每个项目除配备了项目开发所需角色外,还专门配备了配置管理小组、测试小组和质量保证小组确保质量管理的实施,下面针对这三种角色进行说明:
3.1.1 配置管理小组职责
配置管理小组是保证项目开发完毕的同时,内部文档和外部文档都同时完成。
内部文档的及时产生和规范,是保证项目开发各小组能够更好的接口和沟通的重要前提,从另一个方面讲,也是保证工程不被某个关键路径所阻塞而延滞的前提。
如上所述,配置管理小组还是保证质量保证小组得以发挥作用的基础。
配置管理小组的主要职责包括:
完善各个部门发送需要存档和进行版本控制的代码、文档(包括外来文件)和阶段性成果; 对代码、文档等进行单向出入的控制; 对所有存档的文档进行版本控制; 提供文档规范,并传达到开发组中。
3.1.2 测试小组职责
测试小组作为质量控制的主要手段,负责软件的测试设计和执行工作。
如同软件开发一样,测试在执行之前,同样需要进行测试计划和测试策略的设计,通常情况下测试可以分为如下几种类型,如:
正确性测试、功能性测试、性能测试、安全测试和系统测试等。
而这些测试均需要在测试计划和测试策略中进行描述用以指导测试小组成员进行测试用例编写和测试执行。
程序员在交给测试人员之前是进行过一定的单元测试,确保程序编译、运行正确。
测试人员根据详细设计的文档对软件要实现的功能进行一一测试,保证软件的执行正确的实现设计要求,在此也只证明了软件正确的反映了设计思想,但是否真正反映了用户的需求仍需要进一步的功能性测试。
作者:
麦秸杆儿 2006-5-2916:
51 回复此发言
5
软件项目质量管理经验谈
测试人员只有根据软件需求规格说明书所提及的功能进行检测,才能确保项目组开发的软件产品满足用户需求。
在正确性测试完成之后,需要测试的是软件的性能,软件的性能在本项目中占有重要
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IT 项目 质量管理