项目工作范围从可定义的工作到高不确定性的工作。可定义的工作项目具有明确的程序,这些程序在过去的类似项目中被证明是成功的。设计完成后生产汽车、电器或住宅就是可定义工作的例子。所涉及的生产领域和过程通常很好地理解,执行不确定性和风险通常很低。
新的设计、解决问题和未完成的工作都是探索性的。它需要主题专家协作并解决问题以创建解决方案。遇到高不确定性工作的人包括软件系统工程师、产品设计师、医生、教师、律师和许多解决问题的工程师。随着更多可定义的工作被自动化,项目团队将承担更多高不确定性的工作项目,这些项目需要本实践指南中描述的技术。
敏捷和瀑布
传统的项目管理(瀑布式的,也称为计划驱动的)方法是线性的,即过程的所有阶段都按顺序发生。这种方法依赖于可预测的工具和可预测的经验。每个项目都遵循相同的生命周期,包括可行性、计划、设计、构建、测试、生产、支持等阶段,如下图所示。
整个项目是预先计划的,没有任何变化需求的范围,例如PMI的PMBOK,和PRINCE2都是严格且高度受控的。它们为项目规划列出了从开始到结束的不同阶段,并假设您预先就有了所有的需求和信息。
敏捷被认为是一种更现代的软件开发策略,因为它的设计主要是为了弥补更具预测性的瀑布方法的一些不足。它是一种软件开发模型,鼓励在项目的整个软件开发生命周期中进行开发和测试的连续迭代。
当传统系统专注于前期计划时,成本、范围和时间等因素被赋予了重要性,而敏捷方法则突出了团队合作、客户协作和灵活性。随着需求规格说明的变化,敏捷团队可以保持灵活性,并能够响应这些变化。然而,这并不一定意味着适应性规划策略总是比预测性规划策略更好。让我们更详细地比较这两种项目开发策略。
瀑布用于预测项目计划
瀑布项目管理是一种更具有预测性的计划策略,它利用特定的步骤和里程碑来控制过程。当遇到重大的项目规格变更或客户修改时,预测计划策略可能会失败,但它也更有可能产生预期的结果。敏捷方法更容易受到项目发展和范围渐变的影响,而瀑布策略将创建更一致的最终产品。
瀑布式方法是一个连续的过程,它被分为几个阶段。开发团队需要在进行下一个开发阶段之前完成一个阶段。通常,在瀑布式开发过程中有5个阶段,如下所示:
- 分析
- 设计
- 实现
- 测试
- 维护
敏捷用户适应项目计划
高不确定性项目具有高变化率、复杂性和风险。对于旨在预先确定大量需求并通过变更请求过程控制变更的传统预测方法来说,这些特征可能会带来问题。相反,创建敏捷方法是为了在短周期内探索可行性,并基于评估和反馈快速适应。
敏捷拒绝使用这些传统的项目管理方法,因为它们繁琐、限制性强,而且不适合新时代的速度。敏捷项目管理是迭代的,其目标是在软件开发项目的每次迭代中不断整合用户反馈和持续的发布,如上图所示。每个任务输出都是你要卖给利益相关者的产品。团队和工作结构是围绕创建对客户或客户直接有用的东西来设计的。
传统和敏捷之间的区别
下表总结了Scrum和传统项目管理模型之间的许多差异。
类别传统敏捷开发模型传统迭代关注点流程人管理控制促进客户参与需求收集和交付阶段现场并持续参与开发在团队中独立工作合作的或成对的技术任何主要是面向对象的产品特性全部都包括最重要的优先测试开发周期结束迭代和/或驱动代码文档通过只在需要时
项目的成本变化
传统上,软件项目应该避免变更,因为在游戏后期会产生很高的成本,而敏捷软件开发则明白变更是不可避免的,投资于详细的计划是不实际的。这一点在《敏捷宣言》的四个价值观之一中得到了明确的表达:
“应对变化胜过遵循计划”
敏捷挑战了这个概念,并相信变化的成本可以相对平坦,如下图所示:
传统与敏捷——Standish Survey的数据
根据斯坦迪什集团2011年的混沌(CHAOS)宣言,敏捷项目比瀑布项目要成功三倍。下图显示了2002年至2012年执行的项目的具体研究结果: