敏捷开发下平衡质量和进度

 敏捷软件开发团队必须确保他们开发出来的产品质量能够满足要求,管理团队也经常希望开发团队能够提高速度以实现为客户提供更多的功能。本篇文章中多个作者探讨了质量和速度之间的关系,并提出了一些既能提高质量也能加快进度的方法。

  Bob Galen曾今在他的博客中发表了读懂我的唇语-敏捷并不快速的文章,在其中写到了追求软件开发进度下质量的重要性。

  敏捷是一个“质量游戏”,如果你以正直,承诺以及平衡的心态来玩这个游戏的话,那么结果将会是非常好的“速度游戏”,但它(速度)却并非没有代价。。。

  如果你无法玩转这个质量游戏,你所采纳的敏捷开发方法甚至比你以前使用的开发方法更慢。

  团队必须致力于把工作在一个迭代中完成,这也就意味着这些工作需要满足定义工作完成的所有标准。

  很多敏捷团队允许返工 – 修复漏洞,完成测试自动化,重构,或者设计不良导致sprint迭代的延误。即使大多数的敏捷工具允许拆分用例故事以捕捉在sprint迭代中已经完成的工作对比延期的工作,我也还是认为这给团队传达了错误的信息,让他们认为工作不在一个sprint迭代内完成是可以接受的。

  读懂我的唇语 – 并不是把所有事情做完,做完,做完!

  正如Bob解释的:一个组织不应该总是力图让进度变得更快,而应该更加注重质量。

  因此,下一次当你听到有人在激情澎湃的谈论着敏捷代表了更快的速度时,请打断他们,尝试向他们解释敏捷并不是一个“速度游戏”,而是应该强调敏捷是一个“或许能够快速运转的质量游戏”。

  Tim Ottinger曾今写过关于敏捷团队进度的14个奇怪观点,其中一个观点中就提到了质量和速度之间的关系。

  尽管大家通常会降低质量要求以求在较短时间内尽快完成工作,但是如果团队所开发的代码质量不高的话,经过全部sprint迭代后的进度最终都还是会被降低。

  Stephen Haunts在他的题目为进度并不是目标或者目的博客帖子中,描述了当管理者设定团队的进度目标后对质量会产生什么影响:

  (…)为了增加交付的功能点数目以满足绩效目标,团队会牺牲掉系统的质量,但从长远来看这样最终还是会降低团队的进度,并且会引入技术隐患。敏捷团队最好关注正在开发系统的质量与流程过程(持续交付和集成等等),以及负责开发系统的团队成员本身。

  软件开发者必须在进度和质量之间掌握平衡,正如Blake Haswell在文章什么是代码质量中解释的那样:

  虽然经常会有很多的外部压力向进度方面倾斜,但是如果你不够重视质量的话,进度最终还是会趋于缓慢以及停滞,以至最终整个项目走向颠覆。考虑到一个项目的代码质量决定了它能够在多大程度上适应需求的变化,一个可以持续改进的事情是你需要花费一部分时间来优化自己项目的代码质量。

  Blake提供了一个可以用来检查代码质量的属性列表:

  可理解性: 代码需要在各个层面上能够被容易地理解。理想情况下,软件应该非常简单,并没有非常明显的缺陷。

  可测试性: 代码需要被编写的非常容易被测试。

  正确性: 代码需要满足功能和非功能性的需求。

  有效性: 代码需要有效的使用系统资源(内存,CPU,网络连接,等)。

  Hugo Baraúna在他的博客文章名为内部质量低下软件的症状中解释了软件是如何因为变更而“变得更糟”的,最终导致质量低下并且降低进度。

  假如你正在领导一家创业公司的技术或者产品团队,你是首席技术官,并且已经推出了你们产品的第一个版本,做的还挺成功的。你们的业务模型已经得到了验证,现在你们正处于快速发展期。这真是太棒了!但这也是有代价的,它带来了一系列新的挑战。

  你们产品的第一个版本工作的很好,但是代码库却无法满足持续发展的要求。或许你的团队进度并没有像以前那样好了,团队成员一直在抱怨代码的质量问题,首席执行官和产品经理想要一些新的功能,但你现在代码规划根本无法满足业务的需求。

  他提供了一个指示质量低下的症状列表,这个列表能够帮助你来决定是否需要重写或者重构:

  所有事情都很艰难

  进度慢

  测试套件运行缓慢

  无法避免的缺陷

  你的团队是消极的

  知识缺乏共享

  新开发人员成长周期太长

  你又是如何平衡质量和进度的呢?

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-19 23:55:36

敏捷开发下平衡质量和进度的相关文章

windows下JAVA敏捷开发环境搭建步骤教程

  编程开发环境搭建还是挺重要的,第一步是先要搭建环境,有了环境才能开展工作.本文我们来看看windows下JAVA敏捷开发环境搭建步骤. 整个软件项目分为四个环境 开发本地环境.开发环境.测试环境.IDC环境.和传统C++开发不一样的模式是多了第一个开发本地环境.这是为什么呢,因为目前大部分开发人员还是比较熟悉windows下开发.对于mac和linux下直接使用软件并且开发的中国开发者还是少之又少,这套架构就这个现状做出来的.如下是环境搭建架构图: 从环境来说: 一.开发本地环境.开发集成服

敏捷开发实战随记

