问题标签 [estimation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
estimation - 在不花费大量时间的情况下进行估算的最佳方法是什么?
背景
我的团队目前正处于发布重大重写的“错误修复和抛光”阶段。我们仍然有大量的错误需要修复,计划针对几个里程碑。我们被要求估计需要多少工程工作来修复每个里程碑的错误。
对于之前的里程碑,我们遵循以下流程:
- 将错误分配给最了解该代码区域的人,并且很可能是修复错误的人。
- 让每个人检查分配给他们的错误,并估计他们认为修复错误需要多长时间,以小时为单位。如果一个 bug 看起来可能需要一两天以上的时间来修复,他们会将 bug 分解为可能的子任务,并对其进行估计。
- 总计每个里程碑分配给每个人的工作量,如果人们的工作量大不相同,请尝试平衡事情。
- 将每个里程碑的每个人的总数乘以“填充因子”,以解释过于乐观的估计(我们一直使用 1.5)。
- 取给定版本的团队成员的最大总数,并确定团队关闭现有错误所需的时间。
- 估计我们在达到特定里程碑所需的时间内预计会创建的错误数量,并估计我们认为关闭这些错误中的每一个平均需要多长时间。将此添加到关闭每个版本的现有错误的时间。这是我们所需工作量的最终数量,作为我们确定交付该里程碑的日期交付。
这是相当准确的(我们在之前的三个里程碑中几乎处于同一位置),但它相当耗时。
当前问题
我们被要求为即将到来的里程碑估计工程时间,但要求不要使用上述过程,因为它太耗时。相反,作为团队的技术负责人,我被要求提供不太确定的估计值,以及确定的时间间隔(即 1 个月,正负一周)。
我的主要估算经验是我上面描述的方法的一些变化(来自多年的自由职业背景)。我发现当我在大型任务中“从臀部射击”时,我往往会走得很远。我怀疑在估计修复我不太了解的代码区域中的错误需要多长时间时,情况会更糟。
您发现哪些技巧、窍门或技术可以成功地进行快速估算,而无需将事情分解成细粒度的任务并进行估算?
不能选择的事情:
- 没有给出估计 - 我试过这个,它没有飞:)
- 选择一个非常宽的数字和置信区间 - 我已经考虑过这一点,但我认为它也不会飞。
- 基于证据的调度 - 我们使用的是 JIRA,它没有任何为其编写的基于证据的调度工具,我们目前无法迁移到 FogBugz(顺便说一句,如果有人去编写一个基于证据的调度插件JIRA,我们很乐意为此付费)。
sitemap - 网站的线框图需要什么?
我将与一些程序员和定制软件公司会面,为我参与的公司创建网站获得投标。我的问题是:我应该为程序员准备什么,以便他们可以给我一个准确的报价,时间表等网站的开发?我清楚地了解我希望该网站如何工作以及我希望包含的功能。
estimation - 当我不了解网站的所有功能时,如何估计网站构建(刷新)?
我知道这里有几个估算问题,并且我已经阅读了其中的大部分问题,但这个问题略有不同。如果您正在对网站进行刷新,它可能包括可用性增强,从而增加了页面制作和开发的时间。我们永远不会看着一个网站,然后对自己说现在的样子就是未来的样子。如果是这样,那么我们的客户就不会寻找我们的专业知识了。在回复 RFP 或创建正式的工作说明之前,是否总是需要进行团队头脑风暴?如果那些进行头脑风暴的人没有做最后的工作怎么办?我们只能在一定程度上盘点当前站点,我开始认为我们应该只对我们所知道的进行估计,让潜在客户告诉我们我们在哪里
language-agnostic - 如何评估哈希冲突概率?
我正在为搜索系统开发一个后端应用程序。搜索系统将文件复制到一个临时目录并给它们随机命名。然后它将临时文件的名称传递给我的应用程序。我的应用程序必须在有限的时间内处理每个文件,否则它会被关闭——这是一种类似看门狗的安全措施。处理文件可能需要很长时间,因此我需要设计能够处理这种情况的应用程序。如果我的应用程序在下次搜索系统想要索引同一个文件时关闭,它可能会给它一个不同的临时名称。
显而易见的解决方案是在搜索系统和后端之间提供一个中间层。它将请求排队到后端并等待结果到达。如果请求在中间层超时 - 没问题,后端将继续工作,只有中间层重新启动,当搜索系统稍后重复请求时,它可以从后端检索结果。
问题是如何识别文件。他们的名字随机变化。我打算使用像 MD5 这样的散列函数来散列文件内容。我很清楚生日悖论,并使用链接文章中的估计来计算概率。如果我假设我的文件不超过 100 000 个,则两个文件具有相同 MD5(128 位)的概率约为 1,47x10 -29。
我应该关心这种冲突概率还是只是假设相等的哈希值意味着相等的文件内容?
estimation - 基于用例点的工作量估计
截至目前,我已经根据经验和最近使用功能点进行了工作量估算。
我现在正在探索 UCP,请阅读这篇文章http://www.codeproject.com/KB/architecture/usecasep.aspx。然后,我检查了基于用例点 (UCP) 的其他各种文章。我无法弄清楚它是如何工作的以及它是否正确。
例如,我有一个登录功能,用户提供用户名和密码,然后我检查数据库中的表以允许或拒绝登录。我将用户参与者和登录定义为用例。
根据 UCP,我将登录用例分类为简单,将 GUI 界面分类为复杂。根据 UCP 系数表,我得到 5 和 3,因此总数为 15。在应用技术因素和环境因素调整后,它变为 7。如果我将生产力因素设为 20,那么我将获得 140 小时。但我知道它最多需要 30 小时以及文档和测试工作。
我在这里定义用例时做错了吗?UCP 说如果界面是 GUI,那么它就很复杂,但这里的 gui 很简单,所以我应该降级这个因素吗?简单的因素也是 5,我应该将另一个级别定义为非常简单吗?但是我不是在这里把事情复杂化了吗?
project-management - 在包含不熟悉概念的项目中估算时间?
当对一个项目进行时间估算时,该项目包括您没有经验的领域的工作,您如何估算?
在大多数情况下,当项目的领域很熟悉时,很难做出正确的估计。
在这些情况下,您使用了哪些方法?他们工作得如何?
estimation - 您如何估计项目的项目工作量/进度?
可能的重复:
如何创建准确的小时估算?
处理糟糕的估计
有许多估计技术。从Cocomo和Function Points之类的正式点,到Story/Feature points等不太正式的点,再到“掷骰子”等更不正式的点。
您认为哪种方法最有用或最有效?为什么?
如果估算方法给出的结果与项目经理、营销人员或尖头发的老板所期望的不完全一样,你会怎么做?
project-management - 网络框架工作量估算
如何将功能点中的工作量估计转换为特定的 Web 框架,如 django?还是工作量估计仅取决于 Web 框架的架构?任何提示或指南都会有所帮助。
编辑你是否会限制思考说,这是我的框架,比如 django,让我考虑将我的需求转换为模型和模板。
或者我可以笼统地说,这些是我的要求,现在这些是我的功能点(任何通用估计技术),我可以将其转换为 django 框架的约束并进行努力估计。
ruby-on-rails - 如何估算 Rails 应用程序开发成本?
我有一个想要构建的应用程序。在大多数情况下,我知道我想要什么。而且,我对它应该如何工作和外观有很好的草图。
我想了解如何估算实施应用程序的成本。我想在接触开发人员之前这样做,这样我就可以确保自己有能力为开发提供资金,而不会浪费任何人的时间。
我可以想象,这不是一个容易回答的问题,也许在这里根本无法回答。但是,我希望有一些大致的数字和方法来估算成本。
另外,如果有人对从想法到实施有任何建议的步骤,我很想听听他们的意见。谢谢!
澄清:我不是在寻找一个美元金额的答案。我正在寻找有关如何提出(非常粗略)数字的指导。最终,我将使用这个数字来确定我是否可以轻松地为个人发展提供资金。同样,这个问题可能有缺陷,但我不禁认为有人可能有一个精明的答案。也许是基于他们自己的项目或好的建议的成本/时间数字。只是不要告诉我它会花费一百万,因为罗伯特已经有了。:)
language-agnostic - 如何处理霍夫施塔特定律?
在估算任务时,如何摆脱霍夫施塔特定律的束缚?