代码量估计的多种方法.ppt_第1页
代码量估计的多种方法.ppt_第2页
代码量估计的多种方法.ppt_第3页
代码量估计的多种方法.ppt_第4页
代码量估计的多种方法.ppt_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二部分 第5章 软件项目计划,厦门大学软件学院 林坤辉,第5章 软件项目计划,5.1 软件项目估算的概念 合理的计划是建立在对要完成的工作做出一个比较实际的估计,以及对完成该工作建立一些必要的约定的基础上的。 项目计划中的第一个活动是估算。无论何时进行估算,我们都是在预测未来,并会接受某种程度的不确定性。 估算的基础是对软件相应项目的度量。,估算一个软件开发工作的资源、成本及进度需要经验、需要了解以前的有用信息、以及当仅存在定性的数据时进行定量测量的勇气。 估算具有与生俱来的风险,而正是这种风险导致了估算的不确定性。 估算的风险有四个方面:,5.2 软件估算风险,1、项目复杂性 项目复杂性对计划中固有的不确定性产生重大影响,不过,复杂性是一个受到对以前工作的熟悉程度影响的相对的测量。 2、项目规模 项目规模是另一个影响估算准确性的因素。 随着规模的增长,软件中各个元素之间的相互依赖性也迅速增加, 项目规模的增长会对项目的成本及进度产生几何级数级的影响。,3、结构不确定性的程度 结构不确定性的程度也会对估算的风险产生影响。 结构化程度越高,对功能等的分解程度越容易,估算的精度越高、风险越小。 4、历史信息的可用程度 历史信息的可用程度也决定了估算的风险。 当存在大量可用的关于过去的类似项目的软件度量时,估算就会有更大的保证;总体风险也会降低。,5.3 估算的步骤,1、估算的注意点 估算的前提是系统的规模可通过功能点、复杂度或代码行等技术确定; 估算的主要内容是工作量和成本估算; 估算的范围包括,软件生命周期的各阶段; 如果有类似项目的开发经验(即历史基线完备),则生产率等数据可直接使用这些数据;,如果没有类似项目的开发经验,则生产率等数据可由历史基线的平均值得出,或者用专家问卷的方法(即Delphi法)得到; Delphi法是一种利用调查表,充分利用群体知识和经验的一种估算方法. 为了反映通货膨胀、项目复杂性增加、新员工较多等的影响,应随时修正平均生产率的度量值。 估算的各种假设、条件等均应记入文档,并通过评审。,PERT 估算方法,PERT: Program Evaluation & Review Technique(计划评估和评审技术),在没有类似项目做参照时,这是一个很常用的方法。 利用历史数据或凭经验估算,计算三点或期望值。估算变量(规模)的期望值EV(expected value),可以通过乐观值(Sopt)、可能值(Sm)、及悲观值(Spess)估算的加权平均值来计算: EV=(Sopt+4Sm+Spess)/6 其中给予“可能值”估算以最大的权重,并遵循概率分布。,方法一: 根据功能点、复杂度或代码行等进行整个软件规模的估算。 参照类似项目的历史基线,确定项目的生产率; 从生产率和规模估算获得整体工作量; 参照类似项目历史基线的工作量分配比例,确定各个阶段的工作量以及管理工作量和附加工作量;,5.4 工作量的估算,如果没有类似项目历史基线可参照,通过Delphi 或PERT方法确定,或者参照已有项目历史基线的平均值; 考虑项目的特定因素(如:加缓冲时间等)修正估算。,方法二: 将待开发的项目进行分解,直到每个任务可用功能点、复杂度或代码行等进行估算。 参照类似项目的历史基线,确定每个任务的工作量; 参照类似项目历史基线的工作量分配比例,确定各个阶段的工作量以及管理工作量和附加工作量等,最后获得整体工作量; 如果没有类似项目历史基线可参照,通过Delphi 或PERT方法确定,或者参照已有项目历史基线的平均值; 考虑项目的特定因素(如:加缓冲时间等)修正估算。,方法三: 一些公司开发出的经验模型 方法四: 简单直观的“分解累计”方法 方法五: 专家评定方法 方法六: 灵活运用,LOC和FP数据在估算中的使用,在软件项目估算中,在两个方面使用了LOC和FP数据: 把LOC和FP数据当做一个估算变量,用于量度软件每一个元素的规模。 LOC和FP数据作为从过去项目中收集到的基线数据,与其它估算变量联合使用, 进行成本和工作量的估算。,LOC和FP是两个不同的估算技术。两者的共性在于: 项目计划人员 给出一个有界的软件范围的叙述; 由此叙述尝试把软件分解成一些小的可分别独立进行估算的子功能; 对每一个子功能估算其LOC或FP把基线生产率度量(如LOCPM或FPPM,PM指人月)用做特定的估算变量,导出子功能的成本或工作量; 将子功能的估算进行综合后就能得到整个项目的总估算。,LOC或FP估算技术对于分解所需要的详细程度是不同的。 用LOC做为估算变量时,必须进行功能分解, 且需要达到很详细的程度。而估算FP时需要的数据是宏观的量,当把FP当做估算变量时不需分解得很详细。 LOC是直接估算的, 而FP是通过估计输入、输出、数据文件、查询和外部接口的数目,以及14种复杂性校正值间接地确定的。,项目计划人员可对每一个分解的功能提出一个有代表性的估算值范围。 利用历史数据或凭实际经验(当其它的方法失效时),对每个功能分别按最佳的、可能的、悲观的三种情况给出LOC或FP估计值。记作a、m、b。 接着计算LOC或FP的期望值 E。 E (a4mb)6,所有子功能的总估算变量值除以相应于该估算变量的平均生产率度量得到项目的总工作量。 例如,若假定总的FP估算值是310,基于过去项目的平均FP生产率是5.5FPPM,则项目的总工作量是: 工作量 3105.5 56 PM 作为LOC和FP估算技术的实例,考察一个为计算机辅助设计(CAD)应用而开发的软件包。,系统定义评审指明: CAD软件包是在一个工作站上运行,其接口必须使用各种计算机图形设备,包括鼠标器、数字化仪、高分辩率彩色显示器和激光打印机。 在这个实例中,使用LOC做为估算变量。 根据系统规格说明, 软件范围的初步叙述如下:,软件将从操作员那里接收2维或3维几何数据; 操作员通过用户界面与 CAD系统交互并控制它,这种用户界面将表现出很好的人机接口设计特性; 所有的几何数据和其它支持信息保存在一个CAD数据库内; 要开发一些设计分析模块以产生在各种图形设备上显示的输出; 软件要设计得能控制并与能各种外部设备,包括鼠标器、数字化仪、激光打印机和绘图仪交互。,经过分解, 识别出下列主要软件功能: 用户界面和控制功能 二维几何分析 三维几何分析 数据库管理 计算机图形显示功能 外设控制PC 设计分析模块 通过分解,可得到如下估算表,估算表,从历史的基线数据求出生产率度量,即行PM和元行。 需要根据复杂性程度的不同,对各功能使用不同的生产率度量值。 在表中的 成本 = LOC的期望值 E与元行相乘,工作量 = 用LOC 的期望值 E与行PM相除。 因此可得,该项目总成本的估算值为657,000元,总工作量的估算值为145人月(PM)。,采用FP法进行估算,调整因子,最后得出FP的估算值; FP=总计数值X0.650.01 x SUM(Fi)372 使用功能点法进行规范化的历史数据表明,这类系统的平均生产率是 65 FPPM。如果一个劳动力价格是每月 8 000美元,则每个 FP的成本是 1230美元。可以得到,总的项目成本估算是: 457560美元,工作量估算是 58PM。,工作量估算,工作量估算是估算任何工程开发项目成本的最普遍使用的技术。 每一项目任务的解决都需要花费若干工作量 (人日、人月或人年)。 每一个工作量单位都对应于一定的货币成本,从而可以由此做出成本估算。,工作量估算开始于从软件项目范围抽出软件功能。 接着给出为实现每一软件功能所必须执行的一系列软件工程任务,包括需求分析、设计、编码和测试。 针对每一软件功能,估算完成各个软件工程任务所需要的工作量(如人月)。同时,把劳动费用率(即成本单位工作量)加到每个软件工程任务上。,对于每个软件工程任务,劳动费用率都可能不同。高级技术人员主要投入到需求分析和早期的设计任务中,而初级技术人员则进行后期设计任务、编码和早期测试工作,他们所需成本比较低。 最后一个步骤就是计算每一个功能及软件工程任务的工作量和成本。,为了说明工作量估算的使用,考虑上面所介绍的CAD软件。 与每个软件工程任务相关的劳动费用率记入表中费用率(元)这一行,这些数据反映了“负担”的劳动成本,即包括公司开销在内的劳动成本。 在此例中,需求分析的劳动成本为 5,200元PM,比编码和单元测试的劳动成本高出22。,工作量估算表,软件开发成本估算,软件开发成本主要是指软件开发过程中所花费的工作量及相应的代价。它不包括原材料和能源的消耗,主要是人的劳动的消耗。 人的劳动消耗所需代价就是软件产品的开发成本。 软件产品开发成本的计算方法不同于其它物理产品成本的计算。,软件的开发成本是以一次性开发过程所花费的代价来计算的。 软件开发成本的估算,应是从软件计划、需求分析、设计、编码、单元测试、组装测试到确认测试,整个软件开发全过程所花费的代价作为依据的。,成本估算与工作量估算密不可分。 在历史数据完整的情况下,利用类似项目的数据可得到工作量的估算值和单位工作量所需的成本,总成本就相应得到。 成本主要包括: 直接费用 间接费用 设备费用 差旅费用,5.5 成本的估算,项目成本的常用估算方法,成本建模技术 专家判定技术 类比评估技术 自顶向下估算法 自底向上估算法 赢利定价法,自顶向下的估算方法,这种方法的主要思想是从项目的整体出发,进行类推。 估算人员根据以前已完成项目所消耗的总成本(或总工作量),推算将要开发的软件的总成本(或总工作量),然后按比例将它分配到各开发任务单元中去,再来检验它是否能满足要求。,这种方法的优点是估算工作量小,速度快。 缺点是对项目中的特殊困难估计不足,估算出来的成本盲目性大,有时会遗漏被开发软件的某些部分。,自底向上的估计法,这种方法的主要思想是把待开发的软件细分,直到每一个子任务都已经明确所需要的开发工作量,然后把它们加起来,得到软件开发的总工作量。 它的优点是估算各个部分的准确性高。缺点是缺少各项子任务之间相互联系所需要的工作量,还缺少许多与软件开发有关的系统级工作量.,差别估计法,这种方法综合了上述两种方法的优点,其主要思想是把待开发的软件项目与过去已完成的软件项目进行类比,从其开发的各个子任务中区分出类似的部分和不同的部分。 类似的部分按实际量进行计算,不同的部分则采用相应方法进行估算。 这种的方法的优点是可以提高估算的准确程度,缺点是不容易明确“类似”的界限。,专家判定技术,由多位专家进行成本估算 单独一位专家可能会有种种偏见,譬如有乐观的、悲观的、要求在竞争中取胜的、让大家都高兴的种种愿望及政治因素等。 最好由多位专家进行估算,取得多个估算值。 有多种方法把这些估算值合成一个估算值。,一种方法是简单地求各估算值的中值或平均值。其优点是简便。缺点是可能会由于受一、二个极端估算值的影响而产生严重的偏差。 一种方法是召开小组会,使各位专家们统一于或至少同意某一个估算值。优点是可以摈弃蒙昧无知的估算值,缺点是一些组员可能会受权威或政治因素的影响。,Delphi技术,标准Delphi技术 组织者发给每位专家一份软件系统规格说明书和一张记录估算值的表格,请他们进行估算。 专家详细研究软件规格说明书的内容,对该软件提出三个规模的估算值,即: ai(最小) mi(可能) bi(最大) 无记名地填写表格,在填表的过程中,专家互相不进行讨论但可以向组织者提问。 组织者对专家们填在表格中的答复进行整理: a. 计算各位专家估算的期望值 Ei; b. 对专家的估算结果分类摘要。 专家对此估算值另做一次估算。 在综合专家估算结果的基础上,组织专家再次无记名地填写表格。 比较两次估算的结果。若差异很大,则要通过查询找出差异的原因。, 上述过程可重复多次。最终可获得一个得到多数专家共识的软件规模(源代码行数)。在此过程中不得进行小组讨论。 最后,通过与历史资料进行类比,根据过去完成软件项目的规模和成本等信息,推算出该软件每行源代码所需要的成本。然后再乘以该软件源代码行数的估算值,就可得到该软件的成本估算值。,软件开发成本估算的经验模型,软件开发成本估算是依据开发成本估算模型进行估算的。 开发成本估算模型通常采用经验公式来预测软件项目计划所需要的成本、工作量和进度数据。 用以支持大多数模型的经验数据都是从有限的一些项目样本中得到的。还没有一种估算模型能够适用于所有的软件类型和开发环境。,IBM模型,E 5.2L0.91 D 4.1L0.36 14.47E0.35 S 0.54E0.6 DOC 49L1.01 L 是源代码行数(KLOC), E 是工作量(PM), D 是项目持续时间(月), S 是人员需要量(人), DOC是文档数量(页)。,IBM模型是静态单变量模型。 在此模型中,一般指一条机器指令为一行源代码。 一个软件的源代码行数不包括程序注释、作业命令、调试程序在内。 对于非机器指令编写的源程序,例如汇编语言或高级语言程序,应转换成机器指令源代码行数来考虑。 定义: 转换系数机器指令条数非机器语言执行步数。,典型的数学模型如 : E = A + B(ev) C 其中A,B,和C是由经验导出的常数,E是以“人月”为单位的工作量, ev是估算变量如代码行(LOC)或者功能点(FP)。,5.6 常用数学模型,例如基于代码行的数学模型有: Walston-Felix模型 E = 5.2(KLOC)0.91 Bailey-Basili模型 E= 5.5+0.73(KLOC)1.16 Boehm简单模型 E = 3.2(KLOC)1.05 基于功能点的数学模型有: Albrecht模型 E = -13.39 + 0.0545 FP Kemerer 模型 E = 60.627.72810-8 FP3 Maston模型 E = 585.7 + 5.12 FP,5.7 COCOMO模型,COCOMO模型(构造性成本模型), 是一种自顶向下项目成本估算模型,估算公式为: E=A(KDSI)b 模型的层次结构分为: 1. 初级; 2. 中级; 3. 高级。,在该模型中使用的基本量有以下几个: E:开发成本,以人月为单位。 DSI(源指令条数)定义为代码的源程序行数。若一行有两个语句,则算做一条指令。它包括作业控制语句和格式语句,但不包括注释语句。 KDSI1000DSI。,MM(度量单位为人月)表示开发工作量。 TDEV(度量单位为月)表示开发进度。它由工作量决定。 根据开发环境和软件项目的规模,分类 软件开发项目的总体类型: 组织型:规模较小的、简单的软件项目; 嵌入型:指必须要求在一组紧密联系的硬件、软件及操作系统约束下开发的软件项目; 半独立型:指在规模和复杂性上处于中等程度的软件项目。,初级COCOMO模型是一个静态单变量模型, 它用源代码行数(LOC)为自变量的(经验)函数来计算软件开发工作量。,初级COCOMO模型的工作量和进度公式,COCOMO成本曲线,COCOMO进度曲线 3种模式的进度曲线基本相同,人员曲线,中级COCOMO模型则在用LOC为自变量的函数计算软件开发工作量(此时称为名义工作量)的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。,进一步考虑15种影响软件工作量的因素,通过定下乘法因子,修正COCOMO工作量公式和进度公式,可以更合理地估算软件(各阶段)的工作量和进度。 中级COCOMO模型的名义工作量与进度公式如下所示。,中级COCOMO模型的名义工作量与进度公式,15种影响软件工作量的因素 fi,产品因素: 软件可靠性、数据库规模、产品复杂性; 硬件因素: 执行时间限制、存储限制、虚拟机易变性、环境周转时间; 人的因素: 分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验; 项目因素: 现代程序设计技术、软件工具的使用、开发进度限制。,此时,工作量计算公式改成 例1. 一个32KDSI的声音输入系统是一个输入原型,或是一个可行性表演模型。所需可靠性非常低。把此模型看做半独立型软件。则有 MM 3.0(32)1.12 146 又查表知 f10.75,其它 fi1.00,则最终有MM 1460.75 110.,例2. 一个规模为10KDSI的商用微机远程通信的嵌入型软件,使用中级COCOMO模型进行成本估算。 程序名义工作量 MM 14.8 (10)1.20 44.38(MM) 程序实际工作量 MM 44.38 44.381.17 51.5(MM),开发所用时间 TDEV 14.5 (51.5)0.32 8.9 (月) 如果分析员与程序员的工资都按每月6,000美元计算,则该项目的开发人员的工资总额为 51.56,000 309,000 (美元) 做为对比,现在用IBM模型计算: PM 5.2 (10)0.91 414.27 (人月) D 4.1 (10)0.38 9.16 (月) S 0.54 (414.27)0.60 5.1 (人),高级COCOMO模型包括中级 COCOMO模型的所有特性, 但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中每一步骤(分析、设计等)的影响。,例如,关于软件可靠性(RELY)要求的工作量因素分级表(子系统层),如表所示。 使用这些表格,可以比中级COCOMO模型更方便、更准确地估算软件开发工作量。,如果企业没有项目估计方面的历史数据,就不可能归纳出有效的数学模型,那么就采用简单直观的“分解累计”方法好了。 不要企图寻找世界上最先进的数学模型来进行项目估计,那无疑于电脑算命。,5.7.1 产品规模估计方法 (1)项目规划小组先分解产品的功能,制定“产品功能分解与规模估计表” 。软件规模的度量单位主要有:代码行、对象个数、页面数等等。 (2)规划小组各成员独立填写表格。 (3)汇总每个成员的表格,进行对比分析。如果各人估计的差额小于20,则取平均值。如果差额大于20,则转向第(2)步,让各成员重新估计产品的规模,直到各人估计的差额小于20为止。,5.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论