信息系统建设的项目管理.ppt
第五章信息系统建设的项目管理,一、信息系统与项目管理,二、信息系统项目的计划、费用与进度管理,三、信息系统项目的人员管理,四、信息系统建设的质量管理,本节内容:,一、信息系统与项目管理,1、项目的定义与特点,2、项目管理的定义与特点,3、信息系统项目的特点,通俗地讲,项目就是在一定的资源约束下完成既定目标的一次性任务。这个定义包含三层意思:一定资源约束、一定目标、一次性任务。这里的资源包括时间资源、经费资源、人力资源、物质资源,比如工具、设备等,项目具有目的性。项目具有寿命周期。项目具有一定的独特性。每个项目都有客户。项目组织具有临时性和开放性。项目具有较强的冲突性。项目包含一定的不确定性。,1、项目的定义与特点,2、项目管理的定义与特点,项目管理是通过项目经理和项目组织的努力,运用系统理论和方法对项目及其资源进行计划、组织、协调、控制,旨在实现项目的特定目标的管理方法体系。,如果将时间从资源中单列出来,称做进度,而将其他资源都看作可以通过采购获得从而表现为费用或成本的话,那么我们就可以给项目下这么一个定义:在一定的进度和成本约束下,为实现既定的任务,并达到一定的质量,所进行的一次性的任务。,一般来讲,目标、成本、进度三者是互相制约的,其关系如图5-2所示。当进度要求不变时,质量要求越高或者任务要求越多,则成本越高;当不考虑成本时,质量要求越高或任务要求越多,一般进度越慢;当质量和任务的要求都不变时,进度过快或过慢都会导致成本的增加。项目管理的目的是谋求(任务)多、(进度)快、(质量)好、(成本)省的有机统一。,当然,对于一个确定的项目,其任务的范围是确定的。项目管理就演变为在一定的任务范围下如何处理好质量、进度与成本三者关系的问题,也就是要处理好好中求快和好中求省的问题。项目管理既是一门科学又是一门艺术。之所以被看作一门科学是因为项目管理是以各种图表、数学计算以及其他技术手段为依据的;但是项目管理也受到人际关系因素以及组织因素的制约,因而相互沟通、协商谈判及解决矛盾等即为项目管理的“艺术”。,这门“艺术”具有其自身的三个基本特点:项目管理是一项复杂工作。项目管理具有创造性,充满着权衡。项目负责人(或称项目经理)在项目管理中起着非常重要的作用。,3、信息系统项目的特点,信息系统的建设是一类项目。因为信息系统的建设符合项目的几个特点:首先信息系统的建设是一次性的任务,有一定的任务范围和质量要求,有时间或进度的要求,有经费或资源的限制。信息系统具有生命周期,这与项目具有寿命周期也是一致的。所以信息系统的建设也是一类项目的建设过程,可以用项目管理的思想和方法来指导信息系统的建设。,信息系统的生命周期包括系统规划、系统分析、系统设计、系统实施、系统运行和维护五个阶段。显然,信息系统项目也可按照上述五个阶段进行管理,依次制定各阶段的任务范围、进度、费用安排以及质量要求。从具体构成来看,信息系统项目又可分为客户需求分析、应用软件开发、网络规划与设计、设备采购以及系统调试与集成等多项内容,在上述几项内容中,首先是客户需求分析,在此基础上进行应用软件开发和网络规划设计,最后才是设备采购和系统调试与集成。,在随信息系统项目进行基本分析之后,我们来看看信息系统项目的特点:,(1)信息系统项目的目标是不精确的,任务的边界是模糊的,质量要求更多是由项目团队来定义的。(2)信息系统项目进行过程中,客户的需求会不断被激发,被不断地进一步明确,导致项目的进度、费用等计划不断更改。(3)信息系统项目是智力密集、劳动密集型的项目,受人力资源影响最大,项目成员的结构、责任心、能力和稳定性对信息系统项目的质量以及是否成功有决定性的影响。,信息系统项目的计划是用来指导组织、实施、协调和控制信息系统建设的文件,制定一个良好的计划有诸多好处,比如可以将计划的假设与前提写成书面文件,以备发生变更时考察;有助于项目成员之间的交流沟通,有助于大家统一认识;可以确定对项目进行控制和考核工作业绩的基准。本节内容:1、信息系统项目成本的构成及预算的一般过程2、软件开发规模与成本估算方法3、信息系统项目的进度和成本计划4、信息系统项目计划的变更管理,二、信息系统项目的计划、费用与进度管理,1、信息系统项目成本的构成及预算的一般过程,信息系统项目的成本随着系统的类型、范围及功能要求的不同而异。但是,我们可以从信息系统生命周期的各阶段划分为开发成本与运行维护成本两大类,在各类中又根据费用的目的进行逐级细分,如图5-3所示。,其中,系统开发成本又可分为软件开发成本、硬件成本和其他成本三大类。信息系统项目的成本测算,就是根据待开发的信息系统的成本特征以及当前能够获得的有关数据和情况,运用定量和定性分析方法对信息系统生命周期各阶段的成本水平和变动趋势做出尽可能科学的估计。在图5-3中,最难确定的是开发成本中的软件开发成本,而硬件成本和其他成本相对容易估算出来。至于运行维护成本,则可以根据开发成本与运行维护成本比值的经验数据和测算出来的开发成本一起计算。并且,对于信息系统项目的用户来讲,项目开发成本的不确定性因素较大,而项目的运行维护成本由于多次发生,且在自身的使用中发生,相对来讲容易控制一些。所以信息系统项目成本测算的重点是软件开发成本。,图5-4给出了信息系统开发成本测算的一般过程,从图中可以看出,信息系统开发成本测算首先应该建立在对过去项目成本情况进行数据分析的基础上,历史的经验和教训对于成本测算的各个阶段均有参考价值;其次,进行硬件成本及用户方面(培训、数据收集、系统转换等)成本的测算,这是因为它们对软件成本的分析有着一定的影响。比如开发人员对所采用的硬件或数据库系统的使用经验将明显影响软件生产率,从而影响着软件成本,对此先做测算可以减少软件成本测算中的不确定因数。然后是软件成本测算,通常分两步走:第一步,测算软件的规模或程序量;第二步,利用有关的经验参数模型测算出该种规模的软件成本。当然,也可运用专家判定等方法将上述两步合并直接测算成本。在测算软件开发成本、硬件成本和其他成本的同时,对各种任务所需 的人力、时间等资源也做出安排,即为人力计划和进度计划。,软件开发成本测算出来以后,与硬件成本和其他成本累加则构成信息系统项目的开发成本,在此基础上,根据运行维护成本与开发成本之间比值的经验系数导出信息系统的运行维护成本。开发成本与运行维护成本之和即为信息系统项目的总成本。,显然,信息系统项目成本的测算重点在于软件开发成本的测算,软件开发成本的测算又离不开软件规模的测算。所以,我们应对软件的规模与成本估算的方法予以讨论。,2、软件开发规模与成本估算的方法,软件度量的两种典型方式 软件代码行的方式 用软件的代码行(LOC)数表示软件开发的规模是十分自然和直观的。代码行数可以用人工或软件工具直接测量。利用代码行数不仅能度量软件的规模,而且还可以度量软件开发的生产率、开发每行代码的平均成本、文档与代码的比例关系、每千行代码存在的软件错误个数等。,软件开发的生产率:Pl=L/E(5.1)其中:L是应用软件的总代码行数。E是应用软件的工作量,用人月(PM)度量。Pl是软件开发的生产率,用每人月完成的代码行数(LOC/PM)度量。每行代码的平均成本:Cl=S/L(5.2)其中:S是软件开发的总成本,用人民币或美元度量。Cl是软件项目每行代码的平均成本,用人民币(或美元)/代码行度量。,用软件代码行数估算软件的开发规模简单易行,其缺点也有不少:代码行数的估算依赖于程序设计语言的功能和表达能力;采用代码行估算方法会对设计精巧的软件项目产生不利的影响;在软件项目开发前或开发初期估算它的代码行数十分困难;代码行估算只适用于过程式程序设计语言,对非过程式的程序设计语言不太适用等。,软件功能点的方式,面向功能的软件功能点度量与统计代码行数的直接度量方式不同,是涉及多种因素的间接度量方式。它是根据软件拟实现的基本功能定义的,因此在系统分析初期就能够估算出软件开发的规模。这种方法用6个信息量的“加权和”CT和14个因素的“复杂性调节值”Fi(i=1,2,14)计算功能点FP:,其中:CT按表5-1计算,Fi由表5-2给出,Fi取值为0,1,5,表示Fi在FP中起作用的程度。当Fi=0时,表示否定或Fi不起作用,Fi=5时,表示Fi作用最大。,与用代码行定义软件的开发效率、成本等度量一样,用功能点也可以定义相应的概念。软件开发的生产率:Pf=FP/E(5.4)其中:Pf表示每人月完成的功能点数。每功能点的平均开发成本:Cf=S/FP(5.5)其中:Cf表示每功能点的平均开发成本(人民币或美元)。采用功能点度量的优点:第一,与程序设计语言无关,它不仅适用于过程式语言,也适用于非过程式的语言,这对于面向对象的开发方式尤为有用;第二,由于在信息系统项目启动时就能基本上确定系统的输入、输出等参数,所以功能点度量能用于软件开发成本在初期的预估。缺点主要是它涉及到的主观因素比较多,如Fi的选取与评估人的经验和态度有较大的关系,并且FP的值没有直接的物理意义。,软件开发的规模是影响软件开发成本和工作量的重要因素。应用软件代码行和功能点估算是成本和工作量估算的基础。采用前述四种估算方法可以估算出L或FP的乐观值a、悲观值b和一般值m,然后根据下面加权公式计算出期望值e=(a+4m+b)/6(5.6)当L或FP的期望值估算出来之后,根据以前开发软件的数据可知软件开发平均生产率(LOC/PM或 FP/PM)就可以计算出工作量。例:软件项目的规模按功能点估算为310FP,假设已知以前完成项目的软件开发平均生产率为5.5FP/PM,已知目前每人月的开发成本为1万元,于是:工作量估算为 E=310/5.5=56PM(5.7)软件开发成本估算为 C=56 1=56 万元(5.8)如果当前估算的软件子项目比以前完成的项目复杂,那么所用的生产率值可以低于平均生产率,反之也可以高于平均生产率。,软件的两个经验估算模型,应用软件的估算模型是根据以前完成项目的实际数据导出的,由于导出模型的数据是“从前的”、“局部的”,因此估算模型不可能适用于当前所有的信息系统项目和全部开发环境。这些模型的计算结果仅有一定的参考价值。有的信息系统项目采用专家评分法分别对软件开发规模、成本、时间和人力投入给出乐观、悲观、一般三个值,然后采用类似(5.6)的加权公式直接计算出软件开发的规模、成本、时间和人力投入。,常用的估算模型:CoCoMo模型和Putnam模型,CoCoMo模型 CoCoMo模型是“构造性成本模型”(constructive cost model,简称,CoCoMo模型)的英文缩写,分为基本、中间、详细三个层次,分别用于软件开发的不同阶段。基本CoCoMo模型用于系统开发的初期,估算整个系统的工作量(包括软件维护)和软件开发所需要的时间;中间CoCoMo模型用于估算各个子系统的工作量和开发时间;详细CoCoMo模型用于估算独立的软部件,如子系统内部的各个模块。这里,我们只介绍基本CoCoMo模型的情况。,基本CoCoMo模型是静态、单变量模型,具有下列形式:E=aLb(5.9)D=cEd(5.10)C=E(5.11)其中:L是项目的代码行估计值,单位是千行代码(KLOC)。E表示工作量,单位是人月(PM)。D表示开发时间,单位是月。C表示开发成本,单位是万元。表示每人月的人力成本,单位是万元/人月。a,b,c,d是常数,取值如表5-3所示。表5-3把软件划分为组织型、半独力型和嵌入型三类,允许不同应用领域和复杂程度的软件按照上述三类软件的适用范围选取相应的参数a,b,c,d。,Putnam模型,Putnam模型是由Putnam提出的大型软件项目工作量(一般在30人年以上)估算模型。它是一个动态多变量模型,适用于软件开发的各个阶段。估算模型以大型软件项目的实测数据为基础,描述了开发工作量、开发时间和软件代码行数之间的关系。相应的方程是(5.12)其中:L表示源程序代码行数。E表示工作量(以人年计,包括维护)。td表示开发时间(以年计)。Ck表示技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异,其典型值的选取如表5-4所示。,由式(5.12)有:(5.13)C=E(5.14)其中,C表示开发成本,单位是万元;表示每人年的人力成本,单位是万元/人年。式(5.13)表明,开发软件项目的工作量与交付时间的4次方成反比,将0.9td代替式(5.13)的td计算E。我们发现,提前10%的时间要增加52%的工作量,显然是降低了软件开发生产率。因此,软件开发过程中人员与时间的折衷是一个十分重要的问题。,CoCoMo模型和Putnam模型都是在估算软件代码行的方式基础上,估算出了软件开发的工作量和软件开发的成本。对于软件的开发时间,CoCoMo模型是根据经验公式估算出来的,对于Putnam模型则是与工作量相权衡的结果。对于软件的人力投入,两个模型都可以根据工作量和开发时间的比值测算出来。,两种方式相比较,软件的自动估算工具,以上介绍的经验估算模型已经用软件实现,成为自动估算工具。这种自动估算工具使得管理或计划人员能够估算待开发软件项目的成本和工作量,还可以对人员配置和交付日期等进行估计。它们需要以下一种或多种数据:定量估算软件项目模型,如用总代码行数或者用功能点数据;定性地说明项目的特征,诸如复杂性、需要的可靠性或时间的关键性;开发人员和(或)开发环境的描述。根据这些数据,由自动估算工具实现的模型就能给出完成软件项目所需的工作量、成本、人员配备、某些情况下的开发进度和相应风险的估算。,下面简要介绍6种有代表性的工具:,Gordon集团的BYL(Before You Leep)Wang研究所的WICOMO(Wang Institute Cost Model)DEC公司的DECPlan(基于COCOMO的自动估算工具)SLIM是基于软件生存期中RayleighNorden曲线和Putnam估算模型的一种自动成本估算工具。ESTIMACS和SPQR/20是根据功能点估算模型开发出来的,上述每种自动估算工具都能与管理或计划人员对话,从而得到合用的项目与支持信息,并产生表格式的输出及在某些情况下产生图形输出。国外有学者曾对上述部分工具做过一个比较。他把各种工具都用于同一个项目,发现估算结果中出现了比较大的偏差,而且预测值有时与实际值相比,存在明显的不同。显然,不管估算是采用代码行的方式,还是采用功能点的方式,不管是采用经验模型还是采用自动估算工具,都离不开掺杂在其中的许多主观判断。这是由于软件开发规模测算过程中不确定的因素太多,必须要采用定性与定量方式结合起来的方法才能测定。到此,我们就讨论完了软件规模、成本、开发时间、人力投入的测算过程。在此基础上,就可以根据测算的软件开发成本、硬件成本和信息系统开发期间的其他成本计算出信息系统可开发成本,再根据信息系统开发成本占信息系统总成本比例的经验数据得出信息系统项目的总成本。相应地,也可以根据软件开发时间或人力投入占信息系统项目总时间或总人力比例的经验数据知道信息系统项目建设所需要的总时间和总人力。,3、信息系统项目的进度和成本计划,根据上一小节的测算,我们能估测出信息系统项目所需要的工作量、总的项目建设时间和项目成本。现在假设项目经理已经和客户在上述测算的基础上经过讨价还价,基本达成了一致,并签订了开发合同。那么,项目经理就要开始组织队伍形成项目团队,绘制专业领域技术编制表,建立一个工作分析结构(WBS),并在此基础上建立项目组成员的责任矩阵。所谓工作分析结构是指将一个信息系统项目分解成易于管理的几部分或几个细目,细目再展开成子细目,任何分支最底层的细目叫工作包。比如对于一个待建系统可以先按照生命周期的各阶段展开,然后按照子系统或系统功能点展开。,责任矩阵一旦建立,就可以进行项目各建设活动的工期估计和预算分摊估计。工期估计和预算分摊估计各有两种办法,一种是自上而下法,即在项目建设总时间和总成本之内按照每一工作包的相关工作范围来考察,以项目总时间或总成本的一定比例分摊到各个工作包中。另一种方法是自下而上法,它是由每一工作包的具体负责人来做估计的方法。经验表明,让某项工作的具体负责人进行估计是较好的方法,因为这样做既可以得到该负责人的承诺,对他产生有效的参与激励,又可以减少由项目经理一个人进行所有活动的工期估计时所产生的偏差。当然,某些情况下,如对一个需花费数年时间、由几百个人来做不同工作才能完成的大型信息系统项目来说,让每个人在项目开始时就做出其所要完成活动的各项估计是不实际的。至于工作包各负责人估计的方法,还可以参照上一节中的测算方法,比如中间CoCoMo模型就可用于各个子系统的估计,详细CoCoMo模型可用于子系统各个模块的估计。,在上述估计的基础上,项目经理进行各工期的累计和分摊预算的累计,与项目总建设时间和总成本比较,根据一定的规则进行调整。,实例分析:现在某企业准备开发一个客户关系管理的信息系统,合同双方将系统交付使用作为项目终结的依据,双方同意维护期间费用另行支付。经上述测算,估算该项目总开发工作量为4人年,项目总开发时间为50周,项目的总成本(包括软件开发成本、硬件成本和开发中的其他成本)是100万元人民币。根据上述估计和准备,项目经理绘制了如图5-5所示的甘特图,项目总开发时间为50周。图中将该项目划分为六个大的活动,并明确了各活动的工期:系统规划(5周)、系统分析(10周)、系统设计(10周)、系统实现(15周)、系统测试(8周)和系统转换(5周)。,上述六个大的活动又细分为22项小活动,各项小活动之间的顺序关系以及每项小活动的工期估计和预算分摊估计如表5-5所示。在此基础上,可以画出该项目的网络图,如图5-6所示。到此为止,已经估计出该项目中每项活动的工期和项目的总时间,为了确定这些活动是否能在要求的时间内完成。我们必须计算出一个项目进度计划,为每项活动的执行提供一个时间表,这个时间表主要解决以下两个内容:,图5-6 客户关系信息系统项目网络图,(1)最早开始时间(earliest start time,ES)和最早结束时间(earliest finish time,EF)。,它们是指在项目合同开始时间的基础上,每项活动能够开始和完成的最早时间。ES和EF是通过网络图的正向计算得到的,即从项目开始沿网络图到项目完成进行计算。在进行这些正向计算时,必须遵守一条规则:某项活动的最早开始时间(ES)必须相同或晚于直接指向这项活动的所有活动的最早结束时间(EF)中的最晚时间。最早结束时间(EF)则可以在这项活动最早开始时间的基础上加上这项活动的工期估计计算出来,即:EF=ES+工期估计。,(2)最迟开始时间(latest start time,LS)和最迟结束时间(latest finish time,LF)。,它们是指为了在项目合同要求完工时间内完成项目,每项活动必须开始和完成的最迟时间。LF和LS可以通过网络图的反向推算得出,即从项目完成沿网络图到项目的开始进行推算。在进行这类反向计算时,必须遵守一条规则:某项活动的最迟结束时间(LF)必须相同或早于该活动直接指向的所有活动最迟开始时间(LS)的最早时间。最迟开始时间(LS)则可以在这项活动最迟结束时间(LF)的基础上减去这项活动的工期估计计算出来,即:LS=LF-工期估计。,在此基础上,可以绘制出附有开始时间和结束时间的进度时间表,如表5-6所示。在网络图中也可标出每项活动的上述四个时间,参照图5-6中每个活动描述框的四个角上的数据。,在这个客户关系管理项目中,表5-6中最后一项活动“准备系统转换报告”的最早结束时间和项目的要求完工时间之间有一个9天的差距,这个差距叫做总时差,有时也叫浮动量。总时差可以用每项活动的最迟结束(开始)时间减去它的最早结束(开始)时间算出,即总时差=LF EF 或 总时差=LS ES如果某项活动的总时差为正值,表明该项活动花费时间总量可以适当延长,而不必担心会出现在要求完工时间内活动无法完成的窘况。反之,如果总时差为负值,则表明该项活动要加速完成以减少花费的时间。在本例中,项目的总时差为负值(参见表5-6),表明完成这个项目缺少时间余量。,要对项目的进度做到较好的控制,必须找到项目网络图中的关键路径。一个大的网络图从开始到完成可以有很多条路径。一些路径可以有正的总时差,另一些可能有负的总时差。那些具有正的总时差的路径被称为非关键路径,而那些总时差为零或负值的路径被称为关键路径,并且将耗时最长的关键路径经常称为最关键路径。在表5-6中用阴影标示出该项目的关键路径。由于客户关系信息系统整个项目的总时差为-9,也就是说,开发本项目需要59周,而不仅仅是合同规定的50周。我们从表5-5中也看到项目各活动的预算分摊累计的最后结果是102万元,而不是合同规定的100万元。,这时,项目经理需要与各活动的负责人特别是关键路径上的负责人进一步核实,看是否能够压缩相应工期和预算分摊,然后对进度和成本计划进行相应调整,调整的原则和方法在下一小节中详细讲解。在本例中,假设各负责人均表示已经没有压缩的意义,那么,项目经理需向项目建设的委托方申请将项目建设总时间延长到59周。当然,也可以采取折衷的办法,一边申请延期,一边调整进度计划。至于费用,除非严重超过合同款项或者说合同中的预算被严重低估;否则,合同双方很难再就合同款项进行谈判。比如本例中仅超过2万元,占合同总价款的2%,就只能在项目团队成本的内部控制上下功夫。,上面提到的进度表、网络图以及预算分摊,不但可以在活动这一层次进行,对于每个活动的负责人来讲,他也可以将自己负责的活动进行分解,在自己活动内部使用上述计划的方法。另外,为了实现成本控制,除在表5-5中列出预算分摊和分摊累计进行控制外,还可以在预算分摊和活动进度表的基础上,制定一个在50周范围内每周的预算分摊表。,实例总结,4、信息系统项目计划的变更管理,项目执行过程中,也会经常出现到某一个项目的里程碑或报告期时,项目的进度早于或晚于计划进度及已经发生的实际成本低于或高于计划成本,这时都需要对相应的计划进行调整。项目控制或调整的过程如图5-7所示。,如果发现项目的进度计划或预算计划需要调整,那么,调整的重点应放在如下三个方面:第一,对近期内即将发生的活动加强控制,积极挽回时间和成本,这是因为早控制早主动;第二,工期估计最长或预算估计最大的活动应进一步审核预估依据,并做好该活动压缩时间和费用的准备工作,因为估计值越大的项目更有压缩的可能;第三、将某些可以再分的活动进一步细分,研究细分活动之间并行工作或知识重用的可能性,如可行,则可以有效地压缩时间和费用。,至于信息系统项目计划调整的方法,下面详细讲解比较重要的一种,即时间成本平衡法。时间与成本之间在一定的范围内有一定的替代性(参见图5-2)。时间成本平衡法就是一种用最低的相关成本的增加来缩短项目工期的方法。该方法基于以下假设:,()每项活动有两组工期和成本估计:正常的和应急的。正常时间是指在正常条件下完成某项活动需要的估计时间;正常成本是指在正常时间内完成某项活动的预计成本。应急时间是指完成某项活动的最短估计时间;应急成本是指在应急时间内完成某项活动的预计成本。,在图5-8中,四个活动均有一组正常时间和成本估计,一组应急时间和成本估计。活动A的正常估计时间为7周,正常预计成本为50,000元;应急时间是5周,在此期间内完成活动的应急成本为62,000元。,时间成本平衡法基于的假设条件,(2)一项活动的工期可以通过从正常时间减至应急时间得到有效的缩减,这要靠投入更多的资源来实现指派更多的人、延长工作时间、使用更多的设备等。成本的增加是与加快活动进程相联系的。,(3)应急时间是确保活动按质量完成的时间下限。无论对一项活动投入多少额外的资源,也不可能在比应急时间短的时间内完成这项活动。例如,无论投入多少资源,无论花费多少成本,也不能在少于5周的时间内完成活动A。()当需要将活动的预计工期从正常时间缩短至应急时间时,必须有足够的资源作保证。,时间成本平衡法基于的假设条件,()在活动的正常点和应急点之间,时间和成本的关系是线性的。为了将活动的工期从正常时间缩短至应急时间,每项活动都有自己的单位时间加急成本。缩短工期的单位时间加急成本可用如下公式计算:(5.15),例如,在图5-8中,将活动A的工期从正常时间缩短至应急时间,在缩短的这段时间内的每周成本为图5-8的网络图从开始到完成有两条路径:路径AB和路径CD。如果我们仅考虑正常工期估计,路径AD需要16周完成,而路径CD需要18周完成。因此,根据以上这些时间估计可知,该项目的最早结束时间为18周由C和D构成的关键路径的时间长度。根据正常时间内完成活动的成本可计算出项目总成本为50 000+80 000+40 000+30 000=200 000(元)如果全部活动均在它们各自的应急时间内完成,路径AB将用11周时间,路径CD将用15周时间。按应急时间估计计算,项目的最早结束时间是15周,比在正常时间内完成这些活动提前3周。,实例分析,显然,缩短全部活动的工期通常是不必要的,甚至是没有好处的。这是因为关键路径的工期决定着项目的总工期。换句话说,加速非关键路径上活动的进展不会缩短项目的完成时间,却会增加项目的总成本。,时间成本平衡法的目标是通过压缩那些使总成本增加最少的活动的工期,来确定项目最低的完成时间。为了实现这个目标,应在每次平衡一个时间段的前提下,压缩关键路径上那些有最低单位时间加急成本的活动。,实例小结,在图5-8上,根据正常时间和成本估计,我们首先确定项目的最早结束时间为18周(由关键路径CD决定),项目的总成本是200,000元,每项活动的每周加急成本可根据公式(5-15)分别计算出来:活动A:6 000元/周活动B:10 000元/周活动C:5 000元/周活动D:6 000元/周为了将项目的工期从18周减至17周,首先必须找出关键路径CD,然后,才能确定关键路径上哪项活动能以最低的每周加急成本被加速。加速活动C的进程每周需要5,000元,加速活动D的进程每周需要6,000元。如果将活动C缩短1周,项目总工期可从18周缩短至17周,但项目总成本增加了5 000元(C的每周加急成本),达205,000元。,实例应用,为了再缩短一个时间段,从17周缩短至16周,必须再次找出关键路径,两路径的工期分别是AB为16周,CD为17周,因此关键路径仍是CD,它必须再次被减少。观察一下关键路径CD,我们意识到尽管活动C比活动D每周加急成本低,却不能再加速活动C的进程了,英文当将项目的工期从18周减至17周时,活动C已达到它的应急时间9周了。因此,仅有的选择是加速活动D的进程,使其工期减少1周,从8周减至7周。这就将关键路径CD的工期减至16周了,但总项目成本却增加了6 000元,从205 000元增至211 000元。,我们再次将项目工期缩短1周,从16周降至15周。观察两条路径,我们会发现它们现在有相同的工期16周。因此,我们现在有两条关键路径。为了将项目总工期从16周减至15周,必须将每个路径都加速1周。观察路径CD,我们意识到只有活动D 仍有剩余时间可以被压缩,它还可以再压缩1周,从7周降至6周,同时增加6,000元成本。为了使路径AB加速1周,我们可以压缩活动A或活动B。加速活动A每周增加6 000元,使活动B的每周加急成本为10 000元。因此,为了将项目总工期从16周缩短至15周,我们需将活动D和活动A各压缩1周。这使项目成本增加了12,000元,从211 000元增至223,000元。,让我们再次尽力将项目总工期缩短1周,从15周降至14周。我们又一次有两条相同的关键路径。因此,我们必须将两条路径同时加速1周。然而,观察路径CD,我们发现两项活动均已达到它们的应急时间分别为9周和6周,不能再进一步加速这两个活动的进程了。加速路径AB的进程因此会毫无意义,因为这只能增加项目的总成本,却不能缩短项目的总工期。我们缩短项目总工期的能力由于路径CD的工期不能再进一步缩短而受到限制。,表5-7表明项目总工期减少1周,项目总成本将增加5,000元;项目工期减少2周,项目总成本将增加11,000元;项目工期减少3周,项目总成本将增加23,000元。很显然,总成本增加的速度远远大于工期的缩短速度。如果四项活动均达到应急时间,项目总成本将达到259,000元,而项目的完成时间仍不会少于15周。用时间成本平衡法,我们可以通过压缩关键路径上有最低单位时间加急成本的活动,用增加23,000元的加急成本将项目的工期从18周降至15周。由于项目总工期不会少于15周,压缩全部活动至应急时间将会浪费36,000元。,人在信息系统项目中既是成本,又是资本。人力成本通常都是信息系统项目成本构成中最大的一块,这就要求我们对人力资源从成本上去衡量,尽量使人力资源的投入最小;人力资源作为资本,我们就要尽量去发挥资本的价值,使人力资源的产出最大。因而,本节主要从人力资源平衡和项目团队激励这样两个方面去讨论信息项目的人员管理问题。本节主要知识点:信息系统项目的人力资源平衡 信息系统项目的团队,三、信息系统项目的人员管理,、信息系统项目的人力资源平衡,人员进度权衡定律在前面讲到Putnam模型时得到公式(5.13):,从这个公式可知开发软件项目的工作量(E)与交付时间(td)的4次方成反比,公式中工作量的单位是人年,进度的单位是年,显然,软件开发过程中人员与时间的折衷是一个十分重要的问题。Putnam将这一结论称为“软件开发的权衡定律”。,Brooks定律曾担任IBM公式操作系统项目经理的F.Brooks,从大量的软件开发实践中得出了另一条理论:“向一个已经拖延的项目追加开发人员,可能使它完成得更晚”。鉴于这一发现的重要性,许多文献称之为Brooks定律。这里,Brooks从另一个角度说明了“时间与人员不能线性互换”这一原则。,两个重要定律,上述两个定律的合理解释是,当开发人员以算术级数增长时,人员之间的通信将以几何级数增长,从而可能导致“得不偿失”的结果。一般说来,由N个开发人员组成的小组,要完成既定的工作,相互之间的通信路径总数为,而通信是需要时间的。所以,当新的开发人员加入项目组之后,原有的开发人员必须向新来的成员详细讲解某个活动或工作包的来龙去脉。并且由于信息系统开发具有较强的个人风格,所以交流沟通的时间更容易拉长,而后来者还不一定能达到原来开发人员的工作质量。,用作人力计划的Rayleigh Norden 曲线,图5-10中以横坐标表示距开发起点的时间,纵坐标代表在不同时间点需要的人力。图中用虚线画出的矩形,显示了平均使用人力所造成的问题:开始阶段人力过剩,造成浪费(图中),到开发后期需要人力时,又显得人手不足(图中),以后再来补偿,已为时过晚了(图中),甚至可能如Brooks定律所说,导致越帮越忙的结果。,人力资源计划的平衡,经验表明,信息系统项目的人力分配也大致符合Rayleigh-Norden曲线的分布,呈现出前后用人少、中间用人多的不稳定人员需求情况。但是,信息系统开发人员作为技术工种,可不是一旦需要就马上找得到的,那么在制定人力资源计划时,就要在基本按照上述曲线配备人力的同时,尽量使某个阶段的人力稳定,并且确保整个项目期人员的波动不要太大。我们称这样的过程为人力资源计划的平衡。,人力资源平衡法是制定使人力资源需求波动最小化的进度计划的一种方法。这种平衡人力资源的方法是为尽可能均衡地利用人力资源并满足项目要求完成的进度。人力资源平衡是在不延长项目完工时间的情况下建立人力资源均衡利用的进度计划。为了说明人力资源计划平衡的方法,下面举例具体说明。现有一个学籍信息管理系统已经立项,由于系统较小,准备采用原型法开发,并拟订了一个带有活动工期和人力需求的网络图,如图5-11所示。为了讨论的方便,我们假设参加这个项目的所有成员都是多面手,也就是说,项目成员之间是可以相互替代的。,如果不采用项目管理的思想,一般人们都会希望各项活动尽可能早开始、尽可能早结束。现在我们就假设网络图中每一活动在其最早开始时间执行,基于此,我们可以绘制相应的人力资源分配图(见图5-12)。,图5-12 基于活动最早开始时间的人力资源计划,从图5-12(a)中可以看出,学籍信息系统项目总共需要13周的时间,总的工作量为33人周;从图5-12(b)中可以看出,前3周需要4个开发人员,第4、5周需要3各开发人员,第6至12周只需要2个开发人员,第13周需要1个开发人员。显然,该项目的人力需求波动较大。为了使人力资源尽可能地平衡我们来考察该项目的网络图从图5-11中可以看出,该项目的关键路径是原型法软件开发、系统测试与转换、文档写作三个活动。而其他三个活动处于非关键路径上,我们可以将设备采购活动推迟在第6周开始,这样,得到调整后的人力资源分配图,如图5-13所示。,从图5-13(a)中可以看出,学籍信息系统项目总共还是需要13周的时间,总的工作量仍为33人周,也就是说,虽然调整了人力资源的分配,但并未影响进度。从图5-13(b)中可以看出,前8周需要3个开发人员,第9至12周只需要2个开发人员,第13周需要1个开发人员。显然,相对图5-12(b)来讲,调整后该项目的人力需求波动较小。,图5-13 基于资源平衡的人力计划图,示例小结,这里要解释的是,由于采用原型法开发该项目,系统调研、原型制作和原型改造都在项目前期进行,用的人力较多,所以是直接从Rayleigh-Norden曲线分布的中部开始,从这个意义上说,本项目的人力使用也基本遵守上述曲线的分布。,上面的例子是在资源没有约束的情况下讨论的,如果资源有约束,比如上述的项目只能找到两个开发人员,那么在这种人力资源有约束的情况下进行人力平衡,方法是同上的,也就是通过推迟非关键路径上的活动使资源需求尽可能平衡,不过,进度可能就会有较大的变化,比如上述项目33人周,如果两个人开发,则至少需要16.5周才能完成,显然大于13周的计划进度。,2、信息系统项目的团队,项目小组的具体构成形式 项目小组,是指项目团队的基层单位。一般说来,每个项目小组的规模应该比较小,以28名成员为宜。如果项目属于中小型规模且建设时间在一年以内,那么项目小组的成员可以是活动负责人制。如果项目属于大中型规模,建设时间在一年以上,那么就必须考虑项目建设人员因各种原因发生变动的情况。,这时项目小组推荐的具体构成是这样的:一个高级系统开发人员带两个中级系统开发人员,每个中级开发人员再带2个初级开发人员,参见图5-14(a)。这里的系统开发人员既包括程序员,也包括测试员。比如图5-14(b)就是测试小组的构成。,采用这种按技术水平分层的具体构成模式,主要基于两点考虑:第一,信息系统的建设工作中既有创造性很强的事务,也有经验性很强的事务和照葫芦画瓢的简单性事务,如果所有活动都让高级人员去完成,那么成本很高,是人力资源的极大浪费,还会引起高级人员的不满,而上述三类活动刚好适合三类人员去完成,做到人尽其能;第二,由于项目建设时间太长,容易发生人员更替,并且由于信息系统开发技术主要是“干中学”的知识,中级和初级开发人员在系统建设的过程中会成长起来,如果一旦发生上一层次的人员的变动,下层人员由于一直参与项目的研发,基本上可以“无缝”地把工作承接起来。,如果项目小组成员不发生人员更替,那更好,项目小组的整体素质将会随着时间的推移而提高得很快,从而使项目的进度加快。初、中、高级人员最初的薪水水平可以按类似0.3:0.7:1.0的比例定位。当然,随着初中级人员技术水平的提高,他们的薪水也应该不断提高,因为他们在同等的时间可以完成更多更复杂的工作,并且会有更好的质量。还有,这里上下层的开发人员之间的比例定为2,这个比例也可以随不同项目小组的情况具体调整,比如为1或3,但最好不要超过3个。,项目团队的成长与激励 信息系统项目团队的成长与其他项目一样,一般需要经过如下四个阶段:,形成(forming)阶段形成阶段促使个体转变为团队成员。这一阶段的情绪特点包括激动、希望、怀疑、焦急和犹豫。在这个阶段中,团队要建立起整体形象,需要明确方向,并试