`
chenjie19891104
  • 浏览: 12514 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

敏捷开发中如何保障项目进度(相对估算加迭代求精法)

阅读更多

 

随着敏捷开发热潮的到来,很多开发者开始了敏捷之旅!本人也不例外,正踏上敏捷的航班!

 

敏捷开发的模式和普通的开发模式存在几点关键的不同:

@1、敏捷开发拥抱变化。

@2、是人管项目,而不是项目在牵制人。(人永远处于主动地位,不可让项目牵着走)。

@3、采用xp进行项目实践。

@4、采用scrum进行过程管理。

 

本文主要探讨敏捷流程中如何确保项目的开发进度の相对估算加迭代求精法

 

当开发团队第一次被问到"这个项目要多长时间能够完成?"的时候,项目的需求不全,只知道大概的功能模块,非功能性的需求还不是很清楚。

 

那么我们估计确定项目的开发时间呢?在敏捷中可以尝试采用“@@”方法。

 

一、相对估算:

1、项目经理和开发人员:定义功能模块,同时赋予每一个功能模块一个规模系数难度系数 。给出一个初步估计的分值。这个分值供相对参考使用。

     比如,现在有显示,查询,修改三个功能模块,初步确定显示是10分,那么查询可能定为15,修改可能定为20

2、项目经理和开发人员:选取一个分值最小的模块,进一步分析,如上例中显示为10分,最小分值的功能模块。确定,显示需要有设计数据库,查询,显示界面,显示内容等操作,初步确定需要10人天(一个人完成该工作的天数)。这样,一分值对应的工作量就是1人天。那么整个显示,查询,修改加在一起就是45人天。注意,这只是初步的结论。含有相当大的误差。

 

这样相对估算的过程就算完成了。接下来的任务是“迭代求精”。

 

二、迭代求精

1、开发团队开始实现显示模块,如果实际完成所用的时间是12人天,那么根据比例关系,剩余的工作所需的时间就为(12/10)*35=42人天。

2、开发过程中可以根据已经实现的模块,改变未实现模块的分值。然后根据修改后的分值,重新计算剩余模块的相对分值。

 

三、其他总结:

1、开发过程中可以将每个模块定义一个优先级,按照从高到底的顺序排列,对高优先级的模块进行细分,最后确定分值最小的功能模块。

2、在估计模块工作量的时候,可以加入调整系数,开始时,调整系数可能比较高,如0.4,随着项目的进行,各个功能模块的调整系数也在逐渐降低,经过几次调整,可以将调整系数定为0。

3、开始的时候,调整系数可能较大,如0.4,那么上例中项目时间就是[0.6*45~1.4*45]

后面显示模块做过之后,经过调整,剩余工作量是32个人天,现在可以将调整系数定为0.3,那么剩余的项目时间就是[0.7*32~1.3*32]。通过不断迭代,最终对工作量的估算也越来越精确。

4、项目时间的估算是有开发人员自己确定的。那么每个人如何估算某个模块所需要的时间呢?要求开发团队最好能做到每天开个小例会,在会上,每个成员需要当前任务的剩余的开发时间进行重新估计。

5、开发中在每日例会中及时解决瓶颈问题。

6、几次迭代之后,可以确定一个校正系数,这样,在估算任务时间的时候,可以有效避免过于保守或者过于乐观!

 

分享到:
评论
1 楼 wintersun 2011-07-27  
这种渐进明细(明确)的方法很不错。但是,如果在售前,需要估算项目规模——根本目的当然是项目成本——以便对客户进行合理报价时,该怎么进行呢?  凭以往项目经验?

相关推荐

    软件工程基础教程(刘文,朱飞雪)

    书中还会讨论项目管理,包括进度计划、风险管理、质量管理以及成本估算。理解WBS(工作分解结构)和Gantt图等工具,能帮助读者更有效地管理项目资源和时间。 最后,软件工程强调持续改进和维护。通过软件维护,可以...

    软件工程,软件工程概论

    项目管理则涉及进度控制、成本估算、风险管理等,确保软件项目的顺利进行。 五、软件工程工具与环境 集成开发环境(IDE)、版本控制系统(如Git)、自动化构建工具(如Maven)、测试框架(如JUnit)和配置管理工具...

    系统分析与设计复习作业(题目)1

    5. 敏捷开发与传统方法的主要区别在于:敏捷强调迭代、增量开发,强调用户参与和反馈;而传统方法通常采用预先定义的计划,强调文档完整性和控制流程。 6. 生命周期法与原型法的优劣:生命周期法适合需求稳定且明确...

    软件工程作业一1

    16. **成本估算模型**:COCOMO模型是一种常见的成本估算方法,而McCall模型和McCabe度量法是软件质量评估模型,时间估算法则用于估算项目的时间成本。 17. **软件生存周期**:维护阶段是软件生存周期中时间最长的...

    软件工程总结21

    敏捷软件开发强调适应变化、重视价值和团队协作,采用迭代和增量的方式进行开发。人机界面设计则需考虑用户友好性,如响应时间、帮助系统、错误处理和命令设计等,以提升用户体验。 总的来说,软件工程涵盖了从需求...

    《软件工程导论》张海潘_第五版_清华_课后答案

    - 特别适合大型软件项目,可以在每个迭代中进行风险评估和应对策略调整。 **1.4.5 喷泉模型** - 针对面向对象开发的模型,强调迭代和无间隙的特性。 - 适用于需求不太清晰但能够逐渐明确的情况。 **1.4.6 ...

    软件工程期末考试简答题汇总.doc

    软件生命周期开发法的基本过程包括:需求分析、系统设计、编码、测试和维护,每个阶段都有特定的任务,如需求分析阶段主要是理解和记录用户需求,设计阶段是制定系统架构,编码阶段是将设计转化为代码,测试阶段是...

Global site tag (gtag.js) - Google Analytics