软件项目成本计划

article/2025/10/30 21:35:54

软件项目成本计划

项目规模估算方法

代码行估算法(误差较大)

软件项目规模: 即工作量,例如软件规划,软件管理,需求分析,系统设计,编码,测试,以及后期维护等任务。

规模单位:

  • LOC(Loc of Code) 源代码长度的测量
  • FP(Function Point) 用系统的功能数量来测量
  • 人月
  • 人年
  • 人天

软件项目成本

  • 完成软件规模相应付出的代价
  • 待开发的软件项目需要的资金
  • 人的劳动力的消耗所需要的代价是软件产品的主要成本
  • 货币单位表示成本

代码行估算法

  • 从软件程序量的角度定义项目规模
  • 与具体的编程语言有关
  • 分解足够详细
  • 有一定的经验数据

代码行技术的主要优点

  • 代码是所有软件开发项目都有的"产品",而且容易计算代码行数

代码行技术的缺点

  • 对代码行没有公认的可接受的标准定义
  • 代码行数量依赖于所用的编程语言和个人的编程风格
  • 在项目早期,需求不稳定,设计不成熟,实现不确定的情况下很难准确的估算代码行量
  • 代码行强调编码的工作量,只是项目实现阶段的一部分

功能点估算

传统估算方法- - -功能点估算

  • 最早提出功能点估算法的是阿尔布雷克特(Albrecht),1979年在IBM工作时提出,称为Albrecht功能点
  • 也称为IFPUG(国际功能点用户组织)功能点
  • 适用于信息系统

功能点估算

  • 与实现的语言和技术没有关系
  • 用系统的功能数量来测量其规模
  • 通过评估,加权,量化得出功能点

功能点公式:

FP=UFC*TCF

  • UFC:未调整功能点计数
  • TCF:技术复杂度因子(是对UFC的调整因子)

UFC:未调整功能点技术(从五个角度计算得出)

  • 外部输入(External Inputs:EI):给软件提供面向应用的数据的项(如屏幕、表单、对话框、控件、文件等);在这个过程中,数据穿越外部边界进入到系统内部,并且使用内部逻辑文件的数据。外部输入技术的大小可以通过输入的文件类型,数据元素等个数来定义。
  • 外部输出(External Outputs:EO):向用户提供(经过处理的)面向应用的信息。例如:报表和出错信息等。经过内部逻辑文件的处理向用户提供输出信息。技术大小通过输出文件类型,数据元素个数进行决定权重,再决定技术大小。
  • 外部查询(External Inquiry:EQ):是一个输入引出一个即时的简单输出,没有处理过程。通过输出类型,元素个数决定权重,再决定技术大小。
  • 外部接口文件(External Interface Files:EIF’S):是用户可以识别的一组逻辑相关数据,这组数据只能被引用。用这些接口把信息传送给另一个系统。接口文件的权重通过其中的记录元素类型和数据元素类型来决定。
  • 内部逻辑文件(Internal Logical Files:ILF’S):用户可以识别的一组逻辑相关的数据,而且完全存在于应用的边界之内,并且通过外部输入维护,是逻辑主文件的数目。是系统边界之内的文件,并且通过外部输入维护。

事务组建进行定级
内部逻辑文件或者外部接口文件
功能技术项的复杂度等级
TCF-技术复杂度因子
技术复杂度因子的取值范围
其他功能点方法:

  • Mark II功能点(主要应用在英国)
  • COSMIC-FFP功能点(适用实时系统或者嵌入式系统)

用例点估算法

基于需求用例视图的估算方法。通过需求用例视图中的角色,用例以及相应的复杂度来确定用例点。

用例点估算流程:

  1. 通过用例视图确定用例和角色,以及复杂度级别
  2. 确定用例权值和角色权值相加后获得未调整的用例点
  3. 再计算基数复杂因子,通过因子调整未调整的用例点,获得用例点数
  4. 最后通过项目生产力将用例点换算为工作量

用例点估算方法的基本步骤如下:

  1. 计算未调整的角色权值UAW
  2. 计算未调整的用例权值UUCW
  3. 计算未调整的用例点UUCP
  4. 计算技术因子TCF
  5. 计算环境因子ECF
  6. 计算调整的用例点UCP
  7. 计算工作量(man-hours)

1.计算未调整的角色权值UAW

计算未调整的角色权值UAW

2.计算未调整的用例权值UUCW
计算未调整的用例权值UUCW

3.计算未调整的用例点UUCP
计算未调整的用例点UUCP

4.计算技术和环境因子TCF
计算技术和环境因子TEF

5.计算环境因子ECF
计算环境因子ECF

6.计算调整的用例点UCP
计算调整的用例点UCP

7.计算工作量(man-hours)
计算工作量(man-hours)
总之,用例点估算方法是基于需求用例视图确定角色和用例以及对应的复杂度级别,从而计算出用例点数。

