有关软件开发中的项目管理:关键性问题解答(二)

news2024/9/26 1:21:28

继上篇内容《有关软件开发中的项目管理:关键性问题解答(一)》,咱们继续讲解没讲解完的项目管理问题。

瀑布式与敏捷项目管理之间存在着哪些显著的差异呢?

下面,我们将以更加详尽深入的视角来对比瀑布式与敏捷式项目中所涉及到的管理实践究竟有着怎样的差异。我们进行这项研究比较的初衷在于,这两种相对而言更为常见且广泛应用于各类项目的管理方法之间,其针对如何去有效地组织规划项目工作这个核心问题上,确实存有明显区别。而这种截然不同的组织模式,同时也不可避免地会对项目负责人(或者说在敏捷式管理中担任同样角色的人员)所扮演的角色以及应当承担的职责产生深远影响。

项目规划

在瀑布式开发模式中,如果我们未能深入理解自身正在打造何种产品以及为何要加以构建,那么便无法迈向下一步。正因为如此,制定一份细致入微的软件需求规范(Software Requirement Specification, SRS)成为了瀑布式项目的首要任务。通常来说,这份规范由业务分析师负责撰写。然而,若无业务分析师在场,项目经理亦可承担此重任。

相较之下,敏捷方法则赋予了更大的灵活性。在开发过程中,适时引入产品及流程改进乃是敏捷方法的核心所在。规划活动往往会提前一个冲刺周期展开。待办事项则在所谓的“冲刺零期”内得以创建。

在冲刺零阶段,团队将提出尽可能少的用户故事,以便将之转化为切实可行的产品,同时也可选择搭建开发基础设施。冲刺环节通常保持轻量化且高效率。

关于项目范围管理与预算问题

在瀑布式开发模式中,解决方案范围需在整个项目过程中保持恒定不变。变更请求将通过变更管理程序进行管理,并单独计算费用。相比之下,敏捷软件开发中的项目管理在范围管理方面提供了更为宽广的灵活性,但却难以准确评估范围变动对最终软件成本所产生的影响。这无疑会对项目预算策略产生影响。

在瀑布式开发模式中,预算是自上而下、受到严格控制的,并且建立在详实的业务案例之上。这种方法使得在需求被提炼并分析完毕后,能够得出较为精准的成本估算。然而,其主要不足之处在于,该方法在软件开发项目常常处于不稳定、不确定以及模糊不清的环境之中时,往往无法发挥应有的效用。

敏捷方法在管理软件开发项目成本方面具备应对变化的能力。这既是其优点,同时也是其复杂性的体现。敏捷预算与项目的架构及时间表紧密相连。此外,由于它同样遵循冲刺结构,因此团队更易于适应不断变化的状况,而无需对整个项目预算造成过大冲击。项目经理仅需在下一轮规划中对开支进行相应调整即可。

项目交付成果

借助敏捷路径,企业在每次迭代之后均能收获新的功能或其他可交付成果的增量,无论这些成果涉及技术愿景、工作特性抑或是最小可行性产品(Minimum Viable Product, MVP)。

反观经典的瀑布式开发模式,客户往往直至项目收官之际才能真正获得一套连贯、可行的解决方案。全面的测试活动也通常在开发过程的后期进行,这可能会对产品的上市时间产生不利影响。

项目文档

依据瀑布模型,在管理软件开发项目过程中,必须进行充分的、有记录的规划。项目要求须预先明确,每位团队成员皆应熟知这些要求。每位团队成员还应当明晰自身在项目中所扮演的角色及其应达到的预期。此类信息通常会被记录下来,并在项目团队内部进行分发。

在瀑布式团队的整个开发过程中,文档往往被频繁引用,以便于更加轻松地追踪项目进度。鉴于通常按照瀑布式管理的项目规模较大且复杂度较高,这或许是唯一可行的方法。文档将在每个阶段得到更新,以确保每位成员对项目进展拥有统一的认识,尽管瀑布模型强调的是顺序性。

虽然大量文档有助于降低瀑布式项目的潜在风险,但同时也削弱了敏捷项目对变化的适应力。因此,在敏捷项目中,编写较少的文档实属常态。即便需要编写文档,其内容也会力求简洁明了。

尽管存在一些普遍的误解,但实际上在敏捷方法论中并未存在任何阻碍团队创建所需文档的因素。事实上,某些文档对于项目的顺利推进而言,确实是不可或缺的。

项目经理具备哪些具体职责呢?

根据管理软件开发项目的方法,项目经理的职责也会有所不同。让我们看看 PM 或相应的敏捷 Agile 角色在项目的每个阶段具体做什么。

瀑布

