资源描述
第第 6 章章 软件项目开发计划软件项目开发计划 2THE SCHOOL OF SOFTWARE ENGINEERING OF HUST本章教学目标本章教学目标: 1.编写项目计划书编写项目计划书 2.project2007 编制项目计划编制项目计划 验收方式验收方式练习方式练习方式: 1.个人行为个人行为考核方式考核方式: 2.小组行为小组行为3THE SCHOOL OF SOFTWARE ENGINEERING OF HUST前言前言: 制定与定义制定与定义WBS属于范围规划的任务,确定属于范围规划的任务,确定项目范围,是项目执行的重要依据项目范围,是项目执行的重要依据,是范围定是范围定义过程的输出义过程的输出.4THE SCHOOL OF SOFTWARE ENGINEERING OF HUST6.1 软件项目分解软件项目分解项目分解目的项目分解目的 明确项目所包含的各项工作;项目分解的结果就是明确项目所包含的各项工作;项目分解的结果就是WBS (任务分解结构)图(任务分解结构)图项目分解意义项目分解意义 WBS(任务分解结构)图是实施项目、创造最终产品或(任务分解结构)图是实施项目、创造最终产品或服务所必须进行的全部活动的一张清单,也是进度计划、人员分配、预算服务所必须进行的全部活动的一张清单,也是进度计划、人员分配、预算计划的基础计划的基础项目分解内容项目分解内容 项目分解就是先把复杂的项目逐步分解成一层一层的要项目分解就是先把复杂的项目逐步分解成一层一层的要素(工作),直到具体明确为止素(工作),直到具体明确为止项目分解工具项目分解工具 项目分解的工具是工作分解结构原理,它是一个项目分解的工具是工作分解结构原理,它是一个分级的树型结构,是一个对项目工作由粗到细的分解过程分级的树型结构,是一个对项目工作由粗到细的分解过程5THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 WBS Work Breakdown Structure主要是将一个项目分解成易于管主要是将一个项目分解成易于管理的几个部分或几个细目,以便确保找出完成项目工作范围所需的所有工理的几个部分或几个细目,以便确保找出完成项目工作范围所需的所有工作要素它是一种在项目全范围内分解和定义各层次工作包的方法作要素它是一种在项目全范围内分解和定义各层次工作包的方法 WBS Work Breakdown Structure结构层次越往下层则项目组成部结构层次越往下层则项目组成部分的定义越详细,分的定义越详细,WBS最后构成一份层次清晰,可以具体作为组织项目实最后构成一份层次清晰,可以具体作为组织项目实施的工作依据施的工作依据 WBS Work Breakdown Structure通常是通常是一种面向一种面向“成果成果”的的“树树”,其最底层是细化后的其最底层是细化后的“可交付成果可交付成果”,该树组织确定了项目的整个范围。,该树组织确定了项目的整个范围。但但WBS的形式并不限于的形式并不限于“树树”状,还有多种形式。状,还有多种形式。6THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 WBS分解类型分解类型 基于可交付成果的划分基于可交付成果的划分上层一般为可交付成果为导向上层一般为可交付成果为导向下层一般为可交付成果的工作内容下层一般为可交付成果的工作内容 基于工作过程的划分基于工作过程的划分上层按照工作的流程分解上层按照工作的流程分解下层按照工作的内容划分下层按照工作的内容划分7THE SCHOOL OF SOFTWARE ENGINEERING OF HUST WBS制作的方法制作的方法 使用指导方针使用指导方针: 根据颁布的编制根据颁布的编制WBS的指导方针的指导方针/样样本本/模板,制定模板,制定WBS。 类比法类比法 : 借助类似产品的借助类似产品的WBS,用它作为起点,制,用它作为起点,制定新项目的定新项目的WBS。 由上至下法由上至下法: 从项目最大的单位开始,逐步将它们分从项目最大的单位开始,逐步将它们分解成下一级的多个子项。解成下一级的多个子项。 由下至上法由下至上法: 让项目组人员一开始就尽可能地确定项让项目组人员一开始就尽可能地确定项目有关的各项具体任务,然后再将各项具体任务进行目有关的各项具体任务,然后再将各项具体任务进行整合,并归总到整合,并归总到WBS的上一级内容当中。的上一级内容当中。8THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 基于可交付成果的划分基于可交付成果的划分WBS举例举例:信息网络工程信息网络工程信息网络工程信息网络工程结构化布线结构化布线网络平台建设网络平台建设布线设计布线设计采购采购布线布线验收验收方案设计方案设计采购采购网络平台实施网络平台实施验收验收9THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 基于工作过程的划分基于工作过程的划分WBS举例举例:网络系统工程网络系统工程网络系统网络系统培训培训设备准备设备准备设设备备采采购购设设备备验验收收交交接接网络系统设计网络系统设计布布线线设设计计平平台台设设计计工程实施工程实施布布线线实实施施网网络络集集成成软件开发软件开发软软件件需需求求确确定定系系统统设设计计编编码码测测试试10THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 WBS表达形式表达形式层次结构图和锯齿列表(清单)层次结构图和锯齿列表(清单) 图形显示图形显示 锯齿列表锯齿列表 10系统系统 11元素元素A 1.1.1任务任务 1.1.2任务任务 12元素元素B1. 0系统系统11元素元素A12元素元素B1.1.1任任务务1.1.2任任务务11THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 WBS工作编码工作编码 由高层向下层用多位码编排,要求每项工作有唯一的编码。由高层向下层用多位码编排,要求每项工作有唯一的编码。10001100 1110 1111 1112 1113 1120 1121 1122 1123120012THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 WBS工作编码举例工作编码举例:企业经营评价系统项目企业经营评价系统项目网络网络1430软件软件1410硬件硬件1420系统开系统开发发1400测试测试1500实施实施1600系统设系统设计计1300问题界问题界定定1100企业经营评价系统项目企业经营评价系统项目1000系统分系统分析析1200文档文档1440包装软包装软件件1411培训培训1610验收验收1630系统转系统转换换1620定制软定制软件件141213THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 项目工作分解结构表项目工作分解结构表项目名称:项目名称:项目负责人:项目负责人:单位名称:单位名称:制表日期:制表日期:工作分解结构工作分解结构任务编码任务编码任务名称任务名称主要活动描述主要活动描述负责人负责人1000 1100 1200 1x00 1x10 1x11 1x12 项目负责人审核意见:项目负责人审核意见: 签名:签名: 日期:日期:14THE SCHOOL OF SOFTWARE ENGINEERING OF HUST15THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解WBS分解的一般步骤分解的一般步骤总项目总项目子项目或主体工作任务子项目或主体工作任务主要工作任务主要工作任务次要工作任务次要工作任务小工作任务或工作元素小工作任务或工作元素16THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 WBS分解注意事项分解注意事项 WBS分解的规模和数量因项目而异分解的规模和数量因项目而异 收集与项目相关的所有信息收集与项目相关的所有信息 参看一下类似的项目的参看一下类似的项目的WBS, ,与相关人员讨论与相关人员讨论 可以参照相关可以参照相关模板模板 最低层是可控的和可管理的,但是避免不必要的过细,最好不要超最低层是可控的和可管理的,但是避免不必要的过细,最好不要超过过7 7层,层, 软件项目推荐分解到软件项目推荐分解到40小时的任务小时的任务 每个每个Work package必须有一个提交物必须有一个提交物17THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 定义任务完成的标准定义任务完成的标准 每个每个WBS必须有利于责任分配必须有利于责任分配 可以准备可以准备WBS的字典的字典 最后与相关人员进行评审最后与相关人员进行评审18THE SCHOOL OF SOFTWARE ENGINEERING OF HUST案例一案例一:校园图书管理信息系统的校园图书管理信息系统的WBS各小组代表上台各小组代表上台老师点评老师点评软件项目分解软件项目分解19THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分解软件项目分解 生活案例讨论生活案例讨论 假如您要在自己的家里举行一次生日宴会,请按假如您要在自己的家里举行一次生日宴会,请按WBS为你制定一份工为你制定一份工作的分解计划?作的分解计划? 代表发言代表发言 假如贵公司进行成立假如贵公司进行成立10周年庆典活动,如果请你负责此次活动,你将周年庆典活动,如果请你负责此次活动,你将如何分析此次活动所应包含的工作?如何分析此次活动所应包含的工作? 代表发言代表发言20THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 6.2 软件项目估算概念软件项目估算概念 软件项目估算软件项目估算 是指预测构造软件项目所需要的工作量以及是指预测构造软件项目所需要的工作量以及任务经历时间的过程。主要包括三个方面:任务经历时间的过程。主要包括三个方面: 规模(即工作量)的估算规模(即工作量)的估算 确定每个软件功能所必须执行的一系列确定每个软件功能所必须执行的一系列软件工程任务软件工程任务 进度的估算进度的估算 估计任务的持续时间,即历时估计估计任务的持续时间,即历时估计 成本的估算成本的估算 确定完成软件项目规模相应付出的代价确定完成软件项目规模相应付出的代价 21THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目估算概念软件项目估算概念 估算方法估算方法 规模估算方法规模估算方法 代码行(代码行(LOC,Lines of Code)估算法、功能点()估算法、功能点(FP,Function Points)估算法和计划评审技术()估算法和计划评审技术(PERT,Program Evaluation and Review Technique)估算法)估算法 进度估算方法进度估算方法 基于规模的进度估算、工程评价技术、关键路径法、专基于规模的进度估算、工程评价技术、关键路径法、专家估算方法、类推估算方法、模拟估算方法、进度表估算方法、基于承家估算方法、类推估算方法、模拟估算方法、进度表估算方法、基于承诺的进度估算方法和诺的进度估算方法和Jones的一阶估算准则等的一阶估算准则等 成本估算方法成本估算方法 自顶向下(类比)估算法、自下而上估算法、参数估算自顶向下(类比)估算法、自下而上估算法、参数估算法、专家估算法、猜测估算法等法、专家估算法、猜测估算法等 22THE SCHOOL OF SOFTWARE ENGINEERING OF HUST6.3 软件项目规模估算软件项目规模估算 估算的步骤估算的步骤 在技术允许的条件下,应从最详细的工作分解结构开始在技术允许的条件下,应从最详细的工作分解结构开始 精确定义度量的标准精确定义度量的标准 估计底层每一模块的规模,汇总已得到总体的估算估计底层每一模块的规模,汇总已得到总体的估算 适当考虑偶然因素的影响适当考虑偶然因素的影响 23THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件规模估算的假设和思路:软件规模估算的假设和思路: 软件的规模和其外延成正比软件的规模和其外延成正比 外延包括外延包括: 功能功能, 数据数据, 用户操作界面数用户操作界面数, 显示界面数显示界面数等等等等 不同的功能点实现的困难度不同不同的功能点实现的困难度不同, 但从整个项目来说但从整个项目来说, 平均的困难度差不多平均的困难度差不多 规模估算的目标:是决定工作量的大小。对于成本模规模估算的目标:是决定工作量的大小。对于成本模型,规模是计算软件项目的工作量、成本和进度的主型,规模是计算软件项目的工作量、成本和进度的主要输入要输入 规模估算的责任者:程序员、软件工程师、系统分析规模估算的责任者:程序员、软件工程师、系统分析员负责决定软件项目的规模员负责决定软件项目的规模24THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 规模估算的入口准则规模估算的入口准则 :在规模估算之前,软件功能需在规模估算之前,软件功能需求必须被定义。在项目早期定义需求可能是非常困难求必须被定义。在项目早期定义需求可能是非常困难任务。然而,在对需求一无所知的情况下,精确的估任务。然而,在对需求一无所知的情况下,精确的估算出项目的成本和进度是不可能的。如果知道部分需算出项目的成本和进度是不可能的。如果知道部分需求,那么估算基于已知的需求并且相信每一个人都相求,那么估算基于已知的需求并且相信每一个人都相信估算仅仅是基于那些已知的需求,如果使用了增量信估算仅仅是基于那些已知的需求,如果使用了增量或演进的开发策略,那么估算基于增加的已定义需求。或演进的开发策略,那么估算基于增加的已定义需求。 25THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 规模估算输入规模估算输入 : 软件需求说明书(软件需求说明书(SRS) 历史规模数据历史规模数据 *软件产品规模估算应该主要基于历史数据和经验。软件产品规模估算应该主要基于历史数据和经验。历史规模数据可以从组织软件过程数据库中找到。而历史规模数据可以从组织软件过程数据库中找到。而且,两个或更多的具有类似经验的软件工程师应该开且,两个或更多的具有类似经验的软件工程师应该开展自顶向下展自顶向下/自底向上规模估算,步骤如下:自底向上规模估算,步骤如下:26THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 基于定义每个计算机软件模块的需求开发系统的高级架构图基于定义每个计算机软件模块的需求开发系统的高级架构图 基于每个计算机软件模块开发功能基于每个计算机软件模块开发功能WBS 根据相似项目经验和历史数据,为每一个软件模块手工估算出最底层(自根据相似项目经验和历史数据,为每一个软件模块手工估算出最底层(自底向上)可能详细的代码行或功能点,规模估算工具可以作为第二个输入底向上)可能详细的代码行或功能点,规模估算工具可以作为第二个输入 估算出期望的规模加上标准偏差,即:规模的最低值和最高值来反映名义估算出期望的规模加上标准偏差,即:规模的最低值和最高值来反映名义值的不确定性。在项目的早期阶段,最低和最高估算结果之间的范围可能值的不确定性。在项目的早期阶段,最低和最高估算结果之间的范围可能是是30-50%,例如:概念阶段。如果缺乏经验或有较高的技术风险,范围,例如:概念阶段。如果缺乏经验或有较高的技术风险,范围将会更大将会更大 具有类似经验的软件工程师应该评审并优化估算结果直至达成一致意见。具有类似经验的软件工程师应该评审并优化估算结果直至达成一致意见。经验表明,规模估算经常偏低,故最低规模估算结果应该给与特别审查经验表明,规模估算经常偏低,故最低规模估算结果应该给与特别审查27THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目规模估算软件项目规模估算 LOC估算法估算法 代码行可以分为无注释的源代码行(代码行可以分为无注释的源代码行(NCLOC, Non-Commented Source Lines Of Code)和注释的源代码行()和注释的源代码行(CLOC: Commented Source Lines Of Code),源代码的总行数),源代码的总行数LOC即即为为NCLOC与与CLOC之和之和 FP估算法估算法 功能点度量是在需求分析阶段基于系统功能的一种规模功能点度量是在需求分析阶段基于系统功能的一种规模估计方法,该方法通过研究初始应用需求来确定各种输入、输出、估计方法,该方法通过研究初始应用需求来确定各种输入、输出、查询、外部文件和内部文件的数目,从而确定功能点数量查询、外部文件和内部文件的数目,从而确定功能点数量28THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目规模估算软件项目规模估算 规模的单位规模的单位LOC ( Lines of Code)源代码程序长度的测量源代码程序长度的测量FP (Function Point)用系统的功能数量来测量用系统的功能数量来测量人月人月人天人天人年人年29THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 功能点功能点FPs估算估算(特别适合(特别适合MIS系统)系统) 面向功能的软件度量是对软件和软件开发过程的间接面向功能的软件度量是对软件和软件开发过程的间接度量。面向功能度量的关注点在于程序的度量。面向功能度量的关注点在于程序的“功能性功能性”和和“实用性实用性”,而不是对,而不是对LOC计数。一种典型的生产计数。一种典型的生产率度量法叫做功能点度量,该方法利用软件信息域中率度量法叫做功能点度量,该方法利用软件信息域中的一些计数度量和软件复杂性估计的经验关系式而导的一些计数度量和软件复杂性估计的经验关系式而导出功能点出功能点FPs(Function Points)。)。30THE SCHOOL OF SOFTWARE ENGINEERING OF HUST功能点估算信息域特征的确定:功能点估算信息域特征的确定: 面向功能的软件度量是对软件和软件开发过程的间接面向功能的软件度量是对软件和软件开发过程的间接度量。面向功能度量的关注点在于程序的度量。面向功能度量的关注点在于程序的“功能性功能性”和和“实用性实用性”,而不是对,而不是对LOC计数。一种典型的生产计数。一种典型的生产率度量法叫做功能点度量,该方法利用软件信息域中率度量法叫做功能点度量,该方法利用软件信息域中的一些计数度量和软件复杂性估计的经验关系式而导的一些计数度量和软件复杂性估计的经验关系式而导出功能点出功能点FPs(Function Points)。)。 功能点通过填写表功能点通过填写表1所示的表格来计算。首先确定五所示的表格来计算。首先确定五个信息域的特征,并在表格中相应位置给出计数。信个信息域的特征,并在表格中相应位置给出计数。信息域的值以如下方式定义:息域的值以如下方式定义: 用户输入数:各个用户输入是面向不同应用的输入用户输入数:各个用户输入是面向不同应用的输入数据,对它们都要进行计数。输入数据应有别于查询数据,对它们都要进行计数。输入数据应有别于查询数据,它们应分别计数。数据,它们应分别计数。31THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 用户输出数:各个用户输出是为用户提供的面向应用的输出用户输出数:各个用户输出是为用户提供的面向应用的输出信息,它们均应计数。这里的输出是指报告,屏幕信息,错信息,它们均应计数。这里的输出是指报告,屏幕信息,错误信息等,在报告中的各数据项不应再分别计数。误信息等,在报告中的各数据项不应再分别计数。 用户查询数:查询是一种联机输入,它导致软件以联机输出用户查询数:查询是一种联机输入,它导致软件以联机输出的方式生成某种即时的响应。每一个不同的查询都要计数。的方式生成某种即时的响应。每一个不同的查询都要计数。 文件数:每一个逻辑主文件都应计数。这里的逻辑主文件,文件数:每一个逻辑主文件都应计数。这里的逻辑主文件,是指逻辑上的一组数据,它们可以是一个大的数据库的一部是指逻辑上的一组数据,它们可以是一个大的数据库的一部分,也可以是一个单独的文件分,也可以是一个单独的文件 外部接口数:对所有被用来将信息传送到另一个系统中的机外部接口数:对所有被用来将信息传送到另一个系统中的机器可读写的接口器可读写的接口(即磁带或磁盘上的数据文件即磁带或磁盘上的数据文件)均应计数。均应计数。32THE SCHOOL OF SOFTWARE ENGINEERING OF HUST预测性对象点预测性对象点(Predictive Object Points)估算:估算: 预测性对象点是特意为面向对象软件设计的,是通过预测性对象点是特意为面向对象软件设计的,是通过系统计算面向对象的特征进行度量。系统计算面向对象的特征进行度量。 POPs方法的核心是每类加权方法数(方法的核心是每类加权方法数(Weighted Methods per Class WMC)。这种方法测量每个顶)。这种方法测量每个顶层类(或者说,每个在用户的视野中清楚的对象)并层类(或者说,每个在用户的视野中清楚的对象)并且根据类的行为(方法)类型不同进行加权。一旦得且根据类的行为(方法)类型不同进行加权。一旦得到到WMC的值,的值,POPs方法将把它和有关按类分对象方法将把它和有关按类分对象组的信息和对象类之间的关系进行联合计算。组的信息和对象类之间的关系进行联合计算。 (自己去查)(自己去查)33THE SCHOOL OF SOFTWARE ENGINEERING OF HUST6.5 软件项目进度估算软件项目进度估算1估算的准备知识估算的准备知识 软件项目分阶段交付软件项目分阶段交付 进度安排的整体过程进度安排的整体过程 进度中的并行性进度中的并行性 活动清单活动清单 软件项目的网络图软件项目的网络图 进度安排的方法进度安排的方法 34THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目分阶段交付软件项目分阶段交付35THE SCHOOL OF SOFTWARE ENGINEERING OF HUST进度安排的整体过程进度安排的整体过程 软件项目工作量经验数据软件项目工作量经验数据36THE SCHOOL OF SOFTWARE ENGINEERING OF HUST进度中的并行性进度中的并行性 软件过程中可执行的并行过程软件过程中可执行的并行过程37THE SCHOOL OF SOFTWARE ENGINEERING OF HUST 活动清单活动清单38THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目的网络图软件项目的网络图软件项目的网络图 39THE SCHOOL OF SOFTWARE ENGINEERING OF HUST进度安排的方法进度安排的方法 甘特图40THE SCHOOL OF SOFTWARE ENGINEERING OF HUST2.项目进度管理的过程项目进度管理的过程41THE SCHOOL OF SOFTWARE ENGINEERING OF HUST6.6 软件项目进度计划软件项目进度计划 进度计划定义进度计划定义 进度是对执行的活动和里程碑制定的工作计划日期表。它决定是进度是对执行的活动和里程碑制定的工作计划日期表。它决定是否达到预期目的,它是跟踪和沟通项目进展状态的依据,也是跟踪变否达到预期目的,它是跟踪和沟通项目进展状态的依据,也是跟踪变更对项目影响的依据。更对项目影响的依据。 软件活动定义是一个过程,它涉及确认和描述一些特定的活动软件活动定义是一个过程,它涉及确认和描述一些特定的活动 为了进一步制定切实可行的进度计划,必须对活动(任务)进行适当为了进一步制定切实可行的进度计划,必须对活动(任务)进行适当的顺序安排的顺序安排 按时完成项目是项目经理最大的挑战之一;时间是项目规划中灵活性按时完成项目是项目经理最大的挑战之一;时间是项目规划中灵活性最小的因素最小的因素 进度问题是项目冲突的主要原因,尤其在项目的后期进度问题是项目冲突的主要原因,尤其在项目的后期42THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 项目进度(时间)管理过程项目进度(时间)管理过程活动定义活动定义(Activity definition)活动排序活动排序(Activity sequencing)活动历时估计活动历时估计(Activity duration estimating)制定进度计划制定进度计划(Schedule development)进度控制进度控制(Schedule control)- -项目跟踪项目跟踪43THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 活动定义活动定义(Activity definition)确定为完成项目的各个交付成果所必须进行的诸项具体活动确定为完成项目的各个交付成果所必须进行的诸项具体活动完成完成WBS中的细目和子细目中的细目和子细目 活动排序活动排序(Activity sequencing)对活动进行适当的顺序安排对活动进行适当的顺序安排. .项目各项活动之间存在相互联系与相互依赖关系项目各项活动之间存在相互联系与相互依赖关系根据这些关系安排各项活动的先后顺序根据这些关系安排各项活动的先后顺序44THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 任务任务( (活动活动) )之间的关系之间的关系 进度管理图示进度管理图示网络图、甘特图、里程碑图、资源图网络图、甘特图、里程碑图、资源图开始开始-结束结束ABAB结束结束-开始开始结束结束-结束结束ABAB开始开始-开始开始45THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 网络图网络图 展示项目中的各个活动以及活动之间的逻辑关系;展示项目中的各个活动以及活动之间的逻辑关系; 网络图是活网络图是活动排序的一个输出;网络图可以表达活动的历时动排序的一个输出;网络图可以表达活动的历时常用网络图常用网络图 PDM: :节点法节点法 ( (单代号单代号) )网络图、网络图、ADM: :箭线法箭线法 ( (双代号双代号) )网络图、网络图、CDM: :条件箭线图法条件箭线图法在网络图中一个活动用一个方框、节点或者其他方式表示在网络图中一个活动用一个方框、节点或者其他方式表示每一个活动被各种关系线相连接着每一个活动被各种关系线相连接着将项目中的各个活动的逻辑关系表示出来将项目中的各个活动的逻辑关系表示出来网络图开始于一个任务、工作、活动、里程碑网络图开始于一个任务、工作、活动、里程碑网络图结束于一个网络图结束于一个 任务、工作、活动、里程碑任务、工作、活动、里程碑有些活动前置任务或者后置任务有些活动前置任务或者后置任务46THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 PDM(Precedence diagram )构成构成PDM网络图的基本特点是节点网络图的基本特点是节点(Box)节点节点(Box)表示活动表示活动( (工序工序, ,工作工作) )用箭线表示各活动用箭线表示各活动( (工序工序, ,工作工作) )之间的逻辑关系之间的逻辑关系. .可以方便的表示活动之间的各种逻辑关系可以方便的表示活动之间的各种逻辑关系没有时标没有时标在软件项目中在软件项目中PDM比比ADM更通用更通用47THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 PDM网络图的关系网络图的关系开始开始活动活动1 1活动活动3 3活动活动2 2结束结束48THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 软件项目的软件项目的PDM图例图例开开始始需求需求获取获取项目项目规划规划需求需求确认确认项目项目计划计划评审评审总体总体设计设计详细详细设计设计系统系统测试测试集成集成测试测试编编码码结结束束49THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 ADM( Arrow diagram )ADM也称为也称为AOA (activity-on-arrow)或者或者双代号双代号项目网络项目网络图图在在ADM网络图中网络图中, ,箭线表示活动箭线表示活动( (工序工序 工作工作) )节点节点Node(圆圈(圆圈: :circle)表示前一道工序的结束)表示前一道工序的结束, ,同时也表示同时也表示后一道工序的开始后一道工序的开始只适合表示结束只适合表示结束- -开始的逻辑关系开始的逻辑关系可以有时标可以有时标50THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 ADM图例图例总体设计总体设计需求确认需求确认需求获需求获取取系统系统测试测试集成集成测试测试编码编码详细设详细设计计计划评审计划评审项目规划项目规划1 12 23 36 69 98 87 75 54 451THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 CDM(condition diagram )CDM网络图也称为条件箭头图法网络图网络图也称为条件箭头图法网络图CDM允许活动序列相互循环与反馈允许活动序列相互循环与反馈从而在绘制网络图的过程中会形成许多条件分支从而在绘制网络图的过程中会形成许多条件分支而在而在PDM、ADM中是绝对不允许的中是绝对不允许的52THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 甘特图甘特图显示基本的任务信息显示基本的任务信息可以查看任务的工期、开始时间和结束时间以及资源的信息可以查看任务的工期、开始时间和结束时间以及资源的信息只有时标,没有活动的逻辑关系只有时标,没有活动的逻辑关系有两种表示方法(棒状、三角形)有两种表示方法(棒状、三角形)53THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 甘特图甘特图- -实例实例54THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 里程碑图里程碑图 里程碑显示项目进展中的重大工作完成里程碑显示项目进展中的重大工作完成 里程碑不同于活动里程碑不同于活动活动是需要消耗资源的活动是需要消耗资源的里程碑仅仅表示事件的标记里程碑仅仅表示事件的标记SpecificationDesign08/9811/98Testing02/995/99AvailableCoding9/0011/00Announce里程碑图示里程碑图示55THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 资源图资源图56THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 编制项目进度计划编制项目进度计划确定项目的所有活动及其开始和结束时间确定项目的所有活动及其开始和结束时间监控项目实施的基础,监控项目实施的基础,它是项目管理的基准它是项目管理的基准计划是三维的,考虑时间,费用和资源计划是三维的,考虑时间,费用和资源 编制项目进度计划步骤编制项目进度计划步骤进度编制进度编制资源调整资源调整成本预算成本预算计划优化调整计划优化调整形成基线计划形成基线计划57THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 进度编制的基本方法进度编制的基本方法 关键路径法关键路径法正推法正推法逆推法逆推法 时间压缩法时间压缩法赶工(赶工(Crash)快速跟进(快速跟进(Fast tracking: :搭接)搭接) 资源调整尝试法资源调整尝试法 58THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划关键路径法关键路径法 关键路径法关键路径法(CPM: Critical Path Method)CPM是根据指定的网络顺序逻辑关系和单一的历时估算,计算每是根据指定的网络顺序逻辑关系和单一的历时估算,计算每一个活动的单一的、确定的最早和最迟开始和完成日期一个活动的单一的、确定的最早和最迟开始和完成日期计算网络图中完成时间最长的路径计算网络图中完成时间最长的路径计算浮动时间计算浮动时间59THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 进度编制的基本术语(进度时间参数)进度编制的基本术语(进度时间参数)最早开始时间最早开始时间( (Early start) )最晚开始时间最晚开始时间( (Late start) )最早完成时间最早完成时间( (Early finish) )最晚完成时间最晚完成时间( (Late finish) )自由浮动(自由浮动(Free Float)总浮动(总浮动( Total Float)超前超前( (Lead) )滞后滞后( (Lag) )60THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 浮动时间浮动时间( (Float)浮动时间是一个活动的机动性浮动时间是一个活动的机动性, ,它是一个活动在不影响其它活动或者它是一个活动在不影响其它活动或者项目完成的情况下可以延迟的时间量项目完成的情况下可以延迟的时间量Float00:时间安排比较合理:时间安排比较合理Float=0=0:比较紧张:比较紧张Float0C-G-HCp Path:18Finish70THE SCHOOL OF SOFTWARE ENGINEERING OF HUST根据所示的网络图,回答下列问题:根据所示的网络图,回答下列问题:(1)指出关键路径,并确定项目的工期;)指出关键路径,并确定项目的工期;(2)计算活动)计算活动I的最早开工时间和最早完工时间;的最早开工时间和最早完工时间;(3)计算活动)计算活动B的最迟开工时间和最迟完工时间;的最迟开工时间和最迟完工时间;(4)计算活动)计算活动D的自由时差。的自由时差。(设活动(设活动A、B、C的最早开工时间的最早开工时间ES=0,活动活动L的最迟完工时间的最迟完工时间LF=27)71THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划检查网络图检查网络图 确保网络图完整确保网络图完整是否正确标示了是否正确标示了critical path? ?是否有哪个任务存在很大的是否有哪个任务存在很大的float,需要重新规划,需要重新规划是否有不合理的空闲时间是否有不合理的空闲时间 熟悉并分析网络图熟悉并分析网络图critical path上有什么风险?上有什么风险?Float有多大?有多大?那些任务有那种类型的那些任务有那种类型的Float。 应该确保你的目标被满足应该确保你的目标被满足是否需要增加里程碑是否需要增加里程碑那些任务有提交物那些任务有提交物工作可以在期望的时间内完成吗?工作可以在期望的时间内完成吗?提交物可以在规定的时间内完成吗?提交物可以在规定的时间内完成吗?72THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划时间压缩法时间压缩法 时间压缩法时间压缩法 时间压缩法是在不改变项目范围时间压缩法是在不改变项目范围的前提下缩短项目工期的方法的前提下缩短项目工期的方法 应急法应急法-赶工(赶工(CrashCrash)赶工也称为时间赶工也称为时间- -成本平衡方法成本平衡方法是在不改变活动的前提下,通过是在不改变活动的前提下,通过压缩某一个或者多个活动的时间压缩某一个或者多个活动的时间来达到缩短整个项目工期的目的来达到缩短整个项目工期的目的是在最小相关成本增加的条件下,是在最小相关成本增加的条件下,压缩关键路经上的关键活动历时压缩关键路经上的关键活动历时的方法的方法压缩角度,越小越压缩角度,越小越好好追加成本追加成本73THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 进度压缩单位成本计算方法进度压缩单位成本计算方法进度压缩单位成本进度压缩单位成本= =(压缩成本(压缩成本- -正常成本)正常成本)/(/(正常进度正常进度- -压缩进度压缩进度) )例如:例如: 任务任务A:A:正常进度正常进度7 7周周, ,成本成本5 5万;压缩到万;压缩到5 5周的成本是周的成本是6.26.2万万 进度压缩单位成本进度压缩单位成本=(6.2-5)/(7-5)=6000=(6.2-5)/(7-5)=6000元元/ /周周 如果压缩到如果压缩到6 6周的成本是:周的成本是:5.65.6万万74THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 平行作业法平行作业法-快速跟进(快速跟进(Fast tracking: :搭接)搭接) 改变活动间的逻辑关系,并行开展活动项目管理项目管理:100需求需求:10设计设计:5任务任务设计设计:5时间时间75THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 任务超前任务超前(Lead)(Lead) 举例:举例:A完成之前完成之前3 3天天B开始开始 作用:作用: 1)解决任务的搭接)解决任务的搭接 2)对任务可以进行合理的拆分)对任务可以进行合理的拆分 3)缩短项目工期)缩短项目工期活动活动A A活动活动B B结束结束-开始开始Lead=3Lead=376THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划资源调整尝试法资源调整尝试法 资源调整尝试法资源调整尝试法资源优化配置资源优化配置通过调整进度计划,形成平稳连续的资源需求通过调整进度计划,形成平稳连续的资源需求最有效的利用资源最有效的利用资源使资源闲置的时间最小化使资源闲置的时间最小化尽量避免超出资源能力尽量避免超出资源能力方法方法资源平衡,维持工期不变,使资源强度尽可能平衡资源平衡,维持工期不变,使资源强度尽可能平衡在满足资源约束条件下,使工期最短在满足资源约束条件下,使工期最短 将资源从非关键活动转到关键活动将资源从非关键活动转到关键活动 逆向资源分配法逆向资源分配法77THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 资源平衡法资源平衡法78THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 项目成本预算项目成本预算 分配项目成本,进行成本预算分配项目成本,进行成本预算 项目的预算成本组成:项目的预算成本组成:资源成本资源成本分配给项目中资源的成本分配给项目中资源的成本固定成本固定成本是一种不因任务工期或资源完成工时的变化而变化的成本是一种不因任务工期或资源完成工时的变化而变化的成本 成本预算的作用成本预算的作用确保各项工作获得所需的资源确保各项工作获得所需的资源是实际成本的一种控制机制是实际成本的一种控制机制为项目管理者控制项目提供一把尺子为项目管理者控制项目提供一把尺子79THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 分配项目成本包括三种情况分配项目成本包括三种情况分配资源成本分配资源成本分配固定资源成本分配固定资源成本 例如:需要的硬件设备例如:需要的硬件设备分配固定成本分配固定成本 例如:培训任务例如:培训任务80THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 调整计划调整计划调整资源调整资源, ,解决资源冲突解决资源冲突调整进度调整进度, ,优化项目优化项目, ,缩短工期缩短工期调整项目成本预算调整项目成本预算, ,以便减少项目费用以便减少项目费用 解决资源冲突的方法解决资源冲突的方法资源调配资源调配推迟资源开始工作时间推迟资源开始工作时间增加资源总量增加资源总量替换资源替换资源设置资源加班时间设置资源加班时间调整资源日历调整资源日历只使用资源的一部分工作时间只使用资源的一部分工作时间81THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划 优化进度,缩短工期优化进度,缩短工期分解关键任务分解关键任务给任务增加资源给任务增加资源缩减关键任务的工期缩减关键任务的工期重叠关键任务重叠关键任务设置日历增加工作时间设置日历增加工作时间通过减少工时来缩减任务工期通过减少工时来缩减任务工期通过分配加班工时来缩短关键任务通过分配加班工时来缩短关键任务82THE SCHOOL OF SOFTWARE ENGINEERING OF HUST软件项目进度计划软件项目进度计划调整项目成本预算调整项目成本预算 降低资源的费率降低资源的费率 减少任务的工时减少任务的工时 减少资源的分配单位减少资源的分配单位 减少加班减少加班 替换资源替换资源 减少任务的固定成本减少任务的固定成本 删除任务删除任务83THE SCHOOL OF SOFTWARE ENGINEERING OF HUST作为一个企业,没有了利润,就没有了血液,作为一个企业,没有了利润,就没有了血液,而利润的提高,根本的出路在于降低成本;而利润的提高,根本的出路在于降低成本;作为一个项目,没有了效益,就没有了市场,作为一个项目,没有了效益,就没有了市场,而效益的产生,关键在于有效的成本管理。而效益的产生,关键在于有效的成本管理。驾驭驾驭成本就是要掌握、控制和管理成本。成本就是要掌握、控制和管理成本。P.1486.4 6.4 软件项目成本管理软件项目成本管理84THE SCHOOL OF SOFTWARE ENGINEERING OF HUST学习完本节后,应当掌握如下知识:n项目成本与成本管理的概念。n影响IT项目成本的因素。n项目成本估算、成本预算与成本控制的方法。n挣值分析方法与成本效益分析方法。n成本管理中应该注意的问题。P.14885THE SCHOOL OF SOFTWARE ENGINEERING OF HUSTIBM董事长郭士纳指出:董事长郭士纳指出:在过去的在过去的10年中年中 , IT行行业中成长势头最为强劲的业中成长势头最为强劲的3大公司大公司 IBM、戴尔和英特、戴尔和英特尔,都拥有两个共同的特点:尔,都拥有两个共同的特点:n把价格把价格(营业收入)(营业收入)作为一个战略性竞争武器;作为一个战略性竞争武器;n能够很好地管理所有的成本,包括税收、制造能够很好地管理所有的成本,包括税收、制造和配送。和配送。人们已经认识到企业利润的获取,与项目成人们已经认识到企业利润的获取,与项目成本的管理密切相关,不计成本的组织是没有发本的管理密切相关,不计成本的组织是没有发展前途的,不计成本的项目也是没有生命力的。展前途的,不计成本的项目也是没有生命力的。P.14886THE SCHOOL OF SOFTWARE ENGINEERING OF HUST成本管理存在的问题成本管理存在的问题n从小开始的教育就没有注意灌输成本的从小开始的教育就没有注意灌输成本的概念概念。n对对IT项目的原始成本估算不准确。项目的原始成本估算不准确。n项目组成员对成本估算和控制不相关。项目组成员对成本估算和控制不相关。n项目组成员对成本的理解和把握不准确。项目组成员对成本的理解和把握不准确。n认为项目成本增长和失败将不可避免的。认为项目成本增长和失败将不可避免的。 在头脑里所形成的,反映对在头脑里所形成的,反映对象的本质属性的思维形式象的本质属性的思维形式。6.4.1成本管理基础知识成本管理基础知识87THE SCHOOL OF SOFTWARE ENGINEERING OF HUST项目成本与项目成本管理项目成本与项目成本管理P.149项目成本是指为完成项目成本是指为完成项目目标而付出的费项目目标而付出的费用和耗费的资源。用和耗费的资源。1)项目成本的定义)项目成本的定义88THE SCHOOL OF SOFTWARE ENGINEERING OF HUSTP.149项目的成本特征有如下表现形式:项目的成本特征有如下表现形式:n项目成本项目成本包括项目决策和定义成本、项目获取成本、项目设包括项目决策和定义成本、项目获取成本、项目设计成本、项目实施成本等。项目实施成本是项目总成本的主要计成本、项目实施成本等。项目实施成本是项目总成本的主要组成部分。组成部分。nIT项目成本项目成本包括硬件成本、软件成本、项目集成成本、人包括硬件成本、软件成本、项目集成成本、人力资源成本、场所成本、外包服务成本等。力资源成本、场所成本、外包服务成本等。n软件项目成本软件项目成本包括开发生产成本(分析设计成本、系统实包括开发生产成本(分析设计成本、系统实施成本)和运行维护成本(专业培训成本、系统运行成本、维施成本)和运行维护成本(专业培训成本、系统运行成本、维护改进成本和行政管理成本)等。护改进成本和行政管理成本)等。89THE SCHOOL OF SOFTWARE ENGINEERING OF HUSTP.150项目成本管理就是在整个项目的实施过程项目成本管理就是在整个项目的实施过程中,为确保项目在批准的预算条件下尽可中,为确保项目在批准的预算条件下尽可能保质按期完成,而对所需的各个过程进能保质按期完成,而对所需的各个过程进行管理与控制。行管理与控制。u 项目经理必须确信他们的项目有恰当的项目经理必须确信他们的项目有恰当的定义、精确的时间和成本估算、以及他们定义、精确的时间和成本估算、以及他们参与同意的和切合实际的预算参与同意的和切合实际的预算。 2)成本管理的定义)成本管理的定义90THE SCHOOL OF SOFTWARE ENGINEERING OF HUSTP.1503)成本管理过程)成本管理过程项目成本管理过程图项目成本管理过程图91THE SCHOOL OF SOFTWARE ENGINEERING OF HUSTP.150n成本估算成本估算:对完成项目所需成本的估计和计划,是对完成项目所需成本的估计和计划,是项目计划中的一个重要的、关键的、敏感的部分。项目计划中的一个重要的、关键的、敏感的部分。n成本预算:成本预算:把估算的总成本分配到项目的各个工作把估算的总成本分配到项目的各个工作细目,建立成本基准计划以衡量项目绩效。细目,建立成本基准计划以衡
展开阅读全文