软件项目管理第3章项目计划Brucencepuwork@sohu.com22019/9/7肖申克的救赎书上的故事安迪的计划?想法计划(20年)32019/9/7看过《越狱》吗?知道Michael计划么?42019/9/7关于“计划”的论述不做计划的好处,就是不用成天煎熬地监控计划的执行情况,而是直接面对突如其来的失败与痛苦《礼记》凡事预则立,不预则废。预:准备《宋史》关于岳家军的百战不殆:欲有所举,尽召诸统制与谋,谋定而后战,故有胜无败。谋:谋划、策划52019/9/7第3章项目计划3.1什么是项目计划3.2项目计划的内容3.3项目计划的方法3.4如何有效地完成项目计划3.5计划各项内容的制定3.6项目计划工具62019/9/7什么是项目计划?72019/9/73.1什么是项目计划?计划是事先确定项目的目标和实现目标所需要的原则、方法、步骤和手段等完整方案的管理活动。软件项目计划(SoftwareProjectPlanning)的目的是制定一套软件项目实施及管理的解决方案,其主要工作包括确定详细的项目实施范围、定义递交的工作成果、评估实施过程中主要的风险、制定项目实施的(时间)进度计划、成本和预算计划、人力资源计划等。82019/9/7软件项目计划的任务和作用任务:研究和估算,即通过研究软件项目的主要功能、性能和系统界面,对工作量、时间、成本和风险作出评估,然后根据评估结果进行安排作用:1.指导软件项目实施:包括采用的策略,合适的方法和工具等2.得到项目相关干系人的承诺3.获得资源的承诺:设备、人员、软件92019/9/7软件项目计划的作用(续)4.明确项目人员的分工和工作责任:提高项目的工作效率5.及早了解项目存在的问题和风险:在问题发生前制定好对策,使项目顺利进行,不影响进度,保证质量6.获得组织在项目预算上的承诺:保证顺利实施7.是软件项目实施结果评估的依据:为软件项目管理的改进提供参考标准(基线)8.软件项目实施过程的文档化:使之成为组织财富102019/9/7第3章项目计划3.1什么是项目计划3.2项目计划的内容3.3项目计划的方法3.4如何有效地完成项目计划3.5计划各项内容的制定3.6项目计划工具112019/9/73.2项目计划的内容3.2.1项目计划内容3.2.2输出文档122019/9/7项目计划要解决的问题怎么做?如何完成项目目标1.取得最终结果之前的所有交付和每个交付的工作量2.潜在风险及应对措施什么时候做?把工作项排序,估计每个工作项的工期和(起始)交付日期,并最终制定详细的项目日程表谁来做?分配任务132019/9/7项目计划的内容(1)软件项目计划:非工程类计划:质量计划、进度计划、资源计划、风险管理计划、配置计划工程类计划:项目需求计划、开发计划、测试计划、部署计划软件项目计划一般包括以下内容:1.目标:在特定的时期内所要达到的期望效果2.策略:为达到目标所采取的方法和措施,包括如何决策机制、组织行为3.流程:执行政策的具体方法和步骤,包括里程碑设置、沟通渠道、问题报告机制142019/9/7项目计划的内容(2)4.标准:项目过程和产品所要遵守的规定、规范和要求5.质量:对输出成果(阶段性产品和最终产品)的质量需求6.进度安排:活动、任务、事件的开始时间和结束时间7.预算8.资源:组织结构、人员数量、确认相关角色,包括各个角色的责任和义务,人员之间工作配合的要求9.风险:对项目成功构成的威胁或负面影响因素,影响大小或损失,以及对应的风险防范和处理措施10.配置管理:包括软硬件配置项的定义、基线建立、版本控制、变更控制152019/9/7项目计划内容及其关系162019/9/7项目计划主要内容说明(1)目标与范围:范围规划、范围定义,任务工作分解结构1.项目背景2.项目目标3.主要功能特性4.产品交付内容(清单)5.验收标准6.依赖性或条件限制7.专业术语8.参考文档项目估算:采用恰当的评估技术,首先对项目活动进行分解和定义,进行项目规模估算,然后完成资源估算、活动持续时间估算以及费用估算172019/9/7项目计划主要内容说明(2)风险:识别、评估、管理(预防、监控和处理)。风险分两种:一般性风险:对每一个软件项目而言都是潜在威胁,如需求变化、项目人员流失等特定产品风险:当前项目存在的特殊风险,如所采用特定技术引起的风险一般性风险和特定产品的风险都应该被系统化地标识出来,并建立风险条目检查表,该检查表一般包括:1.产品规模。规模越大,风险越大2.商业影响。市场、竞争对手3.客户特性。客户素质、文化、地理位置4.过程定义。过程的成熟度、过程采用的模型、过程文化所带来的风险182019/9/7项目计划主要内容说明(3)5.开发环境。软件开发与测试环境、办公环境、网络环境6.采用的技术。技术成熟度、复杂度、使用能力所带来的风险7.人员。数量、能力、经验资源:人员、硬件、网络、软件等需求和安排,还包括硬件分配、网络结构、项目组成员的角色、责任和具体分配的任务进度安排:任务排序、里程碑设置等。其方法主要有工程网络图、甘特图、任务资源表、成本估算和培训计划跟踪和控制机制:QA、变更控制、项目成员报告等192019/9/7项目计划输出文档202019/9/7第3章项目计划3.1什么是项目计划3.2项目计划的内容3.3项目计划的方法3.4如何有效地完成项目计划3.5计划各项内容的制定3.6项目计划工具212019/9/73.3项目计划的方法3.3.1滚动计划方法3.3.2WBS方法3.3.3网络计划技术222019/9/7项目计划有哪些方法?232019/9/7项目计划有哪些方法(续)?软件项目计划采用弹性计划较好1.使计划具有较好的适应性和预见性2.有效预防项目风险3.适应软件需求变化,提高计划的应变能力弹性==适时调整常用方法有:滚动计划方法工作分解结构方法网络计划法分层计划法242019/9/7滚动计划方法滚动计划方法一种动态编制计划的方法,按照“近细远粗”的原则制定一定时期内的计划,然后按照计划的执行情况和环境变化,调整和修订未来的计划,并逐期向后移动,把短期计划和中期计划结合起来的一种计划方法。252019/9/7滚动计划方法的要点分而治之:分为多个阶段,针对不同的阶段制定不同的计划。越近的阶段,计划越细;越远的阶段,计划越粗逐步求精:最近一期计划为实施计划,后面各期计划为预测计划。随着时间的推移,预测计划逐步变成实施计划。动态规划:以项目计划的“变(调整)”来主动适应用户需求和软件开发环境的变化,即“以变应变”。和谐过渡:项目的中短期计划随时间推移不断更新,可以解决生产的连续性与计划的阶段性之间的矛盾262019/9/7滚动计划方法的实施具体应用:在已编制出计划的基础上,每经过一段固定的时期(即滚动期,如一月、一个季度、一年)便根据开发环境条件和计划的实际执行情况,从确保实现计划目标出发对原计划进行调整。每次调整时,保持原计划期限不变,而将计划期顺序向前推进一个滚动期。流程软件项目的开发生命周期总体计划详细计划较粗计划没有计划需求分析设计编程测试部署结束详细计划较粗计划初步计划272019/9/7WBS方法WBS方法是(WorkBreakdownStructure,工作分解结构)一种将复杂的问题分解为简单的问题,然后再根据分解的结果进行计划的方法。1.以交付成果为导向,对项目要素或者整个工作范围进行分解、逐层推进,每向下分解一层就能对项目工作有更详细的了解和定义,从而掌握项目全部细节,做出相对准确的计划。2.该方法是结构化的设计工具,描述项目所必须完成的各项工作以及这些工作之间的相互联系282019/9/7运用WBS的目的关注项目目标和澄清职责,并防止遗漏项目的可交付成果建立可视化的项目可交付成果,以便估算工作量和分配工作改进时间、成本和资源估计的准确度为绩效测量和项目控制定义一个基准,容易获得项目人员的承诺辅助分析项目的最初风险、明确工作责任为其他项目计划的制定建立框架或依据292019/9/7WBS分解要求和原则WBS最低层次的项目可交付成果称为工作包(workpackage)工作包的定义应考虑80小时法则(两周法则):任何工作包的完成时间应当不超过80小时,即不超过两周。每两周对工作包检查一层,只报告工作包是否完成。将项目分解到工作包的过程或者结果应做到:1.某项具体的任务应该在一个工作包且只能在一个工作包中出现2.WBS中某项任务的内容是其下所有WBS项的总和3.一个工作包只能由一个人负责,可以有多个人参与,但只能由一个人负责4.任务的分解,尽量与实际执行方式保持一致。5.分解合理,具有良好的稳定性和适应性(适应需求变更)6.鼓励项目团队成员积极参与创建WBS,提高WBS的合理性和有效性7.所有成果需要文档化302019/9/7创建WBS步骤创建WBS:将复杂的项目分解为一系列明确定义的项目工作,并作为随后计划活动的指导存档WBS的分解可以采用:1.按产品功能模块分解2.按软件开发过程的不同阶段分解3.按项目的地域分布或部门分解4.按项目目标或者职能分解312019/9/7创建WBS步骤分解工作任务定义各项活动/任务之间的依赖关系(顺序、输入、输出)安排进度和资源(资源多会缩减工作时间)322019/9/7WBS的创建方法自上而下:从项目目标开始,逐级分解项目工作,直到参与者认为项目工作已经充分得到定义。即可以将项目定义在足够的,或适当的细节水平,从而可以准确地估算项目工期、成本、资源需求自下而上类比归纳WBS的表示方式1.表格方式2.结构图方式332019/9/7WBS方法示例一(表格方式)342019/9/7WBS方法示例二(结构图方式)352019/9/7WBS方法示例三(结构图方式)362019/9/7WBS方法示例四(结构图方式)372019/9/7网络计划技术网络计划方法是一种应用网络模型直观地表示软件开发众多工作(工序)之间的逻辑关系与时间关系,对完成软件工程项目所需时间、费用、资源进行求解和优化的计划方法,其基本类型是关键路线法/计划评审技术(CPM/PERT)。CPM:已经取得一定经验的承包工程Pert:更多用于研究和开发项目网络计划方法一般建立在WBS之上,先分解,再优化第5章,将详细讨论网络计划方法382019/9/7第3章项目计划3.1什么是项目计划3.2项目计划的内容3.3项目计划的方法3.4如何有效地完成项目计划3.5计划各项内容的制定3.6项目计划工具392019/9/7关于计划的再认识一些问题:1.计划没有变化快?那是你的计划没有做好!2.计划得到了认真对待和有效执行么?计划是为了实施服务的,不是为了计划做计划。项目计划的主要目的:能够指导项目的具体实施,尽量降低项目实施的风险,确保项目达到预期的目标。为了能指导项目的具体实施,计划必须具有现实性和有效性402019/9/73.4如何有效地完成项目计划3.4.1软件项目特点3.4.2项目计划的错误倾向3.4.3项目计划的原则3.4.4计划的输入3.4.5计划的流程412019/9/7软件项目的特点软件开发是在不断探索、研究中进行。边开发边研究最佳实践还不够成熟。无成熟、完整的方法体系。软件的重复性工作可以自动进行(自动化回归测试、软件包自动化构造),软件开发对工具的依赖性很强软件构造过程实际是一设计过程,每一个软件产品都不同422019/9/7软件项目的特点(续)由于软件是设计过程,自动化程度比较低。虽然使用大量软件和测试工具,但从分析、设计、编码到测试,手工劳动仍是主要的。软件变化不容易实现,而软件变化又是不可避免的软件的变化,进一步引起相关文档的频繁修改。开发人员对文档编制不感兴趣,对文档频繁变化更不感兴趣432019/9/7软件项目的问题时间紧迫性。市场、客户方、技术进步项目独特性。需求、方案不同软件项目的不确定性。难以估算工作量和规模软件项目管理可视性差。按“代