|
最早在<Joel on software> 中看到Joel提到使用Evidence Based Scheduling (EBS) 中的单个的时间估算方式:蒙特卡罗时间估算方式,估算方法的细节要求如下:
1.将任务细分的小时级的工作量。
最大的任务不超过16个小时.这一步让你认真考虑将要完成的工作。细分之后的任务比如像分析一个文件通常是做过的任务。完成这些任务的时间因而比较容易估算
2.记录完成工作的时间。
注意,任务的实际完成时间是包含任务开始到结束的物理工作时间,包含了会议等没有实现计划的时间。因此,完成时间是真实的时间并且反映了意外事件的影响。
3.对真实完成时间的模拟:
你不要将估算值相加得到未来的完成日期。 这种做法看起来简单但是会给出很错误的结果。你应该用Monte Carlo法来模拟,即:对每一项任务,将其估算时间除以一个随机选择的历史工作速度值,达到的结果为蒙特卡罗法估算出的时间。
pope对这个时间估算方式一直很有兴趣,也不知道准确性到底如何,对自己工作改进的帮助是不是会有不小进步,所以就自己动手写了以上3步骤的过程,用python完成的,默认写的是存储本地文件,历史选取默认使用了1000条,现在已经这个步骤本身的内容已经基本完工,代码可以在https://code.google.com/p/montecarlo-time-test/可以看到,有个小问题,code提交时放到http://montecarlo-time-test.googlecode.com/svn/wiki中了 checkout 注意一下路径吧,欢迎试用,由于是自己在写,没有系统测试过,有问题欢迎mail我。
使用说明
1.开发本地的python是2.6.5版本,3.0没有测试过,不太清楚是否支持。
2.源码中两个版本,推荐使用UseDate.py,直接运行就可以,命令行提示:
“'存储TT请输入1,退出为0,T_P未存储处理2,否则为估算蒙式时间:”
其中非2,1,0的输入为默认估算,估算后,给出估算结果,例如:
——————————————————
存储TT请输入1,退出为0,T_P未存储处理2,否则为估算蒙式时间:3
你的估算时间:1000
估算条目:313,取值内容:'1.51739619196'
sTT=659.02366520922499
id=1045
-----------------------------------
其中sTT为估算值,id为输入真实值使用的索引号,在记录自己的真实使用时间时要使用,注意记录啊![next:这个在想,next改进可能用别的更好的方式代替,但现在还没有想到,先忍忍吧]
如果输入1,为记录真实的使用时间,给出此记录全部内容,例如:
------------------------------------
存储TT请输入1,退出为0,T_P未存储处理2,否则为估算蒙式时间:1
id为:1045
TT为:1000
1045 1000.0 659.023665209 2013-06-06 11:55:14 1000.0 2013-06-06 11:59:01
1045 1000.0 659.023665209 2013-06-06 11:55:14 1000.0 2013-06-06 11:59:01 1.51739619196
------------------------------------
其中TT和id都是你要输入的值,id是之前输入估算时间时给你的id,而TT就是这个内容你真实使用的时间。
##########################################分割线#############################
当前应用选用python主要是近来一直看<Dive into python> 再尝试python和unittest所以顺手选择的。
最后代码为GNU GPL 协议的遵守,如果你有修改,欢迎mail我
thank you for reading
|
|