类比(自顶向下)估算法

传统估算方法- - -类比估算: 开发人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量),然后再估算各个工作单元的规模成本。是一种自上而下的估算形式。

类比估算- - -使用情况

  • 信息不足(例如市场招标)的时候
  • 要求不是非常精确估算的时候
  • 有类似的历史项目数据

类比估算- - -主观判断举例

  • 需求类似
  • 类比估算:10万
    历史数据:10万

自下而上估算法

定义: 利用任务分解图(WBS),对各个具体工具包进行详细的成本估算,然后将结果累加起来得出项目总成本。

特点: 相对比较准确,他的准确度来源于每个人物的估算情况,但花费时间。

估算时确定任务投入的人力,时间,成本。

三点估算法

基于任务成本的三种估算值来计算预期成本的方法。

三点估算- - -三种估算值

  • 最可能成本(CM):比较现实的估算成本。即这个估算值的概率最大
  • 最乐观成本(CO):最好情况所得到的估算成本
  • 最悲观成本(CP):最差情况所得到的估算成本

三点估算结果

  • 三角分布:CE=(CO+CM+CP)/3
  • 贝塔分布:CE=(CO+4CM+CP)/6

参数估算法(也叫模型估算)

定义: 通过项目数据(代码行,人数,时间,工时等),进行回归分析,得出回归模型。

通过参数(基于历史项目数据,项目类型不同,环境不同,项目数据就不同,得出的模型就不同)模型估算成本的方法(是统计技术得出的数学模型)

参数模型:

  • 面向LOC驱动的(输入为代码行)
  • 面向FP驱动的(输入为功能点)

整体公式: E=a+b*Sc*M

  • E:以人月表示的工作量
  • a,b,c:经验导出的系数
  • M:调节因子
  • S:主要的输入参数(通常是LOC,FP等)

建议掌握模型:

  • Walston-Felix模型
  • COCOMO模型

Walston-Felix模型
Walston-Felix模型

Walston-Felix模型举例

用java语言估计为1个功能点46行代码
Walston-Felix模型举例
COCOMO模型(Constructive Cost Model)

  • 结构化成本模型
  • 是目前应用最广泛的参数型软件成本估计模型
  • 由Barry Boehm团队开发

COCOMO模型

  • COCOMO 81(81年提出)
  • COCOMO II

COCOMO基本原理

将开发所需的工作量表示为KLOC软件规模和一系列成本因子的函数,基本估算公式为:
公式

  • A:可以校准的常量
  • S:为KLOC软件规模
  • E:为规模的指数,说明不同规模软件具有相对规模经济和不经济性
  • EM:为工作量乘数,反应某个项目特征对完成项目开发所需工作量的影响程度
  • n:为描述软件项目特征的成本驱动因子的个数,驱动因子可调整项目规模

COCOMO 81

模型级别(级别不同估算精度不同)

  • 基本COCOMO
  • 中等COCOMO
  • 高级COCOMO

基本COCOMO: (静态单变量模型)不考虑任何成本驱动,适合在项目开发的初始阶段,项目的相关信息很少,只适合粗略的估算

中等COCOMO: 基本COCOMO模型基础上考虑影响因素,调整模型,实在项目的需求确定以后使用,对项目有所了解之后使用,在基本模型的基础上,通过产品,平台,人员,项目等方面的属性影响因素来调整工作量的估算,估算精度提高

高级COCOMO: 中等COCOMOMO模型基础上考虑各个步骤的影响。是在设计完成后使用,考虑开发不同阶段影响因素的不同影响,对项目进行精确化的估算。一旦软件的各个模块已经确定,估算就可以使用高级模型,估算精度最高

项目类型
项目类型

基本COCOMO-81
基本COCOMO-81
基本COCOMO-81系数表
基本COCOMO-81应用举例
基本COCOMO-81举例

中等COCOMO-81
中等COCOMO-81
乘法因子的成本驱动属性: 分为产品属性,平台属性,人员属性,过程属性4个大类。4个大类又分为15个驱动因子。乘法因子若大于1,说明工作量往高调整,小于1,说明往低调整。
乘法因子
中等COCOMO模型对比基本COCOMO模型,估算值有了一定的调整,因为对项目的产品,平台,人员,过程有了更细的了解。

中等COCOMO-81模型应用举例
中等COCOMO-81举例
高级COCOMO模型

  • 将项目分解为一系列的子系统或子模型
  • 更加准确地调整一个模型的属性
  • 对驱动因子的取值分析更为细致

