团队决策
通过停车场图总结进度

计划问题:对编程和PNR曲线

schings_questions.将努力转换为项目持续时间和团队规模是项目规划的重要组成部分。这是如何从项目经理到项目经理的改变,这是一个艺术,其他人的科学,以及许多与日常限制的案例。今天,我将专注于科学及其对编程的含义。

如果您的初始项目估计表明72人的努力,您如何最好地资源?

1人72个月?
72人1个月?
6人12个月?

直观地,我们知道,72个月的1人可能工作(提供他们拥有所有正确的技能),但通常业务希望尽快为项目的利益。 1个月的72人非常不可能工作,除非该项目简单且大规模平行,如在海滩上清洁油岩石。通常添加超出最佳水平的更多资源提供返回率递减。正如旧谚语所在, 你不能用九个女性一个月制作一个婴儿,(虽然尝试可能很有趣。)。还像弗雷德里克布鲁克斯在, 神话月份向已经迟到的项目添加资源将在以后使其成为“。因此,鉴于努力估计我们如何确定最佳团队规模和时间表,以便快速交付并保持成本下降?

在将团队成员添加到项目时,以线性方式提高成本,但项目时间轴不会以相应的线性方式减少。 Putnam Norden的研究发现,对于需要沟通和学习的项目(如软件项目),时间曲线的努力遵循瑞利分布。 Putnam确认这一弯曲在他的文章中应用于软件项目“宏观软件调整和估计问题的一般性解决问题”,SW工程的IEEE交易,7月1978年7月,曲线被称为Putnam Norden Rayleigh曲线或PNR人员配置曲线如下所示。

Pnr_1

弯曲的蓝线是PNR人员配置曲线,X轴显示时间,Y轴显示成本。当我们向左移动(缩短项目时间表)时,调整后的员工几个月曲线会导致陡峭和陡峭的表明成本增加,但在时间表中没有太大缩短。

曲线上有一些重要观点来理解。最佳交货时间(显示为曲线的最低成本点“到”)表示该项目可以传递的最低成本。然而,它不会因延迟投资回报,通货膨胀或正在进行的工作。大多数公司正在寻找低成本和短时间内的最佳折衷,如标称交货时间“TN”所示。

Barry Boehm对缩短项目时间表的尝试进行了一个有趣的研究;他检查了700多个项目,该项目试图在少于标称交货点TN的规范中交付代码。这些项目都没有成功地减少75%的名义交付点TN的时间表,他克里斯坦地区“不可能的地区“表示您不能超出此时的时间表。 (见谷仓Boehm“软件工程经济学“,Prentice Hall,1981),

当您接近不可能的区域时,线路的梯度变为垂直,添加资源增加了项目花费,但不会缩短时间表。弗雷德溪的观察后,我猜线路开始曲线回来,因此添加更多人不仅增加了成本,而且交货更长。我可以看到这将是这种情况,因为决定和通信变得更加复杂,额外的人实际上会减慢东西。

那么,你如何确定短时间内和低成本之间的最佳折衷(TN)? Barry Boehm在CoCoMo估算引擎中提供以下公式:

tn = f *努力^ 0.33

(努力扎根乘以缩放因子)

在哪里 F 是项目类型变化的因素:
CoCoMo II默认值  3.67
Web开发3.10
电子商务开发。 3.20
军事发展3.80.
嵌入式开发。  4.00

所以,如果我们的例子72人数月是一个Web应用程序,这将是:

Tn  = 3.1 * 72^0.33
     = 12.9 months

表示72人的月份Web开发项目将在5至6人的团队中最佳地实施。 CoCoMo模型中使用的实际公式通过各种项目和环境缩放因素进行精制,但在心脏是该调度公式。

敏捷角度
通过分析1970年代和1980年代的数千个实际项目和实验的统计数据来源的这些观测和计算的基础,但他们今天仍然适用吗? Cocoomo模型已更新到Cocoomo II,以解决基于组件的开发,婴儿床和重复使用的现代发展,但我想知道项目动态现在是否从根本上不同?

虽然Craig Larman走回1950年的敏捷实践“敏捷和迭代的发展:一个军官指南“我认为他们的使用只有在过去几年中只能通过群众采用。 考虑以下更改:

•来自单通瀑布的开关快速,迭代开发
•在整个项目中增加业务参与,导致更短的返工
•通过配对编程,共同位置,每日Scrum等更好地通信
•连续集成工具,自动单元测试,IDE,重构工具等

我们的流程和工具现在很擅长,认为我们可以击败昨天的生产力数据并突破任何一天的人员配置曲线模型。但是我提醒您,软件开发更多地有关传播和决策而不是流程和工具。在我的帖子中“不要(只是)喝kool-aid“我们看到人们如何影响项目表现 十次 比工艺或工具因素更大。因此,如果PNR曲线是预测需要学习和沟通的工人的成本/时间比我怀疑他们仍然适用的良好方法。很容易在流程和技术开发的炒作中陷入困境,但通信仍然是游戏的名称。

那么我们还应该使用PNR曲线公式来预测项目大小吗?我建议我们作为通信仍然是主要驱动程序,但提议可能需要缩放因子(f)可能需要调整,因为改进的工具。也许Web开发项目现在应该从f = 3.1滴到f = 3.0,但这只是我的猜想,我没有硬数据来支持它(也许是人们在 IFPug. do).

一对编程怎么样?在团队中使用对时,我们可以:
1)继续原样,使用模型来确定最佳团队规模,然后鼓励配对提高效率。
2)将一对作为一个超级有效的人,所以计算成对而不是个人,并相应地增加团队尺寸。

第二个选项似乎是敏捷的表现力,我们努力减少小组来减少沟通渠道,所以我不相信这个想法。我很想听到人们对敏捷人员配置曲线的看法。因此,许多问题比这篇文章中的答案更多,如果您对此事有任何研究或想法,请告诉我。

注释

此项对应的评论被关闭。