深入浅出软件开发----(四)计划迭代开发

(多年前的笔记,从ITEYE迁移过来的)

  在获取到用户的需求并编写成User Stories,并且通过Playing Poker Game 估算出每一个User Story开发所需的时间后。我们得到了要开发所有的User Stories需要的时间,大多数情况都是客户对新软件的要求都相当的迫切。很少有项目是不受时间的制约的。而成功的软件开发就是在规定的时间,规定的预算开发出来用户需要的软件。所以我们需要根据我们的可用时间来进行软件开发。

计算实际可用的开发时间(以人天为单位):

每一个项目都会有一个明确的截至时间,客户需要在那个时候得到他们需要的东西。所以我们的理论上可用时间一般是固定的,就是从项目开始到客户规定的截至时间。但是我们的开发时间并没有这么多,其中包括了周末、节假日、员工度假等等,在计算是都要考虑进入,这样每一个月的工作天数就是20。另外我们还要考虑开发人员的工作效率,还有就是员工请假、生病等情况,我们可以用开发速率来代表(其值应该小于一)0.7或0.8是一个不错的起点。等我们进行了一次迭代开发后我们根据实际的工作情况再调整该值。

我们用下边的公式来计算实际可用的开发时间:

实际可用的开发时间 =    可用自然月数 × 20 × 开发人数 × 开发速率

让客户挑选要开发的User Sotries并安排优先级:

在计算出实际可用的开发时间后,我们就可安排我们在可用时间内开发的User Stories了。等等,不是我们而是客户决定要开发哪些User Stories。只有客户才真正知道他们需要什么,不需要什么。通常情况下客户都会要求的比实际需要的多,这时候我们就要帮助用户跳选他们真正需要的,同时我们也能在可用时间内开发的User Stories。

根据优先级和实际可用时间用户挑选出了必须要实现的User Stories并排序,这些User Stories将做为Milestone 1.0中要开发的特性。在这个过程中我们需要告诉客户那些没有被挑出来的User Stories 并不是被舍弃掉,而是推迟到Milestone2.0或Milestone3.0。

Milestone1.0中应该只包含Baseline Functionality,如果少了这些功能软件就无法提供它的功能,这些功能是软件的最小功能集。

将选出的User Stories 分到各个迭代开发中(同样根据优先级):

在得到Milestone1.0的所有User Stories后,我们需要它们分到几个迭代循环中。迭代循环不宜过长,宜采用较短的迭代。较短的迭代周期有助于发现和应对变化和没有预期的时间,可以及时的调整。同时较短的迭代周期也容易更早的从客户那里得到反馈,更容易调整计划。

但是太短话,又因为频繁的计划、发布反而不利于开发。同时,迭代周期的选择也和开发人员的经验,项目的特点有关。一般情况下,一个自然月即20个工作日作为一个迭代周期是比较合适的。

根据每次迭代可以完成的工作量将Milestone1.0 中的User Stories分到各个迭代周期中。优先级高的User Stories应该最先开发。这样我们就得到了几个迭代开发周期。

使用Big Board监控开发的过程:

在得到第一个迭代开发后,我们就可以进行第一次的迭代开发了。别急,我们还需要一个工具来监控我们的工作效率和实际工作量。这就是Big Board。没有找到的Big Board的图片(会在以后的文章中介绍)。

 

   需要注意的问题:

1.在处理要开发什么,不开发什么,以什么顺序开发,都是由客户决定的。作为开发人员只能辅助客户。

2.开发团队的人员不是越多越好,根据团队成员的情况和项目特点,当人员达到一定数目时再添加人员不但不会提升开发速度反而会降低团队的生产力。这是由于人员越多交流沟通和管理的开销越大。

3.不要加班,加班只会使开发人员感到疲惫并降低生产力,而且影响开发人员的生活(一些极特殊的情况除外,如:产品发布前)。

4.与客户保持良好的沟通,注意沟通方式。最重要的要“Be honest with customer”.

时间: 2024-11-02 23:36:49

深入浅出软件开发----(四)计划迭代开发的相关文章

深入浅出软件开发-----(一)超越过程的迭代式开发

(多年前的读书笔记,从ITEYE迁移过来) 近日正在研读<Head First Software Development>一书,很喜欢深入浅出系列的书籍,语言流畅.行文活泼又不失风趣.同时又可以顺便学习一下英文,其实该系列书籍都挺流畅,只要英文不是特别差读起来就不费任何力气. 其实本书根据软件开发的整个流程,讲了很多的切实可行.可用的实践来帮助我们开发出伟大的软件----(Deliver what the customer want,  on time ,on buget!) Greate s

敏捷软件开发——项目版本迭代