COCOMO II组成
COCOMO II组成
COCOMO II-应用组装模型
COCOMO II-应用组装模型
COCOMO II-早期设计模型(Early Design): 在系统设计的初始阶段,只涉及了基本的软件结构,未对体系结构详细设计。
COCOMO II-早期设计模型
COCOMO II-早期设计模型-因子和系数
COCOMO II-早期设计模型-因子和系数
COCOMO II-后体系结构模型
在这里插入图片描述
在这里插入图片描述
A是可以校准,目前设定A=2.94,B为0.91
若需要估计复用代码或已生成代码所需工作量,可采用复用模型

复用模型
复用模型
参数模型综述

  • 根据项目数据进行回归分析,得出回归模型作为参数模型
  • 回归分析方法:线性回归,多项式回归,逻辑回归,神经网络,集成方法等
  • 参数模型可以是线性也可以是非线性的

参数估算法
参数估算法

专家估算法

由多为专家进行成本估算,一个专家可能会有偏见,最好由多位专家进行估算,取得多个估算值,最后得出综合的估算值。

Deiphi专家估算

  • 这些专家互相不见面
  • 专家详细研究软件规格说明书后,进行无记名的估算

步骤

  1. 组织者发给每位专家一份软件规格说明和一张记录估算值的表格,请专家估算
  2. 每位专家详细研究软件规格说明后,对该软件提出3个规模的估算值,即最小值ai,最可能值mi,最大值bi
  3. 组织者对专家表格中的答复进行整理,计算每位专家的估算值Ei=(ai+4mi+bi)/6,然后计算出所有专家的期望值Ei=(E1+E2+E3+…+En)/n
  4. 综合结果后,再组织专家无记名填表格,比较估算偏差,并查找原因
  5. 上述过程,重复多次最终可获得一个多数专家共识的软件规模

敏捷估算方法

  • 高层估算:采用轻量级,快速生成
  • 短期估算:进行详细的估算

Story Point估算方法
Story Point估算方法
Story Point估算–常用的两个标准

  • Fibonacci:0,1,2,3,5,8,13,21,34,55,89…
  • Power of 2:0,1,2,4,8,16,32,64…

Fibonacci七个等级

0,1,2,3,5,8,13七个等级

估算步骤

  1. 选取估算为3的story points的Story
  2. 将需要预估的Story与选取的Story进行比较
  3. 如果两个工作量差不多,设置该Story的story point为3
  4. 如果工作量略少,则为2 story point
  5. 如果工作量更少,则为1 story point
  6. 若Story不需要完成,则设为0
  7. 同理,如果略多/更多/再多,设为5/8/13
  8. 若Story超过13 story point,可以认为是Epic,可再分解

成本预算

成本预算是将项目的总成本按照项目的进度分推到各个工作单元(任务项基于WBS分解的结果)中去。
成本预算的目的是生产成本的基线(形成以时间为基准的成本预算基线)可以作为将来成本控制的标准

分配项目成本预算:

  • 给任务分配资源成本(与资源的费率(标准费率,加班费率,每次使用费率)相关)
  • 给任务分配固定资源成本
  • 给任务分配固定成本

估算(BAC)与预算(BCWS)
估算与预算
分配固定资源成本: 当一个项目的资源需要固定数量的资金时,可以向任务分配固定的资源成本。如项目中兼职人员成本。

有些任务是固定成本类型的任务,也就是说管理者知道某项任务的成本不变,不管任务的工期有多长,或不管任务使用了那些资源。在这种情况下,管理者向任务直接分配成本。例如:外包任务,培训任务。

不管采用什么预算方法,最后将总的成本分配到具体的任务中,形成预算。

成本基线
成本基线


http://chatgpt.dhexx.cn/article/cK7h0YMM.shtml

相关文章

「软件项目管理」软件项目范围计划——需求管理与任务分解

软件项目范围计划——需求管理与任务分解 序言一、软件需求定义及层次1、定义2、层次 二、软件需求管理过程1、管理过程2、需求获取3、需求分析4、需求规格编写5、需求验证6、需求变更(1)需求变更管理的主要工作(2)需求变更控制流…

软件项目管理第二篇:项目计划 (1)——范围计划

第二篇:项目计划 第四章:软件项目范围计划——需求管理 1.软件需求: (1)定义: 是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能。 &#xff0…

推荐开源项目计划管理软件 kanboard

本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/79467918 1,关于kanboard 是一个看板管理软件。 是php写的。是一个开源项目管理软件。按照敏捷开发设计的。 项目地址: https://hub.docker.com/r/kanboard/kanboard/ 官方网站…

软件项目管理–进度计划

软件项目管理–进度计划 项目初始–项目计划–项目执行控制–项目结束 项目计划: 范围计划成本计划进度计划质量计划配置管理计划人员与沟通计划风险计划合同计划集成计划 软件项目进度计划 进度计划的重要性 按时完成项目是项目经理最大的挑战之一时间是项目规…

项目管理必备的软件,实用方便

