9.0 瀑布与周期性项目管理 (第 2 部分) – 估计时间和资源

瀑布技术分为几个阶段。 项目负责人必须包括项目计划中每一步所需的时间(因此需要资金)的估计数。 我们以前已经确定,任何项目的时间估计本质上都是有问题的,更严重的是,当它们必须在项目的早期确定时。 对于软件项目来说,这是不可行的。 考虑在定义阶段编制定性可接受的能力清单的可能性。 原则上,这应使项目团队能够对开发每个功能所需的时间进行现实估计。 然而,在现实中,有太多的不确定性提供一个公平的近似:

然而,在现实中,有太多的不确定性提供一个公平的近似:

  • 通常,在开发一个功能后,发现客户端不需要它。 因此,开发此功能所花费的时间可能被视为徒劳无功。
  • 在整个项目过程中,需求可能会发生变化。
  • 应以高成本或低成本提供该功能? 有许多实现和实现技术。
  • 如何在技术上设计功能? 设计极大地影响了创建它所需的时间。
  • 高标准的功能必须在多大程度上发挥作用? 例如,网络应用程序应随时完全访问,还是应允许它每年关闭几个小时?
  • 检测和纠正软件问题所需的时间因分钟而异。
  • 新软件安装和集成客户当前系统需要多长时间?
  • 缺乏有关潜在解决方案的信息进一步影响时间估计。 此外,估计获得必要专业知识所需的时间是具有挑战性的。

上面的列表表明,各种变量可能会影响开发新软件所需的时间长度。 估计项目开始时开发功能所需的时间通常为四倍太低或四倍过高。 这意味着所需时间可能比错误估计时间少四倍或四倍。 随着项目的发展,这些估计变得更加精确。 完成功能设计后,保证金降低到 25% 太多或太少。 只有在开发此功能后,才有可能以高度的信心给出估计值。

软件风险 #

项目管理软件 永远不会完全无差错。 即使对于广泛使用的知名节目(例如 Word、Excel、浏览器、OS X、PHP 和 Flash),互联网也有已知缺陷列表。 定期在市场上提供修复软件错误的新版本。 客户有时要求软件无差错。 然而,在现实中,这样的目标将使完成一个软件不可行。 此外,程序中通常不固有的软件故障。

闪存用于创建教学游戏。 客户同意将游戏作为文件,并将其安装在自己的服务器上。 在项目过程中,客户要求在游戏中添加高分功能,以提高玩家的竞争力。 这将需要一些 PHP 脚本代码。 游戏开发人员开发并测试了运行 Linux 的服务器上的脚本代码。 这是成功的。 客户端收到了游戏和脚本代码。 但是,客户端使用了 Windows 服务器,并且由于某些原因,脚本停止正常工作。 没有保留最佳成绩。 程序员最终需要一周时间来解决这个问题。 事实证明,PHP 和 Windows 并不总是一起运行良好。 整个脚本没有错误! 他能够通过黑客来使它发挥作用, 每个人都很高兴 — — 但是谁应该为额外的一周劳动买单呢?

另一个软件开发项目还包括创建教学应用程序。 问题是,该软件对开发人员非常有效,但对客户不利。 在用尽了所有其他可能性之后,程序员决定拜访客户。 事实证明,客户从20世纪90年代初开始经营奔腾III机器。 计算机的缓慢是导致软件性能差的原因。 此外,程序员在奔腾III上试用了该软件,效果良好。 进一步检查显示,由于病毒和间谍软件感染,客户的 PC 运行缓慢。

管理项目开发中的不确定性 #

上述实例所显示的不确定性使 制定项目计划的过程复杂化。 此外,它使双方之间的谈判复杂化。 某人必须承担与必须执行的额外劳动相关的风险。 如果按小时付款,客户将承担所有风险。 当商定固定费用时(与赠款资助项目一样),软件开发人员将承担风险。 当涉及两个以上人员时,情况会变得更加复杂。 在这种情况下,谁应承担项目额外工作时间的费用?

关于谁应对延误负责的争议经常出现。 通常,责任人很难确定。 可以想象,有关各方都没有受到责备,因为”拖延”是由于对所需小时数的初步估计不正确造成的。 项目工时过长和谁应该付款是信息技术行业争论的常见原因。