精益看板管理和敏捷软件开发 (转)

最近看了InfoQ上关于精益看板在软件开发上的一些实践和应用的文章,敏捷软件开发借鉴了很多TPS精益生产的思想,虽然没有完全提到看板的概念,但是看板在敏捷软件开发实践中是很有必要进行的。具体InfoQ的一些文章请参考:

将看板应用于软件开发:从敏捷到精益
http://www.infoq.com/cn/articles/hiranabe-lean-agile-kanban

用“看板图”实现敏捷项目的可视化
http://www.infoq.com/cn/articles/agile-kanban-boards

精益管理在开发项目上三大精髓
http://news.csdn.net/n/20080519/116069.html

软件开发中的准时化生产
http://news.csdn.net/n/20080519/116067.html

我们都知道看板的重要作用就是把传统的推式生产转变为拉动生产,通过按需生产来减少浪费。对于看板我们一方面需要控制在制品数量,一方面是要考虑整个看板工序形成的流动速率。敏捷利用故事卡做为信息载体,采用拉动的方式组织开发。典型的信息流动过程是这样的:需求=>故事卡=>用户验收测试=>单元测试=>开发,这就是测试驱动开发的过程。故事卡是第一道看板,在开发过程中,看板是以测试的形式存在的,只有在看到失败的测试时才开始编码。故事卡既体现了客户可识别的价值,又组织了团队中所有角色的工作,这就像准时化生产中总装车间的看板(要求生产一件成品的看板)的角色一样,而用户验收测试和单元测试则类似总装之前的各个生产单位的看板。故事卡与功能需求的不同之处就在于,故事卡试图将团队中所有角色(分析,测试,开发)的工作围绕自己在一个迭代中展开,同时在迭代结束的时候完成自己的使命,而功能需求是长期存在的,需要分解转化为故事卡之后才能指导团队的开发工作。因此说,故事卡和测试驱动开发使得软件开发可以通过拉动的方式展开。

有了拉动,我们就可以看到敏捷故事卡在整个看板上的流动,对于每一个工序我们都有(ToDo,Doing,End)三种状态,每一个用户场景在当前工序一完成后就会在看板上面进行移动,从上一个工序的End移动到下一个工序的ToDo,通过这种可视化看板的工序移动我们就很清楚当前的项目状态,以及当前的项目瓶颈出现在了哪个工序上面。

我们要意识到在软件开发中的浪费没有所谓的原材料,软件开发最大的浪费就是人力资源的等待已经我们开发完成工件的返工。对于第一个问题我们需要对瓶颈工序进行分析重新配置各工序资源的比例,对于第二个问题则需要引入一直迭代和持续交付的机制。

前面讲到了通过用户故事卡将开发中各个阶段的各个角色有机的串联在一起,同时引入测试驱动开发实现真正的拉式生产。另外就是要通过对故事卡的分类形成多个迭代版本,以实现我们期望的持续集成,迭代开发和多次交付。这是和传统瀑布开发的一个重要区别,敏捷开发强调持续、稳定地完成一个个对用户有价值的,经过集成的可用功能,而不是看是否做完了全部的设计工作,或是试图测量开发人员每天编写了多少行代码、测试人员测了多少个Bug。每个用户故事卡都是独立可以交付的,能够为创造用户价值的功能点。故事卡在由各个看板组成的工序之间流动,故事卡很好的启到了FDD特征驱动开发的作用,产品的完成是迭代的而不是传统的增量模式。

从精益看板到敏捷,除了强调故事卡为核心价值流和信息流的载体,看板管理的核心要素外。我们还需要考虑以下问题以强化对看板的应用。

  • 生命周期模型是如何的,工序如何划分
  • 如何通过历史生产率确定资源的配置
  • 项目的完成进度是否是以各个故事卡的最终完成比例确定的
  • 是否对故事卡进行了群和组的划分,以实现迭代交付
  • 项目的实际进度和每个成员的在做工作在看板上都能够体现
  • 一个是团队总的等待时间,一个是返工时间,如何消除浪费
时间: 2024-10-28 20:19:50

精益看板管理和敏捷软件开发 (转)的相关文章

管理从砖瓦进化为人——浅谈传统软件工程到敏捷软件开发之变革

管理从砖瓦进化为人 --浅谈传统软件工程到敏捷软件开发之变革 前言 如果把软件开发过程比作修筑一座建筑的话,传统的软件工程方法对人的管理就像是把人化作一砖一瓦,秩序地堆砌,一层一层构建起摩天大厦. 显然地,人是不同于砖瓦那样的死物的.人作为一种复杂的动物,软件开发者会有喜怒哀乐,枯燥重复的工作内容会使他们提不起兴趣而缺乏激情:客户想法会随变动的现实而一天天有所转变,软件需求很难保持一成不变:开发者与测试者对于项目的认识会存在差异,而差异将导致效率的降低--因而传统的有些"反人类天性"的

