第四讲软件项目时间管理4.1软件项目时间管理概述美国项目管理学院(PMBOK2004)定义的项目时间管理过程包括以下几个过程:活动定义——确定为产生项目各种可交付成果而必须进行的具体计划活动。活动排序——确定各计划活动之间的依赖关系,并形成文件。活动资源估算——估算完成各计划活动所需资源的种类与数量。活动持续时间估算——估算完成各计划活动所需工时单位数。制定进度表——分析活动顺序、活动持续时间、资源要求,以及进度制约因素,从而制定项目进度表。进度控制——控制项目进度表变更。表4-1PMBOK2004对项目时间管理的定义时间管理一般包括相互影响的三个环节:进度计划是时间管理的基础。时间管理是通过项目的动态监控实现的。项目时间管理是随着项目的进行而不断进行的,是一个动态过程,也是一个循环进行的过程。对比分析并采取必要的措施是时间管理的关键。4.2软件项目时间管理的关键因素分析为了有效进行时间管理,必须对影响进度的因素进行分析,以便事先采取措施,尽量缩小实际进度与计划进度的偏差,实现项目的主动控制与协调。在项目进行过程中,很多因素影响项目工期目标的实现,这些因素可称之为干扰因素。影响项目进度目标实现的干扰因素,可以归纳为以下几个方面:人力资源因素材料、设备因素方法、工艺因素资金因素环境因素4.3活动定义4.3.1工作结构分解4.3.2软件生命周期模型活动定义是一个过程,它涉及确认和描述一些特定的活动,完成了这些活动意味着完成了WBS结构中的项目细目和子细目。通过定义活动过程可使项目目标体现出来。软件项目的活动是软件项目为产生各个可交付成果(如代码)所必须进行的具体活动。活动定义的目的是将软件项目工作分解为更小、更易管理的工作包,也叫活动或任务。这些小的活动应该是能够保障完成交付软件产品的可实施的详细任务。4.3.1工作结构分解工作分解结构WBS(WorkBreakdownStructure)将软件项目逐层分解成一个个可执行的任务单元,这些任务单元既构成了整个项目的工作范围,又是进度计划、人员分配和成本计划的基础。软件项目的WBS以可交付软件产品为导向对软件项目的过程要素进行的分组,它归纳和定义了项目的整个工作范围。WBS可以由树形的层次结构图或者行首缩进的表格表示,每下降一层代表对项目工作的更详细定义。图4-3典型软件项目WBS图4-4WBS的编制过程4.3.2软件生命周期模型软件生命周期是软件从产生直到淘汰的生命过程,周期内一般包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。图4-5瀑布模型生命周期开发流程图4.4活动排序4.4.1甘特图4.4.2网络图4.4.1甘特图甘特图也称为线条图或横道图,它是以横线来表示每项活动的起止时间。甘特图的优点是简单、明了、直观,易于编制,因此到目前为止仍然是小型项目中常用的工具。即使在大型工程项目中,它也是高级管理层了解全局、基层安排进度时有用的工具。图4-15简单的甘特图图4-16甘特图4.4.2网络图网络图将任务计划和进度安排分开的职能是甘特图所没有的。因此,一旦甘项活动的时间延误,甘特图整体将面临大变动,而网络图则不然。网络图分为前导图法和箭线图法2种。网络图中的工作是指按需要的粗细程度将计划任务划分而成的、消耗时间或同时也消耗资源的一个子项目或子任务。工作可以是软件项目,也可以是软件项目中的模块工作。前导图法(PrecedenceDiagrammingMethod,PDM)前导图法也称为单代号绘图法,是指按工作先后顺序把每项工作作为一个方块,按照先后顺序用带箭的界限图表示。单代号工作位于节点上,也就是说每一个节点表示一个工作,用箭头表示工作的先后顺序和相互关系。图4-17单代号网络图图4-18项目活动之间的逻辑关系图箭线图法(ArrowDiagrammingMethod,ADM)箭线图法也称双代号网络图法,是一种利用箭线代表活动,而在节点处将活动连接起来表示依赖关系的编制项目网络图的方法。双代号网络图与单代号网络图的区别是后者把工作放在结点上。双代号图是工作用界限来表示,而节点反映的是工作的起始和结束。图4-19双代号网络图图4-20箭线图法常见错误4.5活动资源估算和历时估算4.5.1工作量和工期的估计4.5.2计划评审技术(PERT)4.5.1工作量和工期的估计软件项目的工作量和工期的估算历来是比较复杂的事,因为软件本身的复杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的规模估算往往和实际情况相差甚远。因此,估算错误已被列入软件项目失败的四大原因之一。前面讲过,进度的控制始于工作量的估算,工作量估算合理,工期和资源投入自然也就合理,反之,一个错误的工作量的估计会导致一个不现实的计划产生,以至于时间管理失去意义。LOC软件开发项目通常用(LineofCode,LOC)衡量项目规模,LOC指所有的可执行的源代码行数,包括可交付的工作控制语言(JobControlLanguage,JCL)语句、数据定义、数据类型声明、等价声明、输入/输出格式声明等。项目经理可以根据对历史项目的审计来核算组织的单行代码价值。例题某软件公司统计发现该公司每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。某项目的源文件大小为3.75M,则可估计该项目源代码大约为15万行,该项目累计投入工作量为240人月,每人月成本为10000元(包括人均工资、福利、办公成本等),则该项目中1LOC的价值为:(240×10000)/150000=16元/LOC改项目的人月均代码行数为:150000/240=625LOC/人月Delphi法Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来,新技术与特定程序之间的差别,但专家“专”的程度及对项目的理解程度是工作中的难点,尽管Delphi技术可以减轻这种偏差,专家评估技术在评定一个新软件实际成本时用得不多,但是,这种方式对决定其它模型的输入时特别有用。Delphi法鼓励参加者就问题相互讨论。该技术,要求有多种软件相关经验人的参与,互相说服对方。图4-21Delphi法规模估计迭代法样例功能点估计法功能点测量是在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。通常的步骤是:计算输入,输出,查询,主控文件,和接口需求的数目。将这些数据进行加权乘。下表为一个典型的权值表。估计者根据对复杂度的判断,总数可以用+25%、0、或-25%调整。类比法类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。类比法基本步骤:整理出项目功能列表和实现每个功能的代码行;标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方;通过步骤①和②得出各个功能的估计值;产生规模估计。软件项目中用类比法,往往还要解决可重用代码的估算问题。估计可重用代码量的最好办法就是由程序员或系统分析员详细地考查已存在的代码,估算出新项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分比以及需重新测试的代码百分比。根据这三个百分比,可用下面的计算公式计算等价新代码行:等价代码行=[(重新设计%+重新编码%+重新测试%)/3]×已有代码行比如:有10,000行代码,假定30%需要重新设计,50%需要重新编码,70%需要重新测试,那么其等价的代码行可以计算为:[(30%+50%+70%)/3]×10,000=5,000等价代码行。即重用这10000代码相当于编写5000代码行的工作量。4.5.2计划评审技术(PERT)计划评审技术(ProgramEvaluationanReviewTechnique,PERT)是50年代末美国海军部开发北极星潜艇系统时为协调3000多个承包商和研究机构而开发的,其理论基础是假设项目持续时间以及整个项目完成时间是随机的,且服从某种概率分布。PERT可以估计整个项目在某个时间内完成的概率。如果对一项工作估计缺乏足够的信息,或者说考虑到未来环境的变化,它的时间不能一次进行,这时可以采用三点估计法。图4-22单项活动的PERT所需时间估算活动的时间估计PERT对各个项目活动的完成时间按三种不同情况估计:乐观时间(optimistictime)――任何事情都顺利的情况,完成某项工作的时间。最可能时间(mostlikelytime)――正常情况下,完成某项工作的时间。悲观时间(pessimistictime)――最不利的情况,完成某项工作的时间。64iiiibmat36)(22iiiab假定三个估计服从β分布,由此可算出每个活动的期望ti:其中ai表示第i项活动的乐观时间,mi表示第i项活动的最可能时间,bi表示第i项活动的悲观时间。根据β分布的方差计算方法,第i项活动的持续时间方差为:例如,某银行OA系统的建设可分解为需求分析、设计编码、测试、安装部署等四个活动,各个活动顺次进行,没有时间上的重叠。116151147=++=需求分析t778.13671522=)-(=需求分析2163220414=++=设计编码t936143222=)-(=设计编码769745=++=测试t101.0365922=)-(=测试126151345=++=安装部署t778.23651522=)-(=安装部署则各活动的期望工期和方差为:项目周期估算657.13778.2101.09778.122ia511272111tiT天696.3657.132PERT认为整个项目的完成时间是各个活动完成时间之和,且服从正态分布。整个项目完成的时间t的数学期望T和方差σ2分别等于:标准差为图4-24项目的工期正态分布图4.6进度计划编制4.6.1进度计划的步骤和方法4.6.2关键路线法4.6.1进度计划的步骤和方法软件项目中,进度计划的制定包括了项目描述、项目分解与活动界定、工作描述、项目组织和工作责任分配、工作排序、计算工作量、估计工作持续时间、绘制网络图、进度安排等活动图4-25进度计划制定的步骤4.6.2关键路线法关键路线法(CriticalPathMethod,CPM)是借助网络图和各活动所需时间(估计值),计算每一活动的最早或最迟开始和结束时间。CPM法的关键是计算总时差,这样可决定哪一活动有最小时间弹性。CPM算法也在其它类型的数学分析中得到应用。CPM算法的核心思想是将工作分解结构(WBS)分解的活动按逻辑关系加以整合,统筹计算出整个项目的工期和关键路径。项目活动间存在四种依赖关系:结束一开始(FS)关系、结束一结束(FF)关系、开始一开始(SS)关系、开始一结束(SF)关系。每个活动有四个和时间相关的参数:最早开始时间(ES):某项活动能够开始的最早时间。最早结束时间(EF):某项活动能够完成的最早时间。EF=ES+工期估计最迟结束时间(LF):为了使项目按时完成,某项工作必须完成的最迟时间。最迟开始时间(LS):为了使项目按时完成,某项工作必须开始的最迟时间。LS=LF-工期估计图4-26软件项目CPM图示例4.7进度控制4.7.1进度控制工作要点4.7.2项目进度控制措施4.7.3几种常见的项目进展报告4.7.1进度控制工作要点在项目实施过程中,必须定期对项目的进展进行监测,找出偏离计划之处,将其反馈到有关的控制子过程中。项目计划中的某些东西在付诸实施后才会发现无法实现。即使勉强实现,也要付出很高的代价。遇到这种情况,就必须对项目计划进行修改,或重新规划。在项目实施过程