敏捷项目管理实战之质量管理.doc

上传人:m**** 文档编号:551102974 上传时间:2023-07-07 格式:DOC 页数:6 大小:40KB
返回 下载 相关 举报
敏捷项目管理实战之质量管理.doc_第1页
第1页 / 共6页
敏捷项目管理实战之质量管理.doc_第2页
第2页 / 共6页
敏捷项目管理实战之质量管理.doc_第3页
第3页 / 共6页
敏捷项目管理实战之质量管理.doc_第4页
第4页 / 共6页
敏捷项目管理实战之质量管理.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《敏捷项目管理实战之质量管理.doc》由会员分享,可在线阅读,更多相关《敏捷项目管理实战之质量管理.doc(6页珍藏版)》请在金锄头文库上搜索。

1、敏捷项目管理实战之质量管理Abstract:本文以笔者的项目管理实践为基础,介绍基于经验过程控制(Empirical Process Control)模型、缺陷预防以及敏捷价值观的敏捷质量管理思想及其实践。希望通过本文为广大项目管理人员提供质量管理的一些思路和经验分享。(本文如有更新,请见:http:/blog.viscenthuang.info。本文最初由本人发表在IBM developerWorks中文网站上,其网址是http:/ Cause Analysis)发现影响质量的因素,再采取措施使这些因素成为可观察的因素(对应经验过程的透明性)。然后,在项目实施过程中对这些因素进行检查(对应经

2、验过程控制的检查)。检查过程中发现不可接受的结果或者偏差时及时采取措施进行矫正以防止缺陷的引入或者缺陷流入下一道工序中(对应经验过程控制的适应),从而保证了最终产出的质量。缺陷预防孙子兵法谋攻中提到“百战百胜非善之善者,不战而屈人兵,善之善者”。每次打仗都取胜不是战争的最高境界,战争的最高境界是不费兵卒而取得胜利。同样,在软件开发过程中,找出所有缺陷并将其一一去除不是质量管理的最高境界。质量管理的最高境界是将缺陷扼杀在摇篮之中缺陷预防。经验过程控制三大支柱所体现的其问题驱动的特性说明了它可以帮助我们去实施缺陷预防。基于经验过程控制的缺陷预防是通过使缺陷来源成为可观察的因素,然后在软件开发过程中

3、对这些因素进行检查,发现不可接受的偏差时及时采取措施进行矫正,从而避免了缺陷的引入。比如,当我们发现开发人员对需求理解的错误、不全面是缺陷的一个重要来源时,我们就可以应用经验过程控制的思想,先采取措施使开发人员对需求的理解成为可观察的因素。然后对其进行检查,若发现有需求理解上的偏差,则进行矫正,从而避免了因需求理解偏差而引入缺陷。诚然,软件测试的目的是发现缺陷。也正因此大多数公司和个人也就把测试人员定位成缺陷的发现者。然而,测试毕竟是一种事后控制型的质量管理手段,这不是上上策。能否往测试人员这个角色的职责的定义中增加一个缺陷预防的职能呢?笔者曾经在所带团队中引导测试人员往缺陷预防方面发展,在这

4、方面多做贡献,而不是仅仅把自己定位为缺陷的发现者。在开发测试一体化团队中,测试人员同开发人员一起参与需求分析、评审。项目经理可以通过一些奖励措施鼓励测试人员多去发现需求本身的错误以及开发人员对需求理解的偏差,从而避免了需求相关的缺陷。另一方面,测试人员往往习惯于从发现缺陷中获得成就感。在引导测试人员在缺陷预防上多做贡献的过程中,项目经理需要引导测试人员使其认识到预防缺陷比发现缺陷更加能够体现一个人的能力和价值。需求澄清需求规格说明书本身的错误、不明确是软件缺陷的一个重要来源。因此,消除需求本身的问题是缺陷预防的一个重要内容。笔者在所带的项目中是通过开展需求澄清活动来消除需求本身的问题的。在开发

5、团队内部进行需求规格说明书评审之后,评审意见被汇总成一个列表,这个列表可以是一个Excel表格,我们称之为需求问题确认列表。然后,我们邀请客户过来和开发团队一起对问题列表中的每个问题进行讨论。团队成员负责提出和解释问题确认列表中的问题,客户代表则负责解答和澄清团队成员提出的问题。客户对于问题的回复我们会记录到问题确认列表的回复一栏。需求澄清活动往往是以头脑风暴会议的形式展开的,而不仅仅是一个一问一答的过程。对于客户当场给的问题回复,团队成员可能因为通过自己的分析认为客户的回复是错误或者不合理的而当场对客户代表的回复提出质疑。客户代表往往也因此对其回复进行重新思考从而给出与会人员一致认同的回复。

6、敏捷宣言中提到客户协作胜过合同谈判,需求澄清活动的基本前提就是客户代表的参与。因此它是符合敏捷开发的价值观的。表 1. 需求澄清活动管理思想参与者输入输出敏捷价值观指导下的具体实践、缺陷预防思想全体团队成员、客户代表需求规格说明书,需求问题确认列表需求问题确认列表需求宣讲团队成员对需求理解的偏差也是软件缺陷的一个重要来源。我们可以应用经验过程控制的思想对这种因需求理解偏差而引入的缺陷进行预防。其基本思路是先使团队成员对需求的理解成为可观察的因素,然后对这个因素进行检查。检查过程中发现不可接受的偏差时及时采取措施进行纠正,从而避免了缺陷的引入。笔者通过在团队内开展需求宣讲活动来具体实施这个缺陷预