项目经理是每个瀑布团队中最重要的角色。他们负责交付成果的质量和项目的按时完成。他们的主要职责包括监督项目活动和为团队成员分配任务。

现在让我们将 PM 的工作范围分为几个阶段。

规划了解客户需求和需要-建立项目目标-确定利益相关者的期望-确定执行项目所需的资源
设计识别和列出具体任务 - 创建项目工作流程和时间表
实施和测试将具体任务委派给团队成员 - 跟踪项目进度 - 识别潜在障碍和瓶颈 - 向利益相关者报告进度 - 跟踪测试进度并监控解决方案质量
部署向利益相关者展示已完成的项目-管理文书工作-评估项目
维护建立维护期望 - 在规定的时间内监控维护目标的进展情况

在敏捷中

敏捷项目经理负责确定每个冲刺的待办事项的优先级,监控开发进度,并在团队内部以及团队与利益相关者之间建立有效的沟通。他们还监控项目每个阶段的风险,并确保开发过程遵循敏捷原则。

以下是项目经理在敏捷项目的每个阶段具体做的事情:

概念与客户和产品所有者合作确定项目范围 - 概述未来解决方案的需求(通常以用户故事的形式) - 提出时间和成本估算
初始绘制资源估算 - 组建开发团队 - 监控解决方案设计进度 - 收集利益相关者的意见并将这些意见纳入解决方案设计
迭代管理积压工作 - 确定每次迭代中要实现的用户故事的优先级 - 监控项目进度 - 管理变更请求 - 从客户处获取持续反馈 - 监控风险和瓶颈
发布监控交付成果的质量 - 确定并记录用户培训需求 - 获得客户接受交付成果 - 监督发布
维护定义维护需求 - 确定维护请求的优先级 - 为最终用户提供额外培训 - 规划升级和附加功能

作为项目经理,您需要警觉并留意可能出现的哪些困局或误区呢?

成功管理软件开发项目的关键在于能够预防和避免风险。优秀的项目经理应注意的常见陷阱包括:

无法控制范围

尤其是在敏捷开发中,客户经常会要求增加功能,这往往会导致项目出错。因此,项目经理需要制定明确的变更管理程序,以防止范围蔓延。他们还需要确保利益相关者对变更对项目时间表和资源的影响达成共识。

不注重按时交货

开发具有严格上市时间要求的产品,例如需要在学年开始前发布的教育应用程序或必须在圣诞节销售前及时推出的零售应用程序,PM 需要在按时和确保高质量之间取得适当的平衡。

他们需要投入额外的精力来确定功能的优先顺序,并为每个功能的交付设定截止日期。还必须提前定义质量要求,以避免推出后出现问题。

未能建立有效的沟通

软件开发中有效的项目管理需要有效和透明的沟通。建立这样的沟通是项目经理的主要职责。他们需要让团队了解利益相关者的决定,并定期向利益相关者通报所有项目活动、瓶颈和挑战。

未能建立清晰的流程

遵循软件开发流程对团队成员来说可能是一种负担。不过,有必要建立一个针对项目具体情况的清晰工作流程。它将组织工作并明确预期。

依赖不熟悉的技术

项目经理需要确保工程团队在进行技术选择时专注于解决客户的业务问题。他们还需要验证所选技术栈是否符合工程最佳实践。

另一个与技术相关的陷阱是未能在产品开发的早期阶段规划可扩展性。因此,我们建议提前定义可扩展性要求以及其他非功能性要求。

未能提前考虑推出流程

在开发的早期阶段,部署过程经常被忽视,这会导致部署期间出现严重延迟。软件开发中健康的项目管理需要 PM 确保在开发过程的早期考虑部署和安装问题。

FAQ(日常问答)

1.在为我们的客户选择合适的项目管理模式时,您依赖哪些因素?

在我们决定选择何种项目管理方法时,其背后的考量因素繁多。其中最为关键的因素包括项目的规模、预算以及预期的上市时间等。

例如,当我们正致力于研发一款需要定期进行版本更新的产品,以便持续为终端用户提供价值,如游戏类应用程序时,我们往往会倾向于选择Scrum或者与之相似的项目管理方法。

然而,若我们所面临的项目是由政府部门委托开发的软件解决方案,那么这通常意味着预算是相对固定的。在此情况下,我们可能更加愿意选择类似于瀑布式的项目管理方法,以确保项目具有足够的可预测性。尽管如此,将整个开发过程划分为若干个较小且连续的迭代步骤也是相当常见的做法。因此,我们常常会采取一种融合了瀑布式的可预测性以及敏捷式的持续改进和快速交付优势的混合型项目管理方法。

