第一节 软件项目管理的作用和重要性
软件项目管理是以软件项目为对象的系统管理方法,它运用相关的知识、技术和工具,对软件项目周期中的各阶段工作进行计划、组织、指导和控制,以实现项目目标。
软件项目管理的重要性
软件项目涉及大量的人员和活动,有进度和资金限制,并会遇到各种变化、风险和矛盾,必须有良好的管理才能成功。
大规模软件项目的例子:Windows2000有5000万行代码,3000多个工程师,几百个小团队。微软开发一个软件所花的钱绝对不少于英特尔公司开发新一代CPU所花的钱。
理解项目计划并胜任管理工作
理解软件项目在进度、成本、质量、人员等方面的计划和相应的措施,从而更有效地工作并为所在企业创造价值。
在管理岗位上更是需要项目管理能力
第二节 项目和软件项目
项目普遍存在于人类社会中。
美国项目管理协会(PMI)在《项目管理知识体系指南》中对项目的定义是:项目是为提供某一独特的产品或服务所做的一次性努力。
1.目标性:项目是面向目标的,即提供某种产品或服务,并创造效益。
2.独特性(一次性):每个项目都有其独自的特点。
3.约束性:有时间限制并受资金、人员等资源的约束。
4.不确定性:项目的过程和结果都存在很多不确定因素。
5.周期性(生命期):项目是一种临时性的任务,当项目目标达到时,项目即结束。
项目群与子项目
- 项目群是以协同方式管理的一组相互联系的项目。可以将项目群理解为比项目高一级的大型项目,例如"中国载人航天计划","嫦娥工程"(中国月球探测工程)就是项目群,它们都包含了若干项目,而这些项目被协同管理,以实现一个大的战略目标。
- 子项目是项目的一个阶段或一个部分,可被相对独立地进行管理,也可外包给外部单位或组织内的其它职能单位。
软件项目
- 软件项目是一种特殊的项目,其特殊性表现在它的目标是生产软件产品。
- Frederick Brooks在他的文章《没有银弹》中,总结了软件的以下特点。
1.
复杂性。状态极多,难以描述、设计和测试。
2.
不一致性。不存在通用的定律。
3.
可变性。易于改变,且要求经常改变。
4.
不可见性。逻辑实体,不具有可见性。
软件项目的特点
智力密集型
。软件项目需要大量高强度的脑力劳动。项目工作十分细致、复杂和容易出错。不需要使用大量的物质资源,而主要是使用人力资源,因此人员的因素极为重要。
项目范围和目标的灵活性
。客户需求的变化可能会导致项目范围和目标的变化。软件开发不像其它产品的生产,有着非常具体的标准和检验方法,软件的标准柔性很大,衡量软件是否成功的重要标准就是用户满意度,但用户满意度这个标准在软件开发前很难精确地、完整地表达出来。
风险大,收益大
。由于技术的高度复杂性和需求等因素的不确定性,软件项目风险控制难度较大,项目的成功率较低,但是一旦某个软件项目或产品获得成功,将会带来相对高额的回报。
客户化程度高
。项目的独特性在软件领域表现得更为突出,不同的软件项目之间差别较大。软件开发商往往要根据客户的具体要求提供独特的解决方案,即使有现成的解决方案,也通常需要进行一定的客户化工作。
涉及多个专业领域,多种技术综合应用
。软件项目属于典型的跨学科合作项目。
过程管理的重要性
。软件项目需要对整个项目过程进行严格和科学的管理,尤其是对大型、复杂的软件项目。
“
质量产生于过程
”
,必须监控软件开发的过程和中间结果,没有严格的过程管理,开发人员的个人能力再强也没有用。
软件项目的分类
合同项目
甲方(客户方)和乙方(开发方)签订合同,甲方委托乙方开发合同规定的项目。甲方出资,乙方负责实施。
通用产品
项目
开发方自己出资研制软件产品(产权属于自己),产品具有一定的通用性,可以卖给任何目标客户,而不是只卖给一个客户。
合同项目的特点
l
承接合同项目的门槛比较低,有利于创业起步。
l
项目失败的代价比较低。
l
受制于甲方,开发过程艰辛。如,需求不断变化,被客户“牵着鼻子走”;验收和收款过程艰难。
l
缺乏规模复制效益。项目是为特定客户(甲方)定制的,很难直接“复制”项目卖给下一个客户。
合同项目
- 几乎每个合同项目,乙方都要重新经历“营销、开发、验收和收款”过程。由于缺乏规模复制效益,单靠合同项目盈利的公司很难发展壮大。
- 为发展壮大,关键是要避开或解决“规模复制效益”问题。
•
可专注于某一行业。
通用产品项目的特点
l
开发过程由自己主导,不受制于客户。
l
产品适合于所有目标消费群体,具有规模复制效益。
l
门槛高,失败代价高。
l
在国内,通用软件产品的最大障碍是盗版。
其它盈利模式
§
在国内,靠卖通用软件盈利的公司极少。一些个人软件采用了不同的路线:用户可免费使用,通过间接方式盈利(例如广告)。
§
运营模式:提供一种软件服务,向使用这种服务的用户收费(例如视频网站、
Google
、百度产品)。
•
优点:持续性地收费。
•
缺点:前期投入较大(烧钱)。
§
对一个软件企业来说,最好探索怎样把不同的项目盈利方式结合起来,实现效益最大化。
第三节 项目管理
§
项目管理
(Project Management)
的定义
项目管理是一定的主体,为了实现其目标,利用各种有效的手段,对执行中的项目周期的各阶段工作进行计划、组织、协调和控制,以取得良好经济效益的各项活动的总和。
中国项目管理研究委员会对项目管理总结为:“项目管理”一词具有两种不同的含义,其一是指一种管理活动;其二是指一种管理学科,前者是一种客观的实践活动,后者是前者的理论总结;前者以后者为指导,后者以前者为基础。
§
项目管理包含两方面的工作:制定计划和实施计划。
§
成功的项目管理可以定义为:在一定的时间和成本范围内,能按一定的质量标准顺利完成项目,并取得了用户的认可。
项目管理的起源
§
项目管理是
20
世纪
50
年代后期发展起来的一种计划管理方法,起源于美国。
§
两个标志性的成果:
•
1957
年美国杜邦公司成功应用了项目管理方法,与兰德公司共同提出了“关键路径法”
(Critical Path Method
,
CPM
)。
•
美国海军特种计划局和洛克希德航空公司在规划和研究在核潜艇上发射“北极星”导弹的计划中提出“计划评估和审查技术”
,
(
Program Evaluation and Review
Technique,PERT
)。
§
项目管理的主要内容
美国项目管理协会(ProjectManagement Institute,PMI)开发的《项目管理知识体系指南》提出了项目管理知识体系(ProjectManagement Body Of Knowledge, PMBOK),该知识体系将项目管理划分为10个知识领域:
集成管理、范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、项目干系人管理。
项目管理知识领域
§
集成管理:把项目整个生命周期的工作集成为一个有机整体,进行计划、协调和控制。主要包括项目的启动、计划编制、执行监控、变更控制和结项。
§
沟通管理:确保项目信息及时准确地生成、收集、发布、存储和部署。
§
采购管理:从项目组织之外采购实物或服务。
§
项目干系人管理:识别能影响项目或受项目影响的全部人员或组织,分析他们对项目的期望和影响,采取合适的管理策略处理利益冲突,有效调动他们参与项目决策和活动。
项目管理的三个关注点
§
质量:项目产品
/
服务要满足用户在功能或非功能方面的需求。
§
进度
:在可接受的期限内完成项目。
§
成本
:在可接受的成本预算内完成项目。
§
这三个方面是互相制约的,要做出权衡。不要一味鼓吹“多快好省”。
不同的项目在这三个关注点上的约束是不同的,项目管理方式方法要符合这种约束。
软件项目管理的内容
§
软件项目管理是一种特殊的项目管理,因此
PMBOK
的
10
个知识领域也适用于软件项目管理,但由于软件项目的特殊性,对软件项目管理的研究和学习不能完全照搬传统项目管理的知识、方法和技术。软件项目管理已形成一个独立的项目管理学分支,它除了包含上述
10
个知识领域外,还特别注重软件配置和软件过程的管理。
§
软件配置管理:软件项目的配置项种类繁多且处于不断的变更之中,为了使项目顺利进行并保证软件产品的质量,这些配置项的变更必须得到控制,保证它们的完整性、一致性和可追溯性。
§
软件过程是生产高质量软件所需完成的任务框架,即形成软件产品的一系列步骤,以及每一步骤的中间产品、资源、角色及所采取的方法、工具等。软件产品的质量标准必须通过严格控制的软件过程来达到,因此必须关注软件过程的管理和持续改进。
§
随者软件业的快速发展,软件项目管理也处在不断的发展变化之中。近年来兴起的软件外包、开源软件项目等新的项目模式和技术给软件项目管理提出了新的课题,不断丰富着软件项目管理的理论和实践。
软件工程的三个线索
第四节 软件项目的生命周期
软件项目生命周期的特征
§
(
1
)在项目生命周期的不同时期人力和费用的投入是不平均的,开始投入比较低,然后逐渐升高,在项目的实施、控制阶段,达到最高峰,此后逐渐下降,直到项目的终止。
§
(
2
)风险与不确定性在项目开始时最大,并在项目的整个生命周期中随着决策的制定和可交付成果的验收而逐步降低。
§
(
3
)对项目做出变更或纠正错误所消耗的成本在项目初期较小,随着项目越来越接近完成而显著提高。
项目启动阶段
§
发现项目机会,识别客户需求,在此基础上定义项目目标和初始范围;落实项目的初步财务和人力资源,选定项目经理并授权开始项目。
§
有时候客户需求不是明显的,是潜在的或需要培育的,这就需要项目组织能及时从市场、技术发展和国家政策导向中发现需求。
项目规划阶段
§
要为实现目标而制定行动方案,针对项目的范围、进度、成本、质量、风险、人力资源等方面进行规划,形成项目管理计划文件。
项目执行阶段
§
执行项目计划,实现所提出的解决方案。这一阶段还要不断监控项目的执行过程,测量项目的实际进程和质量指标是否与计划一致。在该阶段的末尾通常需要对项目产品或服务进行验证。
项目收尾阶段
§
执行项目的收尾工作,例如确认所有的项目可交付物都已移交给客户,所有的费用都已经清算,进行项目总结。
§
注意
:项目生命周期与项目产品的生命周期是两个不同的概念。一个项目结束后,项目产品或服务的生命周期通常不会结束。
第五节 软件项目管理的基本原则
§
(
1
)具体问题具体分析
。
软件项目管理学科不存在“公理系统”,其理论体系不是由公式和定律组成,而是由经验性的原则和方法组成,其解决问题的主要方式不是套用定律进行推理和演算,而是针对具体项目情况对原则和方法灵活运用。不存在任何情况下都适用的方法,要坚持“具体问题具体分析”。做一个好的项目管理者,要具备一定的经验。
§
(
2
)采用系统方法
项目管理思想和理论起源于一般系统管理理论,特别强调系统方法。
所谓“系统”是指相互作用的各成分的综合体,其首要特征是整体性,同时具有目的性和组成成分间的协调性。
任何事物都可以看作是一个系统,而系统方法是处理复杂问题的常用方法。
§
系统方法具有以下特点:
•
对各组成部分之间的关系进行评价;
•
将各组成部分集成和匹配到一个统一的整体中;
•
将所有活动整合到一个有意义的系统化的动态过程中。
•
寻找解决问题的最佳方案和策略。
•
保证解决问题时的客观性。
§
系统方法要求我们把项目看作一个动态系统,其中的人、过程和工具紧密配合,各种项目活动密切关联且相互制约。
§
在一个软件项目中,不能孤立地看待项目中任何一个方面,而要综合分析它们之间的关系。
§
作为项目管理者,必须站在系统整体的高度权衡各方面的因素,
找到最佳平衡点
,从而达到针对项目目标的
全局最优
,而非片面追求局部最优。
§
系统方法通常包含以下几个阶段:
•
定义
:定义目标、标准和约束。
•
分析
:分析问题,并提出解决问题的所有方法和途径。
•
权衡
:将选择标准和约束条件应用于备选方案,使之符合目标。
•
合成
:提出达到系统目标的最佳方案。
§
客观性是系统方法的基本特征
,即抛开主观意识,客观地看待事物。
§
系统方法要求处理项目管理问题要按以下步骤:
•
收集数据和信息;
•
分析数据和信息;
•
预测结果;
•
评价预测结果并比较各备选方案;
•
选择最佳方案;
•
执行;
•
测评执行结果并与预期结果相比较。