信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

标题: [转帖]项目估算 [打印本页]

作者: 翔羽    时间: 2006-4-2 08:12
标题: [转帖]项目估算
<span style="FONT-WEIGHT: normal; FONT-FAMILY: 黑体; mso-bidi-font-weight: bold;"><span lang="EN-US"><h2 align="left"><font size="4">软件项目管理过程从一开始被称为项目计划的活动开始。这些活动中的第一个是估算。无论何时进行估算,我们都是在预测未来没,在做软件项目估算时往往存在某些不确定性,使得软件项目管理人员无法正常迟迟不能完成。虽然估算是一门科学,但它更是一门艺术,可这个重要的活动不能以随意的方式开进行。现在已使用的实用技术是时间和工作量估算。因为估算是所有其他项目计划活动的基石,且项目计划又为软件工程提供了工作方向,所以不能没有计划就开始着手开发,否则将会陷入盲目性。</font></h2><h2 align="left"><font size="4">对软件项目进行有效的估算,取决于掌握多少有关项目范围的原始资料。通常,应当根据正式的需求描述进行估算。正式的需求描述可以是需求说明书、系统规格说明书或软件需求说明书等。如果开始时缺乏一些正式的资料,也可以采用口头描述或草稿的方式开始估算工作。在得到项目范围的正式资料后,必须进行再估算。估算的两个主要方法是: </font></h2><h2 align="left"><font size="4">第一种方法是根据项目特征和算法进行估算。例如,根据软件系统的输入、输出、查询、文件及外部接口等信息、使用功能点估算出系统的规模。基于功能点估算是按照用例(Use case)来做的,而不是软件功能来做。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。</font></h2><h2 align="left"><font size="4">&nbsp;&nbsp;&nbsp; 第二种方法是采用类比的方法,根据历史数据来进行估算。如果有一个以前做过的类似项目并且掌握它的规模,就可以把新项目的各个主要部分与原有项目的相应部分进行比较,得出一个比例关系,将各部分相对于原项目规模比例相加,计算出新项目的规模。如果估算者的经验丰富并且新项目与老项目具有足够的相似性,就能够得到合理的估算值。但是采用类比法,往往还要解决可重用代码的估算问题。估计可重用代码量的最好办法就是由程序员或系统分析员详细地考查已存在的代码,估算出新项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分比以及需重新测试的代码百分比。</font></h2><h2 align="left"><font size="4">&nbsp;<br/>1&nbsp; 软件规模估算</font></h2><h2 align="left"><font size="4">软件项目的规模估计历来是比较复杂的事,因为软件本身的复杂性、历史经验的缺乏、估算工具缺乏以及一些人为错误,导致软件项目的规模估计往往和实际情况相差甚远。 因此,估计错误已被列入软件项目失败的主要原因之一。</font></h2><h2 align="left"><font size="4">先介绍一个衡量软件项目规模最常用的概念--LOC(Line of Code),LOC指所有的可执行的源代码行数,包括可交付的工作控制语言(JCL:Job Control Language)语句、数据定义、数据类型声明、等价声明、输入/输出格式声明等。一代码行(1LOC)的价值和人月均代码行数可以体现一个软件生产组织的生产能力。组织可以根据对历史项目的审计来核算组织的单行代码价值。</font></h2><h2 align="left"><font size="4">例如,某软件公司统计发现该公司每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。某项目的源文件大小为3.75M,则可估计该项目源代码大约为15万行,该项目累计投入工作量为240人月,每人月费用为10000元(包括人均工资、福利、办公费用公滩等),则该项目中1LOC的价值为: </font></h2><h2 align="left"><font size="4">(240×10000)/150000=16元/LOC <br/>   改项目的人月均代码行数为: <br/>   150000/240=625LOC/人月 <br/>  方法一、Delphi 法 <br/>  Delphi法是最流行的专家评估技术,在没有历史数据的情况下,这种方式适用于评定过去与将来,新技术与特定程序之间的差别,但专家"专"的程度及对项目的理解程度是工作中的难点,尽管Delphi技术可以减轻这种偏差,专家评估技术在评定一个新软件实际成本时通常用得不多,但是,这种方式对决定其它模型的输入时特别有用。Delphi法鼓励参加者就问题相互讨论。这个技术,要求有多种软件相关经验人的参与,互相说服对方。 <br/>  Delphi法的步骤是: <br/>  1、协调人向各专家提供项目规格和估计表格; <br/>  2、协调人召集小组会各专家讨论与规模相关的因素; <br/>  3、各专家匿名填写迭代表格; <br/>  4、协调人整理出一个估计总结,以迭代表的形式返回专家; <br/>  5、协调人召集小组会,讨论较大的估计差异; <br/>  6、专家复查估计总结并在迭代表上提交另一个匿名估计; <br/>  7、重复4-6, 直到达到一个最低和最高估计的一致。 <br/>  方法二、 类比法 <br/>  类比法适合评估一些与历史项目在应用领域、环境和复杂度的相似的项目,通过新项目与历史项目的比较得到规模估计。类比法估计结果的精确度取决于历史项目数据的完整性和准确度,因此,用好类比法的前提条件之一是组织建立起较好的项目后评价与分析机制,对历史项目的数据分析是可信赖的。 <br/>  其基本步骤是: <br/>  1、整理出项目功能列表和实现每个功能的代码行; <br/>  2、标识出每个功能列表与历史项目的相同点和不同点,特别要注意历史项目做得不够的地方; <br/>  3、通过步骤1和2得出各个功能的估计值; <br/>  4、产生规模估计。 <br/>  软件项目中用类比法,往往还要解决可重用代码的估算问题。估计可重用代码量的最好办法就是由程序员或系统分析员详细地考查已存在的代码,估算出新项目可重用的代码中需重新设计的代码百分比、需重新编码或修改的代码百分比以及需重新测试的代码百分比。根据这三个百分比,可用下面的计算公式计算等价新代码行: <br/>  等价代码行 = [(重新设计% +重新编码% +重新测试%)/3]× 已有代码行 <br/>  方法三、功能点估计法 <br/>  功能点测量是在需求分析阶段基于系统功能的一种规模估计方法。通过研究初始应用需求来确定各种输入、输出、计算和数据库需求的数量和特性。通常的步骤是: <br/>  1、计算输入,输出,查询,主控文件,和接口需求的数目。 <br/>  2、将这些数据进行加权乘。下表为一个典型的权值表。 <br/>     功能类型  权值 <br/>     输入    4 <br/>     输出    5 <br/>     查询    4 <br/>     主控文件  10 <br/>     接口    10 <br/>  3、估计者根据对复杂度的判断,总数可以用+25%、0、或-25%调整。 <br/>  据发现,对一个软件产品的开发,功能点对项目早期的规模估计很有帮助。然而,在了解产品越多后,功能点可以转换为软件规模测量更常用的LOC。</font></h2><h2 align="left"><font size="4">&nbsp;<br/>2&nbsp; 软件开发成本估算</font></h2><h2 align="left"><font size="4">软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不同于其他物理产品的成本,不包括原材料和能源的消耗,主要是人的劳动消耗。人的劳动消耗所需代价就是软件产品的的开发成本。另一方面,软件产品开发的计算方法不同于其他物理产品成本的计算。软件产品不存在重复制造过程,它的开发成本是以一次性开发过程所花费的代价来计算的。因此,软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,整个软件开发过程所花费的代价作为依据的。</font></h2><h2 align="left"><font size="4">对于一个大型的软件项目,要进行一系列的估算处理,主要靠分解和类推的方法进行。</font></h2><h2 align="left"><font size="4">基本估算方法分为3类:</font></h2><h2 align="left"><font size="4">1、自顶想下的估算方法。这种方法的主要思想是:从项目的整体出发,进行类推。即估算人员根据以前已完成项目所消耗的总成本,来推算将要开发的软件的总成本,然后按比例将它分配到各开发任务单元中去。这种方法的优点是估算工作量小,速度快。缺点是对项目中的特殊困难估计不足,估算出来的成本盲目性大,有时会遗漏被开发软件的某些部分。</font></h2><h2 align="left"><font size="4">2、自底向上的估算法。这种方法的主要思想是:把待开发的软件细分,直到没个子任务都已经明确所需要的开发工作量,然后把它们累加起来,得到软件开发的总工作量。这是一种常见的估算方法。它的优点是估算各部分的准确性高。缺点是缺少各个子任务之间相互联系所需要的工作量,还缺少许多同软件开发有关的系统级工作量。所以估算值往往偏低,必须用其他方法进行校验和校正。</font></h2><h2 align="left"><font size="4">3、差别估计法。这种方法综合了上述两种方法的优点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比,从各个子任务中区分出类似的部分和不同的部分。类似的部分按实际量进行计算,不同的部分则采用相应的方法进行估算。这种方法的优点是提高估算的准确程度,缺点是不容易明确所谓“类似”的界限。</font></h2><h2 align="left"><font size="4">常见的几种估算模型为:</font></h2><h2 align="left"><font size="4"></font>&nbsp;</h2><h2 align="left"><font size="4">1、IBM模型 </font></h2><h2 align="left"><font size="4">  1977年,IBM的Walston和Felix提出了如下的估算公式: </font></h2><h2 align="left"><font size="4">  E = 5.2×L0.91,L是源代码行数(以KLOC计),E是工作量(以PM计) </font></h2><h2 align="left"><font size="4">  D = 4.1×L0.36,D是项目持续时间(以月计) </font></h2><h2 align="left"><font size="4">  S = 0.54×E0.6,S是人员需要量(以人计) </font></h2><h2 align="left"><font size="4">  DOC = 49×L1.01。DOC是文档数量(以页计) </font></h2><h2 align="left"><font size="4">在此模型中,一般指一条机器指令为一行源代码。一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。对于非机器指令编写的源程序,如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。 </font></h2><h2 align="left"><font size="4">2、Putnam模型 </font></h2><h2 align="left"><font size="4">这是1978年Putnam提出的模型,是一种动态多变量模型。它是假定在软件开发的整个生存期中工作量有特定的分布。这种模型是依据在一些大型项目(总工作量达到或超过30个人年)中收集到的工作量分布情况而推导出来的,但也可以应用在一些较小的软件项目中。 </font></h2><h2 align="left"><font size="4">utnam模型可以导出一个“软件方程”,把已交付的源代码(源语句)行数与工作量和开发时间联系起来。其中,td是开发持续时间(以年计),K是软件开发与维护在内的整个生存期所花费的工作量(以人年计),L是源代码行数(以LOC计),Ck是技术状态常数,它反映出“妨碍程序员进展的限制”,并因开发环境而异。其典型值的选取如下表所示。 </font></h2><h2 align="left"> <br/><font size="4">&nbsp;3、COCOMO模型 </font></h2><h2 align="left"><font size="4">这是由TRW公司开发。Boehm提出的结构型成本估算模型,是一种精确、易于使用的成本估算方法。在该模型中使用的基本量有以下几个:DSI(源指令条数)定义为代码或卡片形式的源程序行数。若一行有两个语句,则算做一条指令。它包括作业控制语句和格式语句,但不包括注释语句。KDSI=1000DSI。MM(度量单位为人月)表示开发工作量。TDEV(度量单位为月)表示开发进度。它由工作量决定。 </font></h2><h2 align="left"><font size="4">(1)软件开发项目的分类 </font></h2><h2 align="left"><font size="4">在COCOMO模型中,考虑开发环境,软件开发项目的总体类型可分为三种:组织型、嵌入型和介于上述两种软件之间的半独立型。 </font></h2><h2 align="left"><font size="4">(2)COCOMO模型的分类 </font></h2><h2 align="left"><font size="4">COCOMO模型按其详细程度分成三级:即基本COCOMO模型、中间COCOMO模型、详细COCOMO模型。基本COCOMO模型是一个静态单变量模型,它用一个以已估算出来的源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。中间COCOMO模型则在用LOC为自变量的函数计算软件开发工作量(此时称为名义工作量)的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。详细COCOMO模型包括中间COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。</font></h2></span></span><br/>
[此贴子已经被作者于2006-4-2 8:32:38编辑过]






欢迎光临 信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试 (http://bbs.tuandui.org.cn/) Powered by Discuz! X3.2