敏捷实战实施背景,地产行业信息化管理某知名企业,为了快速切入和抢占互联网市场,某产品研发部实施敏捷开发,通过短期快速灵活方式提升自己产品生产能力. 1.团队建立.确立目标和制度 以两周为一个大冲刺周期,大冲刺内实现和完成产品指定功能升级: 以每周为一个小周期,实现每日构建,开发人员完成后立即提交到测试环境由测试人员进行测试: 团队化分为平台小组.接口小组.开发A组.开发B组进行不同分工作业,每组设置小组长一名带领各小组完成冲刺目标: 整个团队设总监1名.有个产品经理.2个PM带领大团队进行产品升

敏捷开发和测试中重现缺陷和验证缺陷的解决方案(1)

第1部分:部署重现缺陷的环境 简介:本文为系列的第一篇文章,首先简述了系列的主旨和每部分的内容.然后针对敏捷开发和测试中开发人员重现测试人员开出的缺陷这一问题,具体描述了如何用IBM工具Rational Automation Framework以及IBM Workload Deployer快速记录和部署重现缺陷所需的测试环境,从而让开发人员可以更快速准确地获得重现缺陷的环境. 系列背景简介 在敏捷开发的大环境下,产品需要根据用户的需求不断进行变化,产品版本的研发周期越来越短,产品的交付速度越来越

微软软件研发策略转变之路 从瀑布式走向敏捷开发

长久以来,身为"软件开发商"的微软的名声并不太好,倒不是人们对微软的软件产品不满意,而是其更新周期太过漫长,比如Office.Windows.SQL Server和Exchange等主打产品的更新周期都长达3年左右,这其中的主要原因就是微软在软件项目的开发中采用了瀑布式开发模式.但随着用户对软 件的需求越来越苛刻,瀑布式开发模式已经难以满足新型软件的开发要求,而微软也不得不改变自己的软件研发策略. 国外科技媒体Arstechnica日前发文对微软软件研发策略的转变之路进行了分析. 以下

老曹眼中的敏捷开发【中生代北京闭门会实录】

引言 世界上不存在这样一种方法: 只要套用,就可以写出完美的软件,无论使用的哪种设计模式: 但确实可能存在一种开发方式,可以帮助我们一步步构造出需要的软件和架构--这有可能就是敏捷开发. 源自贝尔北方实验室的开发流程 相对于软件开发流程,有一门专门的学科--软件工程.最早接触软件工程,是20年前在北电贝尔北方实验室工作的时候,当时的开发流程是这样的: 其他主流的瀑布式开发流程也大致如此. Scrum的敏捷流程 随着技术的演进,尤其是互联网的发展,BS架构的广泛应用,用户反馈的及时响应成为了可能.

不以敏捷开发为基础的DevOps都是耍流流流流流流流氓

前言 Scrum模式开发经验分享 Scrum出来已经很久了,很多原理性问题就不讲了.今天和大家主要分享一下Scrum实施过程中的一些经验和对其的一些感受. 主要有四块内容--敏捷Scrum模式概貌.人员的分工.日常活动的细节.以及一些可能用到的简单工具. 现行开发模式及开发过程中痛点 敏捷模式概貌 Scrum已经用了很久,但为什么始终没有用到极致或者很火? 大家都在做大型系统,Scrum模式难度稍大,链条过长.需要开很多协调会议,沟通成本高. 微服务和容器化让团队规模发生转变,从以前几十人的大团

敏捷软件开发之何为敏捷开发

敏捷开发,Agile Development,就是指能够在需求迅速变化的情况下快速开发软件.我们接触最多敏捷实践方式有:极限编程(XP).结对编程.测试驱动开发(TDD)等. 追究敏捷的历史,就必须要提到著名的敏捷开发宣言,2001年,17位业界专家(其中包括我们非常熟悉的Martin, Martin Fowler)组成了一个敏捷联盟,并且创建了一份敏捷联盟宣言,宣扬了4条核心价值观:     1, Individuals and interactions over processes and

需求采集为小公司敏捷开发中的用户服务

网页制作Webjx文章简介:最近也许是因为大家面试很多,讨论用户需求采集的话题越来越多,好像突然大家一下子都在关注产品的这一流程.当然需求采集的方法很多,众多前辈们也都总结了许多,完全可以参考甚至搬到自己的项目中来实现.这些方法用到大公司大项目上,只要把握的好,数据分析工作做 最近也许是因为大家面试很多,讨论用户需求采集的话题越来越多,好像突然大家一下子都在关注产品的这一流程.当然需求采集的方法很多,众多前辈们也都总结了许多,完全可以参考甚至搬到自己的项目中来实现.这些方法用到大公司大项目上,只

敏捷开发与项目管理实战之敏捷需求分析

问题背景 敏捷开发中许多活动都是全员参与而非专人参与.需求分析同样也可以是全员参与 的一个活动.这反映了敏捷开发的"个人与交互胜过过程与工具"的价值观.需求分析是在需 求理解的基础上进行的.因此,全员参与需求分析有助于及时发现团队成员对同一个需求理解不一致的 问题,这很大程度上避免了缺陷的引入.另外,也有助于规避人力风险.比如,一个需求的开发者突然 需要请假,其他开发者可以马上顶替他,因为其他人也参与了其负责开发的需求的分析.此外,全员参 与需求分析也有助于全体成员的能力的提升.但问题