7、防。需求宣讲是在开发人员开始编码、测试人员开始设计测试用例前,由全体团队成员参与的一个头脑风暴会议。在这个会议上,开发人员随机选取一个Story,然后口头表述其对所选择的Story的理解。通过这个讲解,开发人员对需求理解就成为了一个可以观察的因素。当其他与会人从需求讲解人的讲解中发现其对需求理解上的偏差时,可以及时指出进行纠正。其他与会人员也可对其讲解提出疑问和质疑。当讲解人的回复无法得到团队成员的一致认同时,则进行讨论,最终达到对需求理解的一致。而对于讨论无法达成一致认识的问题,可以记录入需求问题确认列表会后再进行确认。当然,当开发人员被要求讲述其对需求的理解时,可能会说他其实已经理解了需求

8、只是不知道如何表述。且不论这句话是否属实,项目经理应当引导团队成员意识到:在敏捷开发团队中,个人对需求是如何理解的,理解的对与错,深与浅不是其一个人的事情,而是整个团队的事情,因为它影响了这个团队最终交付的软件的质量!从另外一个角度来讲,当一个人能清晰得表述一件事物时,才说明其对这件事物是真正理解的。虽然需求评审和需求澄清这两个活动也能一定程度上反映活动参与者对需求的理解,但是它们更多的是用于发现需求本身的问题。而需求宣讲则是专门用于检验活动参与者对需求的理解正确性和全面性。表 2. 需求宣讲活动管理思想参与者输入输出经验过程控制、缺陷预防思想全体团队成员需求规格说明书,需求问题确认列表需求问

9、题确认列表设计会话(Design Session)与简单设计(Simple Design)设计阶段所引入的缺陷不仅包括设计本身的缺陷还包括了因编码人员对设计方案理解的错误和偏差而引入的缺陷。极限编程所强调的是简单设计虽然一定程度上降低了设计本身缺陷的概率,并且也有助于降低设计方案理解偏差而引入缺陷的可能性。但是,从经验过程控制和缺陷预防的角度来看,我们仍然需要将编码人员对设计方案的理解这一影响质量的因素成为可观察的因素,并对其进行检查。笔者在所带的项目中开展设计会话活动。在设计会话中,通常由设计人员借助白板讲解设计方案,其他人员对讲解的内容有疑问和异议时可以提出集体讨论。主讲的设计人员也可以针

10、对其讲解提出一些问题让其他参与人回答,以确定参与人是否真正理解设计方案。设计会话结束后,白板上的内容可以先保留一段时间,以方便事后再查看。有条件的团队也可将其拍照存档。设计会话中所讨论的设计方案可以事后由编码人员写入Story文档。由于相关人员事先都参与过设计会话,在Story文档评审时对其中的设计部分多少也许自己的认识和意见,这有助于发现对设计方案理解的偏差。设计会话体现了敏捷宣言中提到的个人与交互胜过过程与工具这一价值观,避免了仅仅通过设计规格说明沟通设计方案导致的沟通效率低下、设计方案理解偏差的问题,充分发挥了人与人直接沟通的优势。表3. 设计会话管理思想参与者输入输出经验过程控制、缺陷

11、预防思想、敏捷价值观指导下的具体实践全体团队成员需求规格说明书,需求问题确认列表设计方案版书单元测试评审单元测试是软件开发中被普遍接受的优秀实践,也是影响软件质量的一个重要方面。有效的、充分的单元测试能够提高代码质量,从而有效避免了返工。但是如何保证单元测试得到有效的执行呢?按照经验过程控制的思想,我们可以先使单元测试成为一个可观察的因素,然后对其进行检查。检查过程中发现偏差时及时进行纠正从而保证单元测试得到有效的执行。定义单元测试的产出物可以使单元测试活动成为可观察的因素。对单元测试产出物进行评审可以发现单元测试所覆盖的测试用例是否真正执行通过以及测试用例覆盖是否充分。若单元测试评审过程中发

12、现有测试用例未通过的或者遗漏的,则及时反馈给开发人员进行纠正,从而避免了缺陷进入下一道工序Story测试。笔者曾经在一个基于SOA(Service Oriented Architecture)的项目中将单元测试过程中系统所产生的接口日志文件定义为单元测试产出物。在这个项目中,开发人员会将单元测试过程中每个测试用例执行时系统所产生的接口日志文件按所覆盖的测试用例的名称进行命名提交到配置库上,然后知会其他项目组成员进行评审。由于这个单元测试产出物能够反映系统所要实现的功能,评审人员可以通过分析产出物判断每个测试用例是否真正执通过以及测试用例是否覆盖充分。评审者把评审过程中发现的测试用例未通过或者未

13、覆盖等问题会整理成评审意见提交到配置库上,并知会开发人员进行处理。表4. 单元测试评审活动管理思想参与者输入输出经验过程控制全体团队成员单元测试例单元测试产出物面对面代码复审在比较常见的轻型代码复审过程中,开发人员提交代码到配置库上,然后代码复审人员从配置库上获取相应代码并借助一些代码复审工具将复审结果形成意见提交给代码作者进行处理,并跟踪复审意见的处理结果。代码复审人员往往只在复审过程中有疑问的情况下才找代码作者进行确认。这种轻型的代码复审复审表面上执行起来比较容易,成本也比较低。但是它和敏捷宣言中提到的个人与交互胜过过程与工具这一价值观是相违背的。因为它缺乏有效的人与人间的交互。这种缺乏人员间交互的方式也导致了评审结果最终呈现给代码作者的往往是问题。这一方面使得代码作者只是被动得发现问题和解决问题。被动得发现和解决问题往往导致当事人对问题及其解决方法印象不深刻从而极易导致相同或者类似问题重复得出现。虽然我们可以将复审过程中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号