在管理项目的过程中,选择一款好用的项目管理软件是特别的重要的。作为项目经理,我总结了几年来的工作经验和最近的行业发展的角度相结合,总结了4款超级好用的产设项目管理软件,希望对大家有所帮助: 1.Pixso Pixso是一款功能强大…

盘点40余款好用的项目管理软件

本表单按照产品顺序排序,为大家介绍Zoho Projects项目管理软件等40余款产品,帮助大家了解项目管理软件有哪些。 项目管理软件 在这些产品中,Zoho Projects非常适合中小型企业,它的主要功能: 进度管理公开透明 项目群…

电力系统负荷预测基于神经网络模型

电力系统负荷预测是电力系统调度、实时控制、运行计划和发展规划的前提,是电网调度部门和规划部门所必须具有的基本信息。准确的负荷预测有助于提高系统的安全性和稳定性,能够减少发电成本。随着电力市场的建立和发展,短期负荷预测技术已成为…

基于决策树的电网负荷预测

1、情景问题提出及分析 电力系统的作用是对系统内各用户尽可能经济的提供可靠而合乎标准要求的电能。现代电网以系统运行的经济性为首要目标,再加之电能不能大量存储的特点,因此对电力系统的负载预测变得十分重要。 随着技术不断发展,当今越来…

【负荷预测】基于灰色预测算法的负荷预测(Python代码实现)

目录 1 概述 2 流程图 3 入门算例 4 基于灰色预测算法的负荷预测(Python代码实现) 1 概述 “由于数据列的离散性,信息时区内将出现空集(不包含信息的定时区),因此只能按近似的微分方程条件,…

时间序列特征构造:以电力负荷预测为例讲解(python语言)

个人电气博文目录传送门 学好电气全靠它,个人电气博文目录(持续更新中…) 时间序列特征构造 时间序列问题,首先不管是回归问题,还是分类问题。 一个模型的好坏,决定因素由数据集的大小,特征值…

[负荷预测]基于灰色GM(1,1)模型的中长期电力负荷预测

目 录 一、灰色模型GM(1,1)原理 二、模型构建前检验 三、预测精度的检验 3.1 残差检验 3.2 后验差检验 四、灰色模型GM(1,1)算法 五、Matlab编程实现 5.1 程序代码 5.2 输出结果 5.3 结果检验 5.4 预测泛化 六、Python编程实现 6.1 程序…

基于注意力机制的 CNN-BiGRU 短期电力负荷预测方法

提出了一种基于 Attention 机制的CNN -BiGRU(卷积神经网络双向GRU注意力机制)短期电力负荷预测方法,该方法将历史负荷数据作为输入,搭建由一维卷 积层和池化层等组成的 CNN 架构,提取反映负荷复杂动态变化的高维特征…

电力负荷预测任务(基于GRU模型)

数据:2000-2002三年每小时的电力负载 程序以及数据链接(如果受益,请给个关注和star):https://github.com/xzdLYL/electrical_load_prediction 任务目标:以2000,2001年数据训练模型&#xff0c…

机器学习练手---负荷数据预测

纸上得来终觉浅,得知此事要躬行 文章目录 前言一、数据清洗查看特征与label的关联程度查看特征自身的差异性。特征筛选 二、引入模型1.选择多元线性回归模型2.尝试预测 总结 前言 提示:这里可以添加本文要记录的大概内容: 简单记录一下机器…

电力负荷短期预测模型(基于ARIMA)

电力负荷预测 电力分析与预测一.导入数据二.数据的预处理三.基本描述性统计四.构建特征,模型准备①系统聚类法②K-means聚类 五.构建特征,建立预测模型①预测未来一天,各时段的电力负荷②预测未来几天总体电力负荷 电力分析与预测 根据提供的…

深度学习方法在负荷预测中的应用综述(论文阅读)

前言   本篇论文主要介绍了当下用于智能电网电力负荷预测的多种DL方法,并对它们的效果进行了比较。对于RMSE的降低效果上,集成DBN和SVM的方法RMSE降低显著,达到了21.2%。此外,PDRNN方法与ARIMA方法相比有很大的降低,…

电气论文:负荷区间预测(机器学习简单实现)

个人电气博文目录链接: 学好电气全靠它,个人电气博文目录(持续更新中…) 代码图 效果图 论文解锁,是解锁这个专栏。可以看这个专栏的所有文章。 讲解 本文:简单写的模型(未对数据进行降噪,降噪可以看我的小波分解博客。未对区间预测效果进行度量。自己写个公式就可以…

【负荷预测】长短期负荷预测(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🎉作者研究:🏅🏅🏅主要研究方向是电力系统和智能算法、机器学…

基于BiGRU短期电力负荷预测方法

前言 大家好,我是阿光。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10语言环境:python3.7编译器:PyCharmPy…