『软件工程4』一文了解软件项目管理中的4P
软件项目管理中的4P
- 一、项目管理的重要性和定义
- 1、重要性(两个阶段)
- 2、软件项目管理的定义
- 二、管理四要素4P
- 1、管理的四要素(4P)
- 2、软件项目中影响最终结果的要素
- 3、项目管理关心的问题
- 三、项目参与者类型(people)
- 四、项目小组结构(people)
- 1、项目的三种一般小组组织形式
- 2、关于小组结构的说明
- 3、项目小组人员间的通信路径
- 4、小组结构的选择需考虑的因素
- 5、思考题
- 五、软件范围及问题分解(product)
- 1、预告
- 2、软件范围的确定(划定问题的边界)
- 3、问题分解(确定各部分的功能)
- 六、过程(process)
- 1、一般性阶段
- 2、选择过程模型阶段
- 3、已确定过程模型阶段
- 七、产品和过程的二元性(product and process)
- 八、项目的5W2H原则(project)
- 九、写在最后——think more
在日常的软件开发中,很多人可能认为只要技术实力够了,不需要任何的软件项目管理。但殊不知的是, 软件项目管理对于整个软件项目起着至关重要的作用,甚至有可能关乎到软件项目的生死存亡。一项调查显示, 70%的项目失败是由于管理不善引起的,而并不是因为技术实力不够的原因。
那在软件项目管理当中,重要的4个因素又是什么呢?
在下面的这篇文章当中,将讲解软件项目管理中的4个重要因素4P, people
、 product
、 process
、 project
。
一、项目管理的重要性和定义
1、重要性(两个阶段)
(1)20世纪70年代中期
①70%的项目失败是由于管理不善引起的,而并不是因为技术实力不够;
②管理是影响软件研发项目全局的因素,而技术只影响局部的因素。
(2)20世纪90年代中期
美国软件工程实施现状的调查:
①10%的项目能够在预定的费用和进度下交付;
②软件项目管理成为软件项目开发中最重要的核心问题之一。
2、软件项目管理的定义
(1)定义
软件项目管理是为了使软件项目能够顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
(2)对象
软件工程项目,它所涉及的范围覆盖了整个软件工程过程。
(3)何时(即什么时候做项目管理)
这种管理在技术工作开始之前就应开始,在软件从概念到实现的过程中继续进行,当软件工程过程最后结束时才终止。
二、管理四要素4P
1、管理的四要素(4P)
- 人员People —— 成功项目的重要因素;
- 产品Product —— 要开发的软件;
- 过程Process —— 软件工程的框架活动,包含了任务、里程碑、工作产品以及质量保证点;
- 项目Project —— 开发软件所需要的所有工作
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、项目小组人员间的通信路径
从上图中可以看出,项目小组人数越多,通信路径越多。
通信路径计算公式为:
Cn2=n(n−1)2,n表示水平通信成员间的人数C_n^2=\frac{n(n-1)}{2} ,n表示水平通信成员间的人数 Cn2=2n(n−1),n表示水平通信成员间的人数
4、小组结构的选择需考虑的因素
对于一个小组来说,选择一个合适的结构需考虑以下因素:
- 待解决软件项目的困难程度;
- 产生的程序规模,以代码行或者功能点来衡量;
- 小组成员需要共同工作的时间(小组生存期);
- 项目所需要的通信的程度;
- 问题能够被模块化的程度;
- 待建造系统所要求的质量和可靠性;
- 交付日期的严格程度
5、思考题
Q1:某公司有21名员工,请问分别按DD、CD、CC方式来进行组织结构的划分,各自会产生多少条的通信路径?假设在CD和CC方式下被分成四组,画出大概的组织结构图。
A1:
下面给出无子负责人和有子负责人的框架图:
写到这里,不妨再思考下,在CD和CC方式下被分成五组,有多少条通信路径?组织架构又是怎么样的呢?
评论区留下你的答案~
五、软件范围及问题分解(product)
1、预告
在开始进行一个项目之前,应该了解些什么呢?
(1)在进行项目计划之前,软件开发者和客户必须一起定义产品的目的和范围,考虑可选的解决方案,标识技术和管理的约束;
(2)没有这些信息,就不可能进行合理的(准确的)成本估算、有效的风险评估、适当的项目任务划分或是可管理的项目进度安排;
(3)软件范围是软件项目管理的第一个活动。
通过下面一张图来加深对软件范围的理解。
圆圈里的内容即软件范围,确定该项目要做什么;那么不在圈子里面的,就先抛开,也就是说,不该做的内容先不要做。
2、软件范围的确定(划定问题的边界)
(1)语境;
(2)信息目标;
(3)功能和性能
3、问题分解(确定各部分的功能)
(1)分而治之;
(2)估算开始之前,范围中所描述的软件功能必须被评估和细化,以提供更多的细节。因为成本和进度的估算都是面向功能的,所以某种程度的分解通常是很有用的。
六、过程(process)
1、一般性阶段
(1)软件过程的一般性阶段(定义、开发和支持)适用于所有软件项目;
(2)问题在于选择一个适合项目组所要开发软件的过程模型。
回顾下上一篇文章提到过的过程模型:
- 线性顺序模型(瀑布模型)
- V模型
- 原型实现模型
- RAD模型
- 增量模型
- 螺旋模型
- 形式化方法模型
2、选择过程模型阶段
项目管理者必须决定哪一个过程模型最适合用在此项目,因此在选择过程模型时需考虑以下因素:
(1)需要该产品的客户和将做此工作的人员;
(2)产品本身的特征;
(3)软件项目组工作的项目环境。
3、已确定过程模型阶段
(1)当一个过程模型被选定时,项目组基于通用过程框架活动集合,定义一个初步的计划;
(2)一旦建立了初步的计划,便可以开始进行过程分解,即必须建立一个完整的计划以反映框架活动中所需要的工作任务;
(3)工作任务必须针对项目的特定需要进行适应性修改;且框架活动总是一样的,但工作任务则要根据一系列的适应性标准来选择。
七、产品和过程的二元性(product and process)
从上图中可以看出,横向坐标表示过程,纵向坐标表示产品,也就是说,每一个产品都有它对应的一系列过程。所以,在一个项目中,产品和过程都一样重要,缺了谁都不行,这也就体现了产品和过程的二元性。
八、项目的5W2H原则(project)
项目的5W2H原则包含以下几点:
- WHY —— 为什么(Why)该系统被开发?(业务目的)
- WHAT —— 将做什么(What)?(项目任务)
- WHEN —— 什么时候(When)做?(里程碑)
- WHO —— 某功能由谁(Who)负责?(角色和责任)
- WHERE —— 他们的机构组织位于何处(Where)?(角色责任界定)
- HOW —— 工作将如何(How)被技术和管理地进行?(管理和技术策略)
- HOW MUCH —— 每种资源需要多少(How much)?(资源分配)
九、写在最后——think more
看完上面文章内容后,不妨试问下自己以下问题:
分析如下具体项目情况,选择合适的团队结构(CC、CD、DD)及软件过程模型,并分析原因。
Q1:在一个信息系统组织中,你被指派为项目经理。你的工作是开发一个应用程序,该程序类似于你的团队以前已经做过的某个项目,只是规模更大而且更复杂一些。需求已经由用户写成文档。
Q2:你被指派为一个小型软件产品公司的项目经理。你的工作是开发一个有突破性的产品,该产品结合了虚拟现实的硬件和高超的软件。因为家庭娱乐市场的竞争非常激烈,完成这项工作的压力很大。
Q3:你被指派为一个大型软件产品公司的项目经理。你的工作是管理该公司已被广泛使用的字处理软件的新版本的开发。因为必须获得新的收益,已经规定了紧迫的最后期限并对外公布。
Q4:在一个为遗传工程领域服务的公司中,你被指派为项目经理。你的工作是管理一个软件新产品的开发,该产品能够加速基因分解的速度。这项工作是面向研究及开发的,但其目标是在下一年度内生产出产品。
评论区留下你的答案٩(๑❛ᴗ❛๑)۶
PS 本文篇幅较长,有不理解或者有误的地方欢迎私聊或加我微信 MondayLaboratory
交流~
- 公众号:星期一研究室
- 微信:MondayLaboratory
如果这篇文章对你有帮助,记得留下star哦~
『软件工程4』一文了解软件项目管理中的4P相关推荐
- 浅析软件项目管理中十个误区(来自:http://manager.csdn.net/n/20051213/30907.html)
随着计算机硬件水平的不断提高,计算机软件的规模和复杂度也随之增加.计算机软件开发从"个人英雄"时代向团队时代迈进,计算机软件项目的管理也从"作坊式"管理向&qu ...
- 《系统集成项目管理工程师》必背100个知识点-80项目变更管理在软件项目管理中的主要活动内容...
项目变更管理在软件项目管理中的主要活动内容? (1)识别可能发生的变更: (2)管理每个己识别的变更: (3)维持所有基线的完整性: (4)根据已批准的变更,更新相关要求,协调雄体项目内的变更: (5 ...
- 变更管理在软件项目管理中的主要活动
变更管理在软件项目管理中的主要活动内容: 建立基线.变更控制系统和变更控制流程 识别变更,并以书面格式提出变更请求 CCB审查变更请求 CCB批准或者否决变更 将批准的变更纳入项目管理计划中 实施被批 ...
- 『软件工程9』结构化系统分析——解决软件“做什么”问题
结构化系统分析--解决软件"做什么"问题 一.系统分析的任务和过程 1.系统分析的任务 2.系统分析的过程 (1)问题识别 (2)分析与综合 (3)编制文档 (4)系统分析评审 二 ...
- 『软件工程6』详解软件项目管理之软件范围与估算
软件项目管理--软件范围与估算 一.软件项目计划 1.目标 2.步骤 二.软件范围 1.软件范围定义 2.软件范围--引例 三.影响估算的因素 四.软件项目资源 1.软件项目资源构成 2.分析图 3. ...
- 『软件工程1』详解软件是什么
软件基本概念 一.什么是产品 二.软件的双重角色 三.软件的涵义及特征 四.软件应用 五.软件危机 六.软件神话 一.什么是产品 1.从用户的角度 产品实际上就是信息,以某种方式使得用户世界更加美好 ...
- 『软件工程2』详解软件工程和软件过程模型
文章目录 一.软件工程的定义 1.Fritz Bauer在NATO上给出的定义 2.Barry Boehm 3.IEEE在软件工程术语汇编中的定义 二.软件工程的层次 1.软件工程三个要素 2.软件工 ...
- 『软件工程13』浅谈面向对象方法,统一建模语言UML
浅谈面向对象方法UML 一.UML的含义 二.UML的主要内容 1.UML的概念模型 2.UML概念模型图例 三.UML的基本构造块 1.UML中的事物 (1)UML中的四种事物 (2)UML中各种事 ...
- 【软件工程】五、面向对象方法学 软件项目管理
一.面向对象方法学引论 面向对象技术已经成为目前最好的软件开发技术. 面向对象方法学 = 对象+类+继承+消息(选.填) 对象抽象出共同特征就是类,类的实例就是对象. 继承是继承父类原本就拥有的属性和 ...
最新文章
- python怎么画简单图片-python中简单易学的绘图:用turtle画太极图
- VTK修炼之道25:图像基本操作_图像子块提取(特征区域提取)
- 线段树之延时标记(区间修改)及lazy思想
- Java 8:在新的Nashorn JS引擎中编译Lambda表达式
- 区块链以信用为基础,所以目前在中国不可行.
- linux 修改消息队列大小
- php携程语比,PHP 协程
- 碎裂效果尝试(clip-path篇)
- 8种寻找机器学习数据集的方法 | 附数据集资源
- UVA 847 - A Multiplication Game(游戏)
- leetcode 979. 在二叉树中分配硬币
- C#-Windows计算器
- 新概念第三册背诵: Lesson 1 - A Puma at large
- SAR图像:拟合杂波时常用的分布
- 【历史上的今天】9 月 3 日:谷歌发布 Android 10;微软收购诺基亚;eBay 诞生
- jS 清除form表单
- (小知识点) textview.setBackground不起作用
- SDNU_ACM_ICPC_2020_Winter_Practice_2nd C 离散化, lower_bound
- 要考驾照科目二了,好紧张
- 中国itunes ip 记录
热门文章
- 【MATLAB统计分析与应用100例】案例008:调用rand函数生成均匀分布随机数
- C# 的扩展方法在 LINQ 中实现数组排序
- 华为云GaussDB,11.11让企业无后顾之忧
- IOS学习笔记七之KVC和Key路径
- linux c之assert函数使用总结
- Linux之软连接和硬链接
- Android之Volley 源码解析
- android log.d 格式化,android – 在我的代码中使用Log.d()或Log.e()
- layui 数字步进器_图解全新奔驰S级:从“传统豪华”向“数字豪华”转型
- centos静默安装oracle关于报错UnsatisfiedLinkError exception loading native library:njni10