什么时候将功能视为"完成"?
作为软件开发人员,我们创建了很多代码。我们生成的许多代码都可以用于新功能或者对现有功能的增强。在这种情况下,我们如何知道何时完成此功能?
在功能范围内完成意味着什么?例如,对于公司A而言,这可能意味着许多不同的事情,例如,
- 满足客户要求(这本身就是棘手的)
- 没有已知的错误
- 书面文件
- 等等。
- 等等。
为了更好地了解所做的工作对不同的开发人员和团队意味着什么,请列出最多五个(但不超过10个)项目。此列表可能是我们作为开发人员或者团队可能要经历的事情,一旦所有项目都被选中,该功能即被视为完成。
更新
这些是很好的答案。我试图找出最佳答案,因为我猜这个问题有些主观。我想我还在寻找更完整的图片。
解决方案
当用户满意时。
客户/用户在测试后退出UAT(用户接受测试)时。那是我们的官方量尺。
当然,这没有任何意义,因为几周后总是要求提供该功能的2.0版,但这比我们的功能更多。
编辑如果我们想对其进行真正的详细介绍,请按以下步骤进行:
- 要求由系统分析师和客户批准
- 设计经首席程序员批准
- 代码审查得到同行程序员的认可
- 质量检查部门将代码标记为已在单元测试中测试过。
- UAT由客户亲自测试后签署。
- 质量检查部门将代码标记为已在系统测试中测试过。
- 代码已发布。
何时发货。
当没有什么可以离开它的时候了。
当它解决问题时,它是可以预见的。这带来了适当的测试,文档编制,可用性等方面的负担,但负担不太多,足以执行所需的工作。
当里面有叉子时。
- 代码符合书面规范
- 代码通过代码审查
- 代码已通过单元测试和集成测试
- 代码通过质量检查
- 所有利益相关者都签署了带有代码的程序包
-亚当
与功能相关的所有测试通过后,功能就完成了。当需求改变时,添加更多的测试和代码,直到它们也通过为止。
我认为这取决于看它的人。开发人员自然希望将代码提升到第n级,而客户将对其有一个愿景。
所以,
- 客户,当他们停止要求更改时。
- 开发人员,从来没有:)
如果意思是"完成",意思是"我们将不再需要再次触摸它",那么唯一的答案是:当系统过时时;-)
如果意思是"何时准备好发货",那么大概是在所有商定的单元测试通过之后,当然要假设采用TDD / XP / Agile方法。
对我们来说,一项功能已经完成,这意味着我们可以在满足两个条件时将其发布:
- 一项功能通过了我们在发布之初编写的所有单元测试和手动测试。这是由质量检查人员或者没有质量检查人员的开发人员确定的。
- 对功能进行出色的变更请求/错误修复所提供的价值少于完成这些变更所需要的资源(时间)。这由产品负责人确定。
简单的答案:当它满足客户(或者我们要为其实现功能的人员)的要求时。
答案不是那么简单:当满足人们/客户期望的所有内在要求时:隐藏的质量要求,可扩展性,文档,稳定性,易用性等。
令人厌恶的,政治上不正确的,但务实的答案:在功能的演变过程中(至少)有一个关键点。
- 在此之前释放功能,由于客户将不接受该功能,我们会迷失方向。修复(在时间,材料,声誉方面)的成本要比"完成"它所需的成本更高。
- 在此之后释放功能,我们会因机会成本而损失。通过将注意力集中在其他事情上,我们将获得更多收益。
该功能在达到此临界点时就完成了。