第六章软件项目规模成本估算

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

chapter__60软件开发项目管理第六章软件项目规模成本估算chapter__61本章要点一、软件项目规模成本的概念二、估算的过程三、估算的方法四、成本预算五、项目核心(进度)计划—续六、案例分析chapter__62成本管理过程资源计划编制:确定项目需要的资源种类和数量成本估算:中心环节编制一个为完成项目各活动所需要的资源成本的近似估算成本预算:项目进度将总成本估算分配到各单项工作活动上成本控制:项目跟踪控制项目预算的变更资源和资源平衡资源的种类•劳动力(Labour)•设备(Equipment)•原材料(Material)•其他(Other):指不符合上述分类的资源,例如分包合同、租约等。资源平衡技术•可储备资源与不可储备资源•平衡资源•稀缺的资源资源平衡的基本过程n建立网络,将资源分配给各项活动。n首先按尽快原则安排活动——含有最迟原则或固定日期的活动除外。n建立资源需求直方图。n决定资源上限(可使用最大量),找出资源冲突,也就是说,指出何时需要量超过可使用量。微软Project软件和其他项目管理出版物将这种情况称作资源过度配置(ResourceOverallocation)。n重新安排有松闲时间(浮动时间)的活动以减少资源冲突的数量。如果有可能,可在它们的松闲时间限度内重新安排这些活动,以避免更改项目的终止日期。A=2天B=5天C=3天资源平衡示例项目网络图中标出了活动A、B、C及其历时,活动A有3天时差,活动C有2天时差,假设活动A需要2个员工,活动B需要4个员工,活动C需要2个员工。1342AAAABBBBBBBBBBBBBBBBCCCBBCCCBBAACCCAACCCBBBBBBBBBBBBBBBBBBBB8765432187654321012345012345如果所有活动同一天开始的资源使用如果活动C延迟2天开始的资源使用资源平衡的其他过程n增员或延长加班时间以增加资源。n延长项目工期,这将增强所有活动的浮动时间(Float),以增加重新进行进度安排的选择。n削减活动以减少资源需求。n改变网络的逻辑(例如,活动的顺序)。n限制项目范围。n将大项目细分。chapter__67关于估算估算不是很准确的,有误差的经验(历史)数据非常重要不要太迷信数学模型chapter__68软件项目规模软件项目规模即工作量,是从软件项目范围中抽出的软件功能,然后确定每个软件功能所必须执行的一系列软件工程任务包括:软件规划,软件管理,需求,设计,编码,测试,以及后期的维护等任务。chapter__69规模的单位LOC(LineofCode)源代码程序长度的测量FP(FunctionPoint)用系统的功能数量来测量人月人天人年chapter__610软件项目成本完成软件规模相应付出的代价。待开发的软件项目需要的资金。人的劳动的消耗所需要的代价是软件产品的主要成本开发成本是以一次性开发过程所花费的代价来计算的chapter__611成本的单位货币单位人民币元美元……..chapter__612软件的规模和成本的关系规模是成本的主要因素,是成本估算的基础有了规模就确定了成本,chapter__613成本估算定义对完成项目所需费用的估计和计划包括预测开发一个软件系统所需要的总工作量的过程。是一种量化的结果可以有一些误差成本估算不同于项目定价贯穿于软件的生存周期。chapter__614本章要点一、软件项目规模成本的概念二、估算的过程三、估算的方法四、成本预算五、项目核心(进度)计划—续六、案例分析chapter__615成本估算过程估算输入估算结果成本估算方法chapter__616成本估算输入项目需求、WBS历史项目度量资源要求(资源编制计划)资源消耗率:如人员成本:100元/小时进度规划:项目总进度(一般是合同要求)学习曲线chapter__617成本估算直接成本间接成本chapter__618直接成本与具体项目相关的成本chapter__619间接成本不能具体到某个项目中的成本,可以分摊到各个具体项目中的成本,例如:培训房租水电员工福利市场费用管理费其他等等chapter__620项目估算结果估算文件包括资源,资源的数量,质量标准,估算成本等信息单位:一般是货币单位BAC(BudgetAtcompletion)估算说明工作范围估算的基础和依据估算的假设估算的误差变动等chapter__621本章要点一、软件项目规模成本的概念二、估算的过程三、估算的方法四、成本预算五、项目核心(进度)计划—续六、案例分析chapter__622估算的基本方法1.代码行、功能点、对象点2.类比(自顶向下)估算法3.自下而上估算法4.参数法估算法5.专家估算法chapter__623代码行(LOC)从软件程序量的角度定义项目规模。要求功能分解足够详细的有一定的经验数据(类比和经验方法)与具体的编程语言有关代码行(LOC)chapter__624chapter__425代码行(LOC)优、缺点n优点l代码是所有软件开发项目都有的“产品”,而且很容易计算代码行数。n缺点1.对代码行没有公认的可接受的标准定义2.代码行数量依赖于所用的编程语言和个人的编程风格.3.在项目早期,需求不稳定、设计不成熟、实现不确定的情况下很难准确地估算代码量.4.代码行强调编码的工作量,只是项目实现阶段的一部分第26页某软件公司统计发现该公司每一万行C语言源代码形成的源文件(.c和.h文件)约为250K。某项目的源文件大小为3.75M,则可估计该项目源代码大约为15万行,该项目累计投入工作量为240人月,每人月费用为10000元(包括人均工资、福利、办公费用公滩等)。则该项目中1LOC的价值为:(240×10000)/150000=16元/L。代码行(LOC)-举例chapter__627功能点(FP)标准功能点(FunctionPoint)是一个被严格定义的概念,不会因为估算人员差异产生显著差别(10%)。用系统的功能数量来测量其规模与实现产品所使用的语言和技术没有关系的两个评估内部基本功能外部基本功能加权和量化chapter__628功能点(FP)的分析方法功能点计算由下列步骤组成:1)对每一项功能,通过计算4类系统外部行为或事务的数目,以及一类内部逻辑文件的数目来估算由一组需求所表达的功能点数目。这5类功能计数项分别是:外部输入:是指用户可以根据需要通过增、删、改来维护内部文件。只有那些对功能的影响方式与其他外部输入不同的输入才计算在内。外部输出:指那些向用户提供的用来生成面向应用的数据的项。只有单独算法或者特殊功能的输出才计算在内。外部查询:是指用户可以通过系统选择特定的数据并显示结果。为了获得这项结果,用户要输入选择信息抓取符合条件的数据。此时没有对数据的处理,是直接从所在的文件抓取信息。每个外部独立的查询计为1。外部文件:是在另一系统中驻留由其他用户进行维护。内部文件:指客户可以使用他们负责维护的数据。第30页3)在估算中对5类功能计数项中的每一类功能计数项按其复杂性的不同分为简单(低)、一般(中)和复杂(高)3个级别。功能复杂性是由某一功能的数据分组和数据元素共同决定的。计算数据元素和无重复的数据分组个数后,将数值和复杂性矩阵对照,就可以确定该功能的复杂性属于高、中、低。下表是5类功能计数的复杂等级。产品中所有功能计数项加权的总和,就形成了该产品的未调整功能点计数(UFC)。5类功能计数的复杂度权重权重项复杂度权重因素简单一般复杂外部输入346外部输出457外部查询346外部文件5710内部文件71015第31页4)这一步是要计算项目中14个技术复杂度因子(TCF)。下表是14个技术复杂度因子,每个因子的取值范围是0~5。技术复杂度因子F1可靠的备份和恢复F2数据通信F3分布式函数F4性能F5大量使用的配置F6联机数据输入F7操作简单性F8在线升级F9复杂界面F10复杂数据处理F11重复使用性F12安装简易性F13多重站点F14易于修改第32页5)最后根据功能点计算公式FP=UFC×TCF计算出调整后的功能点总和。其中:UFC表示未调整功能点计数,TCF表示技术复杂因子。功能点计算公式的含义是:如果对应用程序完全没有特殊的功能要求(即综合特征总值=0),那么功能点数应该比未调整的(原有的)点数降低35%(这也就是“0.65”的含义)。否则,除了降低35%之外,功能点数还应该比未调整的点数增加1%的综合特征总值。第33页chapter__634功能点与代码行的转换语言每个功能点的代码行数C130COBOL110Java55C++50TurboPascal50Packages10-40VisualBasic30PowerBuilder15HTML15SPREADSHEET6chapter__635对象点(OP)对象点是基于对象的软件产品规模估算。著名的Probe方法WattsHumphrey(软件质量之父,CMM创始人)chapter__636对象规模表(C++)方法种类很小小中大很大计算2.345.1311.2524.6654.04数据2.64.798.8416.3130.09I/O9.0112.0616.1521.6228.93逻辑7.5510.9815.9823.2533.83设置3.885.046.568.5311.09文本3.758.0017.0736.4177.66chapter__637Probe方法的步骤1.基于产品需求构建体系结构和概要设计2.对设计中的每个类(面向对象方法中的Class)的输入和交互,标识所设计的对象属于表中哪类方法并估算其复杂性3.将上述标识的结果构造成一个如表形式的矩阵,然后将这个矩阵中的值与表中对应的值相乘4.将上述所有相乘结果相加求和,产生估算结果chapter__638对象点的估计-举例方法种类很小小中大很大计算2.345.13*11.2524.6654.04数据2.64.798.8416.3130.09I/O9.0112.0616.15*21.6228.93逻辑7.5510.9815.9823.2533.83设置3.885.046.568.53*11.09文本3.758.0017.0736.4177.66规模估算5865.13*5+16.15*8+8.53*6=206.03chapter__639估算的基本方法代码行、功能点、对象点类比(自顶向下)估算法自下而上估算法参数法估算法专家估算法chapter__640类比-定义从项目的整体出发,进行类推,即估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后按比例将它分配到各个开发任务单元中是一种自上而下的估算形式chapter__641类比—使用情况有类似的历史项目数据信息不足(要求不是非常精确)的时候在合同期和市场招标时在高层对任务的总的评估chapter__642类比—特点简单易行,花费少具有一定的局限性准确性差,可能导致项目出现困难chapter__643类比—软件重用n将新项目与历史项目比较,估算出各功能的估计值。等价代码行=[(重新设计%+重新编码+重新测试)/3]*已有代码行chapter__645类比—举例证券交易网站需求类似历史数据:10万学习曲线(在一定时间内获得的技能或知识的速率):5-8万chapter__646估算的基本方法代码行、功能点、对象点类比(自顶向下)估算法自下而上估算法参数法估算法专家估算法chapter__647自下而上—定义利用任务分解结构图,对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。chapter__648自下而上—使用情况在进入项目开始以后,WBS以后的开发阶段需要进行准确估算的时候ch

1 / 117
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功