09.精益敏捷项目管理——敏捷软件开发中QA角色

00.当从鳄鱼嘴里侥幸逃脱时,你很难机器你的初衷其实只是想排出沼泽中的积水. 01.精益--敏捷软件开发中质量保证(Quality Assurance,QA)的角色展开,涵盖了许多关键问题 *测试人员的作用是防止缺陷,而不是发现缺陷 *开始做开发周期计划时如何发挥验收测试的作用,以做到在最大限度上减少浪费 *在早起不容易去做测试时做些什么 02.质量保证和质量控制 a.质量康芝是确保产品或服务被设计和生产出来,满足或超越客户需求的做法 b.质量保证是指由计划的.系统的生产过程,为产品符合预期目的

敏捷软件开发简述

前言:由于我读了邹欣老师的<构建之法:现代软件工程(第二版)>,因此对敏捷软件开发有了比较大的兴趣.于是我在网上找了一些论文,比如Requirements Engineering and Agile Software Development.A decade of agile methodologies: Towards explaining agile software development.在读了这些论文之后,对敏捷软件开发有了大致的了解.这篇博文主要是简单介绍敏捷软件开发,重点集中在主

小议敏捷软件开发与传统软件工程

敏捷软件开发与传统软件工程 一.前言 随着社会和科技的不断发展,信息产业己经和人们的生活息息相关,成为不可或缺的一部分.软件工程作为信息产业的核心部分发生了翻天覆地的变化.传统的软件工程思想己经越来越不适应快速变化的信息社会,为此一种新软件工程思想-----敏捷软件开发进入了我们的视野. 二.软件工程 (一)概述 Software engineering is the application of engineering to the design, development, implement

传统软件开发VS敏捷软件开发

在上世纪60年代,由于计算机的计算能力显著提升,人们需要处理问题的复杂程度也得到提升,导致了一系列问题比如项目运行超过预算.项目运行超过时间.软件十分低效.软件质量很低.软件无法满足需求.项目缺乏管理,代码难以维护.软件难以交付,称为软件危机.人们意识到,软件开发不仅仅是让程序员编写程序那么简单,而是一项工程,需要科学的开发方法,从而人们提出了软件工程的概念,采用工程化的方法对软件开发进行管理.而在当今,软件工程中软件开发方法主要分为传统软件开发和敏捷软件开发.本文主要介绍这两种软件开发方法以及

敏捷软件开发VS传统软件工程

敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中"人"的作用. 本文将介绍敏捷软件开发的历史背景与发展,

软件工程:传统软件工程 vs 敏捷软件开发

前言 软件工程(Software Engineering): 是一种层次化技术. 将系统化的.规范的.可量化的方法应用于软件的开发.运行和维护,即将工程化的方法应用于软件. 研究"建立和使用一套合理的工作原则,以便经济地获得可靠的.可以在实际机器上高效运行的软件"的方法. 敏捷软件开发(Agile software development): 一种应对快速变化的需求的一种软件开发方法.基于迭代和增量开发,通过自组织,跨团队,沟通协作完成开发工作. 一.传统软件工程 (一)产生背景 随着

敏捷软件开发与传统软件工程

敏捷软件开发与传统软件工程 北航计算机学院 14061157 李奕成 引言 软件开发过程是软件工程中相当重要的一环.一个正确.高效的软件过程能够提高软件工程活动的稳定性.可控性和有组织性.但是,并不存在一种软件过程能够完美的适应所有的软件工程情况.因此,在不同情况下选择合适的软件开发过程显得尤为重要.现代软件工程方法必须是"灵活"的,也就是要求软件工程活动.控制以及工作方法适合于项目团队和要开发的产品. 说到软件工程.敏捷开发,就要提到软件过程的发展历史.20世纪60年代,不存在现代意

敏捷软件开发 – SRP 单一职责原则

SRP:单一职责原则  一个类应该只有一个发生变化的原因. 为何把两个职责分离到单独的类中很重要呢?因为每一个职责都有变化的一个轴线.当需求变化时,该变化会反映为类的职责的变化.如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个. 如果一个类承担的职责过多,就等于把这些职责耦合在了一起.一个职责发生变化可能会削弱或抑制这个类完成其他职责的能力.这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏. 有两个不同的应用程序使用Rectangle类.一个应用程序是有关计算几何