2.还有其他因素影响项目管理方法的选择吗?

未来解决方案的应用领域、认证需求、客户参与流程的意愿以及许多其他因素也会影响项目。

3.作为项目经理,您的职责具体包括哪些方面?您在管理我们客户的项目时的主要目标是什么?

首先我们来看,理解并把控每个项目中的各类风险,其实质就是我们在进行良好的项目管理工作。在软件开发这个领域,由于其独特性,往往会出现各种各样的风险,例如从最初的需求设定不准确,再到可能的物资采购出现问题,甚至还包括了技术环境的不断更新与演化等等。在这样的大背景下,我们的项目管理者们所要承担的首要任务便是尽可能地降低这些风险对整个项目的负面影响,从而最大化地提升软件产品成功交付的概率。

其次,我们可以从另一个角度来审视项目管理这项工作,那就是它已经逐渐发展成为了一个能够将众多项目子系统(比如开发、测试以及部署等环节)有机地整合在一起的综合性工具。在这种情况下,我们的项目管理者们的主要职责就变成了如何以最小的风险代价,同时确保充分利用各种资源,来协调项目内部的各项流程,使得整个项目能够顺利推进。

4.由于敏捷团队的定位是自我管理,因此人们很容易认为项目即使没有专门的项目经理也可以完成。真的是这样吗?

若无专门的项目经理,项目管理职责便须由全体团队成员共同承担。尽管如此,项目经理仍需投入宝贵的时间来优先处理各项待办事项、进行资源采买、编制报告以及实施其他必要的管理工作。然而,在缺乏专业项目经理的情况下,上述任务有可能被分配给并不具备相关专业知识的人员。这样的安排无疑无法充分发挥人才的潜力与价值。

至此有关软件开发中的项目管理:关键性问题解答内容完结。


以上就是《有关软件开发中的项目管理:关键性问题解答(二)》的全部内容,喜欢的可以给猴哥点赞👍关注收藏,下期想了解什么知识和功能,可以在评论区留言,欢迎大家积极讨论交流!谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XSS游戏

目录 XSS游戏-WarmupsMa Spaghet!JefffUgandan KnucklesRicardo MilosAh Thats HawtLigmaMafiaOk, BoomerWW3 XSS游戏-Warmups Ma Spaghet! 1. 尝试注入&#xff0c;输入aaaaaaaa 2. 显示在<h2>标签内3. 输入标签&#xff0c;添加onmouseover属性值为alert(1337)&…

cloudcompare制作点云分割数据集

本文使用一个植物的数据集&#xff0c;进行标注从而能用于深度学习点云目标检测和分割任务 论文出处 Soybean-MVS: Annotated Three-Dimensional Model Dataset of Whole Growth Period Soybeans for 3D Plant Organ Segmentation 其中主要解决问题 如何使用网格mesh和点云进行…

番茄插件(Visual Assist)运行安装无反应的问题

1、运行安装无反应 直接双击运行没有反应&#xff0c;右键点击“以管理员方式运行”也没有反应。 &#xff08;只是蓝水的小圆圈转了一下后&#xff0c;就没有反应了&#xff09; 2、 则必须对程序的兼容性进行设置 3、安装程序就可以运行了 如下图&#xff1a;

【机器学习】CNN的基本架构模块

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 CNN的基本架构模块1. 引言2. 卷积层2.1 基本原理2.2 卷积层的特性2.3 卷积层的超…

科三预约考试,为什么我场次排名在前,后面排名又变了

什么时候知道是否预约成功 系统确认考试预约结果的时间一般为考试前5-7个工作日&#xff0c;同时根据预约人数系统会自行判断提前1-2日或延长1-2日公示预约结果&#xff0c;学员至少考试前三天会收到预约成功短信通知。 如果预约失败了怎么办&#xff1f;会计入考试次数吗&am…

免费下载:1982-2020年全国逐月土壤湿度数据集(附下载方法)

欧洲空间局&#xff08;英文&#xff1a;European Space Agency&#xff09;&#xff0c;简称欧空局或ESA&#xff0c;成立于1975年&#xff0c;是一个致力于探索太空的政府间组织&#xff0c;拥有22个成员国&#xff0c;总部设在法国巴黎。欧洲航天局的太空飞行计划包括载人航…

【轻松拿捏】Java中ArrayList 和 LinkedList 的区别是什么?

ArrayList 和 LinkedList 的区别是什么&#xff1f; 1. ArrayList 2. LinkedList 3.总结 &#x1f388;边走、边悟&#x1f388;迟早会好 ArrayList 和 LinkedList 都是 Java 中常用的 List 接口的实现类&#xff0c;但它们在内部结构和操作性能上有所不同。 1. ArrayLis…

