继上篇内容《有关软件开发中的项目管理:关键性问题解答(一)》,咱们继续讲解没讲解完的项目管理问题。
瀑布式与敏捷项目管理之间存在着哪些显著的差异呢?
下面,我们将以更加详尽深入的视角来对比瀑布式与敏捷式项目中所涉及到的管理实践究竟有着怎样的差异。我们进行这项研究比较的初衷在于,这两种相对而言更为常见且广泛应用于各类项目的管理方法之间,其针对如何去有效地组织规划项目工作这个核心问题上,确实存有明显区别。而这种截然不同的组织模式,同时也不可避免地会对项目负责人(或者说在敏捷式管理中担任同样角色的人员)所扮演的角色以及应当承担的职责产生深远影响。
项目规划
在瀑布式开发模式中,如果我们未能深入理解自身正在打造何种产品以及为何要加以构建,那么便无法迈向下一步。正因为如此,制定一份细致入微的软件需求规范(Software Requirement Specification, SRS)成为了瀑布式项目的首要任务。通常来说,这份规范由业务分析师负责撰写。然而,若无业务分析师在场,项目经理亦可承担此重任。
相较之下,敏捷方法则赋予了更大的灵活性。在开发过程中,适时引入产品及流程改进乃是敏捷方法的核心所在。规划活动往往会提前一个冲刺周期展开。待办事项则在所谓的“冲刺零期”内得以创建。
在冲刺零阶段,团队将提出尽可能少的用户故事,以便将之转化为切实可行的产品,同时也可选择搭建开发基础设施。冲刺环节通常保持轻量化且高效率。
关于项目范围管理与预算问题
在瀑布式开发模式中,解决方案范围需在整个项目过程中保持恒定不变。变更请求将通过变更管理程序进行管理,并单独计算费用。相比之下,敏捷软件开发中的项目管理在范围管理方面提供了更为宽广的灵活性,但却难以准确评估范围变动对最终软件成本所产生的影响。这无疑会对项目预算策略产生影响。
在瀑布式开发模式中,预算是自上而下、受到严格控制的,并且建立在详实的业务案例之上。这种方法使得在需求被提炼并分析完毕后,能够得出较为精准的成本估算。然而,其主要不足之处在于,该方法在软件开发项目常常处于不稳定、不确定以及模糊不清的环境之中时,往往无法发挥应有的效用。
敏捷方法在管理软件开发项目成本方面具备应对变化的能力。这既是其优点,同时也是其复杂性的体现。敏捷预算与项目的架构及时间表紧密相连。此外,由于它同样遵循冲刺结构,因此团队更易于适应不断变化的状况,而无需对整个项目预算造成过大冲击。项目经理仅需在下一轮规划中对开支进行相应调整即可。
项目交付成果
借助敏捷路径,企业在每次迭代之后均能收获新的功能或其他可交付成果的增量,无论这些成果涉及技术愿景、工作特性抑或是最小可行性产品(Minimum Viable Product, MVP)。
反观经典的瀑布式开发模式,客户往往直至项目收官之际才能真正获得一套连贯、可行的解决方案。全面的测试活动也通常在开发过程的后期进行,这可能会对产品的上市时间产生不利影响。
项目文档
依据瀑布模型,在管理软件开发项目过程中,必须进行充分的、有记录的规划。项目要求须预先明确,每位团队成员皆应熟知这些要求。每位团队成员还应当明晰自身在项目中所扮演的角色及其应达到的预期。此类信息通常会被记录下来,并在项目团队内部进行分发。
在瀑布式团队的整个开发过程中,文档往往被频繁引用,以便于更加轻松地追踪项目进度。鉴于通常按照瀑布式管理的项目规模较大且复杂度较高,这或许是唯一可行的方法。文档将在每个阶段得到更新,以确保每位成员对项目进展拥有统一的认识,尽管瀑布模型强调的是顺序性。
虽然大量文档有助于降低瀑布式项目的潜在风险,但同时也削弱了敏捷项目对变化的适应力。因此,在敏捷项目中,编写较少的文档实属常态。即便需要编写文档,其内容也会力求简洁明了。
尽管存在一些普遍的误解,但实际上在敏捷方法论中并未存在任何阻碍团队创建所需文档的因素。事实上,某些文档对于项目的顺利推进而言,确实是不可或缺的。
项目经理具备哪些具体职责呢?
根据管理软件开发项目的方法,项目经理的职责也会有所不同。让我们看看 PM 或相应的敏捷 Agile 角色在项目的每个阶段具体做什么。
瀑布
项目经理是每个瀑布团队中最重要的角色。他们负责交付成果的质量和项目的按时完成。他们的主要职责包括监督项目活动和为团队成员分配任务。
现在让我们将 PM 的工作范围分为几个阶段。
规划 | 了解客户需求和需要-建立项目目标-确定利益相关者的期望-确定执行项目所需的资源 |
设计 | 识别和列出具体任务 - 创建项目工作流程和时间表 |
实施和测试 | 将具体任务委派给团队成员 - 跟踪项目进度 - 识别潜在障碍和瓶颈 - 向利益相关者报告进度 - 跟踪测试进度并监控解决方案质量 |
部署 | 向利益相关者展示已完成的项目-管理文书工作-评估项目 |
维护 | 建立维护期望 - 在规定的时间内监控维护目标的进展情况 |
在敏捷中
敏捷项目经理负责确定每个冲刺的待办事项的优先级,监控开发进度,并在团队内部以及团队与利益相关者之间建立有效的沟通。他们还监控项目每个阶段的风险,并确保开发过程遵循敏捷原则。
以下是项目经理在敏捷项目的每个阶段具体做的事情:
概念 | 与客户和产品所有者合作确定项目范围 - 概述未来解决方案的需求(通常以用户故事的形式) - 提出时间和成本估算 |
初始 | 绘制资源估算 - 组建开发团队 - 监控解决方案设计进度 - 收集利益相关者的意见并将这些意见纳入解决方案设计 |
迭代 | 管理积压工作 - 确定每次迭代中要实现的用户故事的优先级 - 监控项目进度 - 管理变更请求 - 从客户处获取持续反馈 - 监控风险和瓶颈 |
发布 | 监控交付成果的质量 - 确定并记录用户培训需求 - 获得客户接受交付成果 - 监督发布 |
维护 | 定义维护需求 - 确定维护请求的优先级 - 为最终用户提供额外培训 - 规划升级和附加功能 |
作为项目经理,您需要警觉并留意可能出现的哪些困局或误区呢?
成功管理软件开发项目的关键在于能够预防和避免风险。优秀的项目经理应注意的常见陷阱包括:
无法控制范围
尤其是在敏捷开发中,客户经常会要求增加功能,这往往会导致项目出错。因此,项目经理需要制定明确的变更管理程序,以防止范围蔓延。他们还需要确保利益相关者对变更对项目时间表和资源的影响达成共识。
不注重按时交货
开发具有严格上市时间要求的产品,例如需要在学年开始前发布的教育应用程序或必须在圣诞节销售前及时推出的零售应用程序,PM 需要在按时和确保高质量之间取得适当的平衡。
他们需要投入额外的精力来确定功能的优先顺序,并为每个功能的交付设定截止日期。还必须提前定义质量要求,以避免推出后出现问题。
未能建立有效的沟通
软件开发中有效的项目管理需要有效和透明的沟通。建立这样的沟通是项目经理的主要职责。他们需要让团队了解利益相关者的决定,并定期向利益相关者通报所有项目活动、瓶颈和挑战。
未能建立清晰的流程
遵循软件开发流程对团队成员来说可能是一种负担。不过,有必要建立一个针对项目具体情况的清晰工作流程。它将组织工作并明确预期。
依赖不熟悉的技术
项目经理需要确保工程团队在进行技术选择时专注于解决客户的业务问题。他们还需要验证所选技术栈是否符合工程最佳实践。
另一个与技术相关的陷阱是未能在产品开发的早期阶段规划可扩展性。因此,我们建议提前定义可扩展性要求以及其他非功能性要求。
未能提前考虑推出流程
在开发的早期阶段,部署过程经常被忽视,这会导致部署期间出现严重延迟。软件开发中健康的项目管理需要 PM 确保在开发过程的早期考虑部署和安装问题。
FAQ(日常问答)
1.在为我们的客户选择合适的项目管理模式时,您依赖哪些因素?
在我们决定选择何种项目管理方法时,其背后的考量因素繁多。其中最为关键的因素包括项目的规模、预算以及预期的上市时间等。
例如,当我们正致力于研发一款需要定期进行版本更新的产品,以便持续为终端用户提供价值,如游戏类应用程序时,我们往往会倾向于选择Scrum或者与之相似的项目管理方法。
然而,若我们所面临的项目是由政府部门委托开发的软件解决方案,那么这通常意味着预算是相对固定的。在此情况下,我们可能更加愿意选择类似于瀑布式的项目管理方法,以确保项目具有足够的可预测性。尽管如此,将整个开发过程划分为若干个较小且连续的迭代步骤也是相当常见的做法。因此,我们常常会采取一种融合了瀑布式的可预测性以及敏捷式的持续改进和快速交付优势的混合型项目管理方法。
2.还有其他因素影响项目管理方法的选择吗?
未来解决方案的应用领域、认证需求、客户参与流程的意愿以及许多其他因素也会影响项目。
3.作为项目经理,您的职责具体包括哪些方面?您在管理我们客户的项目时的主要目标是什么?
首先我们来看,理解并把控每个项目中的各类风险,其实质就是我们在进行良好的项目管理工作。在软件开发这个领域,由于其独特性,往往会出现各种各样的风险,例如从最初的需求设定不准确,再到可能的物资采购出现问题,甚至还包括了技术环境的不断更新与演化等等。在这样的大背景下,我们的项目管理者们所要承担的首要任务便是尽可能地降低这些风险对整个项目的负面影响,从而最大化地提升软件产品成功交付的概率。
其次,我们可以从另一个角度来审视项目管理这项工作,那就是它已经逐渐发展成为了一个能够将众多项目子系统(比如开发、测试以及部署等环节)有机地整合在一起的综合性工具。在这种情况下,我们的项目管理者们的主要职责就变成了如何以最小的风险代价,同时确保充分利用各种资源,来协调项目内部的各项流程,使得整个项目能够顺利推进。
4.由于敏捷团队的定位是自我管理,因此人们很容易认为项目即使没有专门的项目经理也可以完成。真的是这样吗?
若无专门的项目经理,项目管理职责便须由全体团队成员共同承担。尽管如此,项目经理仍需投入宝贵的时间来优先处理各项待办事项、进行资源采买、编制报告以及实施其他必要的管理工作。然而,在缺乏专业项目经理的情况下,上述任务有可能被分配给并不具备相关专业知识的人员。这样的安排无疑无法充分发挥人才的潜力与价值。
至此有关软件开发中的项目管理:关键性问题解答内容完结。
以上就是《有关软件开发中的项目管理:关键性问题解答(二)》的全部内容,喜欢的可以给猴哥点赞👍关注收藏,下期想了解什么知识和功能,可以在评论区留言,欢迎大家积极讨论交流!谢谢!