开发人缘和客户决定迭代规模,一般需要两周.同样地,刻骨选择他们想要在首次迭代中实现的素材(功能).他们不能选择与当前开发速度不符的更多的素材. 迭代期间用户素材的实现顺序属于技术决策范畴,开发人员采用最具有技术意义的顺序来实现这些素材. 可以串行的实现,完成了一个再完成下一个,或者分摊这些素材,然后一起并行地开发. 一旦迭代开始,客户就不能再开遍该迭代期间需要实现的素材.除了开发人员正在实现的素材外,客户可以任意改变或重新安排项目中其他任何素材. 即使没有完成所有的用户素材,迭代也要在先前指定的

软件工程课设迭代开发第四天

迭代开发的第四天,今天的主要任务是把之前大家的代码整合到一起.然后我在整合版本的基础上进行技能的开发. 目前计划开发技能 (1)治疗技能:键盘1键回血 (2)群攻技能:键盘2键对周围地方所有单位进行伤害 (3)瞬移技能:将人物直接向面冲的方向移动一定距离 对于技能,我进行编写了一个skill.h源文件和skill.cpp代码 skill.h里是一个子类继承父类的关系,继承了Player.h之中的属性 这样就可以在skill中更改player中的属性了 学习了C+中父类子类继承调用的方法: 学习了

深入浅出软件开发-----(二)需求游戏

(多年前的读书笔记,从ITEYE迁移过来) 在选择“需求游戏”这个标题名称的时候,我犹豫再三,但还是用了这么一个标题.这并不是说在做需求捕获和分析时持有游戏的态度(当然这也是很不应该的),而是说我们在做需求捕获和分析时用到的一些方法很像是在做游戏,形式轻松,效果也不错. 在上一篇文章里我们提到过“一个软件或项目起源于用户的一个主意”,在多数时候用户的主意是笼统的.模糊不清的.不完整的.那么,我们作为软件开发者就有义务帮助用户挖掘所有关注点.细化他们的主意.弄清细节.评估需求并排列优先级. 首先我

瀑布式开发、迭代开发、敏捷开发、XP与SCRUM的区别

瀑布式开发.迭代开发,区别[都属于,生命周期模型]         两者都是一种开发模式,就像设计模式一样,考虑的角度不一样,个人感觉谈不到取代一说. 传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好.特别是前期阶段,设计的越完美,提交后的成本损失就越少.我现在从事的外包项目就是这样的流程. 迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目

腾讯敏捷开发及快速迭代

腾讯敏捷开发及快速迭代 http://www.edu-hb.com     2013-6-4 15:23:50     来源: itwriter      从 2006 年开始,腾讯的研发规模开始膨胀,开发模式急需规范和标准化,到底走 IPD(集成产品开发)还是 Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与 ThoughtWorks 公司接触,逐渐将敏捷产品开发引入进来,并正式命名为 TAPD(Tencent Agile Product Developme

P2P理财项目四个月开发总结

目前项目情况 这个项目从元旦开始开发到现在已经有四个多月的时间了,上线期限也是一拖再拖,从整个项目开发情况来看造成项目延期的原因有很多,简单分析和总结一下这个项目的优缺点,以及在这个项目中的成长. 项目进展分析 需求方面 需求变动在原因里面占用20%,通过个人感觉这个项目需求变动造成的时间浪费在20%左右,一般项目在代码写了一部分后基本上需求是不会再变了,可是这个项目再开发了两个月之后,需求又大变了一次,导致很多代码重新开发或者从新编译,开发重复劳动情绪也收到影响,当然项目慢也不能完全推给需求,

第一次迭代开发心得

通过第一次迭代,我真正意义上地体会到了当程序媛的感觉.有面对bug时的抓狂,有解决bug时的喜悦,也知道了整整一天都在码代码是什么感觉. 接下来就说一说我们组项目(基于联邦型知识图谱上的搜索引擎)第一次迭代的心得. 一.起步 因为之前大部分时间一直都在写各种各样的文档,所以我们的项目起步比较晚,真正意义上编写代码的时间只有不到两个礼拜.而且,我们当初把项目实现想得过于理想,导致后来时间有些不够用,所幸,在验收前一天,大家一起在图书馆泡一天,最终实现了第一次迭代的需求.这也是下次迭代需要注意的地方

第一次迭代开发总结

上周进行了Alpha版本项目的验收,为第一次迭代画上了句号.以下是我对本组项目第一次迭代的思考与总结: 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 产品定义:我们软件定义明确,是为需要使用车辆的用户提供及时租车功能: 典型用户:出差在外上班族: 典型场景:机场. 2. 是否有充足的时间来做计划? 时间充足.每周每位成员都有本周必须完成的各自的任务,所以项目进度比较快. 3. 团队在计划阶段是如何解决同事们对于计划的不同意见的?  通过沟通