13. 雷达图

13. 雷达图 13.1 填充雷达图 self.add_heading("雷达图", level1)self.add_heading(填充雷达图, level2)self.add_space()# 传入个性化数据修改QuickFilledRadarChart方法的代码就好self.add_flowable(of_ex_quick_charts.QuickFilledRadarChart(width460, height18…

Threejs中的WebGPU实践(1-2)

更多精彩内容尽在 dt.sim3d.cn &#xff0c;关注公众号【sky的数孪技术】&#xff0c;技术交流、源码下载请添加VX&#xff1a;digital_twin123 此处接上文&#xff1a;Threejs中的WebGPU实践&#xff08;1-1&#xff09; 顶点着色器设置 现在我们已经对材质系统和 TSL 着色器…

《框架封装 · 优雅接口限流方案》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

权限审批也能这么人性化?没错,可道云teamOS让团队关系更和谐

作为一位企业管理者&#xff0c;我深知权限审批在企业管理中的重要性。它不仅仅是一个简单的流程&#xff0c;更是保障企业信息安全、提升团队协作效率的关键环节。 然而&#xff0c;过去我们常常面临权限审批流程繁琐、效率低下的问题&#xff0c;这不仅影响了我们的工作效率…

如何在 Odoo 16 Studio 模块中自定义视图和报告

为了有效地运营公司&#xff0c;需要定制的软件系统。Odoo 平台提供针对单个应用程序量身定制的管理解决方案和用户友好的界面&#xff0c;以便开发应用程序&#xff0c;而无需更复杂的后端功能。该平台支持使用简单的拖放功能和内置工具创建和修改更多定制的 Odoo 应用程序。企…

ubuntu如何监控Xvfb虚拟显示器

在Ubuntu中监控Xvfb显示器主要涉及到使用VNC服务器来远程访问这个环境。以下是一些基本步骤&#xff1a; 安装Xvfb和相关工具: 使用apt安装Xvfb和x11vnc&#xff0c;x11vnc是一个VNC服务器&#xff0c;可以远程访问Xvfb创建的虚拟桌面环境。 sudo apt-get install xvfb sudo ap…

Ciallo~(∠・ω・ )⌒☆第十九篇 mysql windows、Ubuntu安装与远程连接配置

一、安装windows版本的mysql &#xff08;一&#xff09;、安装mysql 1. 2. 3. 4. 5. &#xff08;二&#xff09;、测试mysql 这些步骤完成后记得去配置环境变量&#xff0c;path为mysql的安装目录这里我选择的是默认路径&#xff1a; C:\Program Files\MySQL\MySQL Serve…

零基础学习Redis(5) -- redis单线程模型介绍

前面我们提到过&#xff0c;redis是单线程的&#xff0c;这期我们详细介绍一下redis的单线程模型 1. redis单线程模型 redis只使用一个线程处理所有的请求&#xff0c;并不是redis服务器进程内部只有一个线程&#xff0c;其实也存在多个线程&#xff0c;只不过多个线程是在处…

MySQL常用函数、语法案例

本人MySQL5.7版本 表结构 假设有一个名为 order_summary 的表&#xff0c;其字段如下&#xff1a; order_id (INT): 订单的唯一标识符 customer_id (VARCHAR): 顾客的唯一标识符 order_date (DATETIME): 订单创建时间 total_amount (DECIMAL): 订单总金额 payment_status (E…

贪心+多维度dp

前言&#xff1a;处理简单版本的时候&#xff0c;想到了贪心&#xff0c;以及暴力求解顺便剪枝一下&#xff0c;要注意边界问题 haed版本的时候&#xff0c;完全行不通了&#xff0c;m的范围到了200&#xff0c;这是不可以暴力求解的 但是我不知道如何定义状态转移方程&#…

Hutool糊涂包JSON相关方法汇总

目录 1. JSON 对象 (JSONObject) 的创建 2. 向 JSONObject 添加键值对 3. 从 JSONObject 获取值 4. JSON 对象与字符串之间的转换 5. JSON 对象与 Java Bean&#xff08;POJO&#xff09;之间的转换 6. JSON 数组 (JSONArray) 的使用 7. JSON 数组与 Java List 之间的转…

Unity的UI设计

目录 创建和布局 布局与交互 性能优化 最佳实践 学习资源 Unity UI Toolkit与uGUI和IMGUI之间的具体区别和适用场景是什么&#xff1f; Unity UI Toolkit uGUI IMGUI 如何在Unity中实现响应式UI设计以适应不同设备尺寸&#xff1f; Unity UI性能优化的最新技术和方法…