软件项目管理中的4P
在日常的软件开发中,很多人可能认为只要技术实力够了,不需要任何的软件项目管理。但殊不知的是, 软件项目管理 对于整个软件项目起着至关重要的作用,甚至有可能关乎到软件项目的生死存亡。一项调查显示, 70%的项目失败是由于管理不善引起的 ,而并不是因为技术实力不够的原因。
那在软件项目管理当中,重要的4个因素又是什么呢?
在下面的这篇文章当中,将讲解软件项目管理中的4个重要因素4P,
people
、
product
、
process
、
project
。
一、项目管理的重要性和定义
1、重要性(两个阶段)
(1)20世纪70年代中期
①70%的项目失败是由于 管理不善 引起的,而并不是因为技术实力不够;
② 管理是影响软件研发项目 全局 的因素,而技术只影响 局部 的因素。
(2)20世纪90年代中期
美国软件工程实施现状的调查:
① 10%的项目能够在预定的费用和进度下交付;
② 软件项目管理成为软件项目开发中最重要的 核心问题 之一。
2、软件项目管理的定义
(1)定义
软件项目管理是为了使软件项目能够顺利完成,而对 成本 、 人员 、 进度 、 质量 、 风险 等进行分析和管理的活动。
(2)对象
软件工程项目 ,它所涉及的范围覆盖了整个软件工程过程。
(3)何时(即什么时候做项目管理)
这种管理在技术工作开始之前就应 开始 ,在软件从概念到实现的过程中 继续进行 ,当软件工程过程最后结束时才 终止 。
二、管理四要素4P
1、管理的四要素(4P)
2、软件项目中影响最终结果的要素
3、项目管理关心的问题
PS: 以下将对4P的内容进行详细分析。
三、项目参与者类型(people)
项目参与者类型一般包括以下几类:
四、项目小组结构(people)
1、项目的三种一般小组组织形式
(1)民主分散式 (Democratic Decentralized, DD)
(2)控制分散式 (Controlled Decentralized, CD)
(3)控制集中式 (Controlled Centralized, CC)
2、关于小组结构的说明
(1)DD(民主分散式) :没有固定的负责人,适合 难度比较高、交付期限很长及生存期较长 的项目,最适合于解决 模块化程度比较低 的问题,因为需要通信;
通俗来说 :没有负责人,只有水平通信,成员之间需要广泛的两两交流。
(2)CD(控制分散式) :有一个 固定的负责人 ,若有子负责人,子负责人和总负责人的通信是 垂直 的,而个人间的通信是 水平 的,适合 交付期限较长、比较简单 的项目;
通俗来说 :有固定负责人,成员之间需要交流,成员与负责人之间也需要交流;若有子负责人,成员跟子负责交流,子负责人跟总负责交流。
(3)CC(控制集中式) :负责人和小组成员之间的通信是 垂直 的,适合解决 交付期限比较严格的、简单的、模块化程度高 的项目
通俗来说 :有固定负责人,成员之间不沟通,只跟上级沟通。
注 :CD和CC两种结构都需要有一个固定的负责人,而DD不用;且会比DD产生更少的缺陷。
3、项目小组人员间的通信路径
从上图中可以看出,项目小组人数越多,通信路径越多。 通信路径计算公式为 :
4、小组结构的选择需考虑的因素
对于一个小组来说,选择一个合适的结构需考虑以下因素:
5、思考题
Q1 :某公司有21名员工,请问分别按DD、CD、CC方式来进行组织结构的划分,各自会产生多少条的通信路径?假设在CD和CC方式下被分成四组,画出大概的组织结构图。
下面给出 无子负责人 和 有子负责人 的框架图:写到这里,不妨再思考下,在CD和CC方式下被分成 五组 ,有多少条通信路径?组织架构又是怎么样的呢? 评论区留下你的答案~
五、软件范围及问题分解(product)
在开始进行一个项目之前,应该了解些什么呢?
( 1 ) 在进行项目计划之前,软件开发者和客户必须一起定义产品的目的和范围 ,考虑可选的解决方案,标识技术和管理的约束;
( 2 )没有这些信息,就不可能进行合理的(准确的) 成本估算 、有效的 风险评估 、适当的 项目任务划分 或是可管理的 项目进度安排 ;
( 3 )软件范围是软件项目管理的 第一个 活动。
通过下面一张图来加深对 软件范围 的理解。
圆圈里的内容即软件范围,确定该项目要做什么;那么不在圈子里面的,就先抛开,也就是说,不该做的内容先不要做。
2、软件范围的确定(划定问题的边界)
( 1 )语境;
( 2 )信息目标;
( 3 )功能和性能
3、问题分解(确定各部分的功能)
( 1 )分而治之;
( 2 )估算开始之前,范围中所描述的 软件功能 必须被 评估和细化 ,以提供更多的细节。因为成本和进度的估算都是 面向功能 的,所以某种程度的分解通常是很有用的。
六、过程(process)
1、一般性阶段
( 1 )软件过程的一般性阶段(定义、开发和支持)适用于所有软件项目;
( 2 )问题在于选择一个适合项目组所要开发软件的过程模型。
2、选择过程模型阶段
项目管理者必须决定 哪一个过程模型 最适合用在此项目,因此在选择过程模型时需考虑以下因素:
( 1 )需要该产品的客户和将做此工作的人员;
( 2 )产品本身的特征;
( 3 )软件项目组工作的项目环境。
3、已确定过程模型阶段
( 1 )当一个过程模型被选定时,项目组基于 通用过程框架活动集合 ,定义一个初步的计划;
( 2 )一旦建立了初步的计划,便可以开始进行过程分解,即必须建立一个完整的计划以 反映框架活动中所需要的工作任务 ;
( 3 )工作任务必须针对项目的特定需要进行适应性修改;且框架活动总是一样的,但工作任务则要根据 一系列的适应性标准 来选择。
七、产品和过程的二元性(product and process)
从上图中可以看出,横向坐标表示 过程 ,纵向坐标表示 产品 ,也就是说,每一个产品都有它对应的一系列过程。所以,在一个项目中,产品和过程都一样重要,缺了谁都不行,这也就体现了 产品和过程的二元性 。
八、项目的5W2H原则(project)
项目的5W2H原则包含以下几点:
九、写在最后——think more
看完上面文章内容后,不妨试问下自己以下问题:
分析如下具体项目情况,选择合适的团队结构(CC、CD、DD)及软件过程模型,并分析原因。
Q1: 在一个信息系统组织中,你被指派为项目经理。你的工作是开发一个应用程序,该程序类似于你的团队以前已经做过的某个项目,只是规模更大而且更复杂一些。需求已经由客户写成文档。
A1: 该项目规模更大并且更复杂,但是以前做过,因此选择 CC 的团队结构。同时,在最后一句中说到,需求已经由客户写成文档,即需求已经明确,可以用 瀑布模型 。但是呢,该项目是一个规模较大的项目,且因为之前做过类似,所以技术风险较低,因此也可以选择 RAD模型 来进行开发。 (CC、RAD/瀑布)
Q2: 你被指派为一个小型软件产品公司的项目经理。你的工作是开发一个有突破性的产品,该产品结合了虚拟现实的硬件和高超的软件。因为家庭娱乐市场的竞争非常激烈,完成这项工作的压力很大。
A2: 因为是突破性产品,且完成这项工作的压力很大,又因为项目的模块化程度较低,因此成员之间需要紧密结合,进行两两通信,所以选择 DD结构 。项目因为是有个突破性产品,风险性较高,因此选择 螺旋模型 进行开发。 (DD、螺旋/增量)
Q3: 你被指派为一个大型软件产品公司的项目经理。你的工作是管理该公司已被广泛使用的字处理软件的新版本的开发。因为必须获得新的收益,已经规定了紧迫的最后期限并对外公布。
A3: (CC、增量/RAD)
Q4: 在一个为遗传工程领域服务的公司中,你被指派为项目经理。你的工作是管理一个软件新产品的开发,该产品能够加速基因分解的速度。这项工作是面向研究及开发的,但其目标是在下一年度内生产出产品。
A4: (DD、螺旋/形式化方法模型)