您好,欢迎访问三七文档
编程任务估算的艺术AdrianaLopez龙腾世纪2(DragonAge)开发总监II我们为何来到这里?个人估算的改进问题•是否曾有人要求你为某项任务提供一份估算…–最后却被证明错得离谱(2x)?•结果你经历了什么后果?后果是什么?•游戏质量差•与其他团体的协作差•在你的上司或同事面前,你的可信度受损•哦,又要加班–接二连三地加班综述•基本概念–何谓估算?–为何估算有难度?•如何使估算变得更简单?•问题?何谓估算?估算…•是对一项任务工作量或其复杂程度的预测。•应该反映出固有的不确定性:–“我想这任务将花3到8天。”•应该由实际从事该工作的人员来提供。估算…•具有准确度与精确度两个方面。–准确的估算——实际值在估算范围内。•避免范围太大(范围太大的估算没有价值)。–精确的估算——范围很小。•避免那些没有数据支持的容易产生误导的所谓精确。估算…•让项目能对其资源进行计划与组织。–准确且精确的估算使得项目能按时、按预定方式完成。为何估算有难度?低估与高估•研究表明,编程人员通常会低估完成一项任务所需的工作量。不完整的要求•在项目进行中过早提出。–在大家还不不知“它”是什么之前,就估算“它”要花多长时间。•用户不清楚自己想要什么。–我看到“它”时就知道。•我们没有问恰当的问题。–要记得同时征询到功能性及非功能性要求。•区分不完整要求与不稳定要求不确定性圆锥体是项目管理的术语,用于描述项目各阶段的不确定性水平由SteveMcConnell推广普及的一个术语。估算可变性项目生命期个人估算做法•提供低估算的压力–管理层需要达到某个目标。–来自同伴的压力。•记住:–更低的估算!=更好的程序员–避免“即兴的”估算个人估算做法•被省略的活动–编程活动–非编程活动•没有理由的乐观–支持某估算的理由未以数据为依据。–“我们现在更聪明了”–“不可能那么糟”个人估算做法•主观性/偏见–获得某特定结果的愿望(有意识或无意识的)•不熟悉的问题领域–缺乏经验。•缺乏历史数据–将你的估算建立在以往绩效的基础上。项目混乱•区分目标与估算–确认一下,是要求你进行切合实际的估算,还是要求你达到某个目标。•不要提供“即兴的”估算–“即兴的”估算可能变成目标/承诺。•学会对要求进行协商。Howdowemakeiteasier?PlanExecuteReview规划你卷入了什么样的情形?你卷入了什么样的情形?•项目组长关心的是,要完成议定的工作范围,全部工作量是多少。•总工作量是个别任务的总和,并且基于你所认为的该项工作的复杂性/规模•采用估算技巧来解答这个问题。技巧1:设定一根基线•复杂性估算:–XP(经验分)–复杂性分–头痛之事–啤酒•允许范围:1,2,3,5,8,13,20…•实际工作是以实际时间(例如:小时)进行衡量的。基于时间的估算:工作小时数理想天数技巧2:协作•减少个人偏见。•如果没有协作:–该估算将取决于问到谁,什么时候问。不要想当然地认为最可靠的估算来自于那些最能说的人。哎,伙计,这得花多长时间?52Zzzz技巧3:三角系•将新工作与以往的工作相比较。•.需要历史数据。•要前后一致!2XP1XP3XP~10,000XPA–2XPB–3XPC–1XP技巧4:分解•将大的任务(用户故事)细分成具有以下特点的小的任务(用户故事):–你更熟知的–只需花短短数天时间规划•运用这些技巧来达成一个受以下方面影响最小的估算:–被省略的活动–无理由的乐观–主观性–偏见–不熟悉的问题领域规划•要记得记录下你的估算!–要得到先前任务的数据,你必须着手开始将估算写下来。•在执行期间,将其作为帮助你监控及改进自身绩效的一个工具。执行80%的时间花在20%的工作上记录下实际花费的时间•处理许多个人估算问题的最有效方法。•关键是要有一项明确、不含糊的任务。•明确的任务让你能够区分缺陷与变化。你的时间都花在何处?•练习:在下一个用户故事(user-story)或任务中,请试着跟踪你的时间使用情况。观察一下你把时间都花在了何处。回顾我是如何做的?我是如何做的?•问以下问题:–你工作有多快?–你的估算与实际结果有多接近?–我是否忘了对有利于下次任务估算的某事项作出预测?对结果进行分析•有用的计算–速度•你工作有多快?–相对误差大小(MRE)•你的估算与实际结果有多接近?例子–Part3a,速度•速度是指单位时间完成的工作量–分数:7XP/3个日历日=2.3XP/日–工作量:9.5小时/3个日历日=3.2小时/日日期任务原始估算日历日总数总速度4/7/2008A3XP54/8/2008B2XP24/9/2008C5XP80.66XP/日例子–Part3b,相对误差大小(MRE)•MRE等于ABS(实际–预期)/实际–ABS(9.5–7)/9.5=0.26任务最佳预期最差实际MREA1B5C10D57109.526%更新未来预算•不要为了得到一个更好的结果数据,而在任务结束时,对原始预算进行篡改。•估算会随时间而变化,对之要有预期。–随着项目的进展,要求将被喜欢或全盘改变。•记住“不确定性圆锥体”总结•提高估算的准确性与精确性,是我们每个人的责任。–警惕不良个体估算做法–运用协作技巧–收集并分析数据–运用分析来改进未来估算总结•找到一种适合自己的方法。–(要确保该方法仍适用于你的项目)。¿问题?“对于由非定量方法得出、并且由管理人员基本凭直觉认可的估算,很难对其进行有力、可信的辩护。”FredBrooks参考•由ConstruxSoftware提供的10x软件工程学(SoftwareEngineering)课程()•SteveMcConnell所著的《软件估算》(SoftwareEstimation)•MountainGoatSoftware()
本文标题:编程任务估算的艺术
链接地址:https://www.777doc.com/doc-3320786 .html