<转>软件项目估算之代码行估算方法

简介: 现在软件在大多数基于计算机的系统中已成为最昂贵的部分,如果软件成本估算的误差很大,就会使盈利变成亏损。   软件项目估算是一种解决问题的形式,在多数情况下,要解决的问题非常复杂,想一次性整体解决比较困难。
现在软件在大多数基于计算机的系统中已成为最昂贵的部分,如果 软件成本估算的误差很大,就会使盈利变成亏损。

  软件项目估算是一种解决问题的形式,在多数情况下,要解决的问题非常复杂,想一次性整体解决比较困难。因此,对问题进行分解,把其分解成一组较小的接近于最终解决的可控的子问题,再定义它们的特性。

  估算技术一般有代码行(LOC)和功能点(FP)估算法,这是两种不同的估算技术,但有许多共同特性。项目计划人员首先给出一个有界的软件范围的叙述,再由此尝试着把软件分解成一些小的可分别独立进行估算的子功能。然后对每一个子功能估算其LOC或FP(即估算变量)。接着,把基线生产率度量用做特定的估算变量,导出子功能的成本或工作量。将子功能的估算进行综合后就能得到整个项目的总估算。

  LOC或FP估算技术对于分解所需要的详细程度是不同的。当用LOC作为估算变量时,功能分解是绝对必要的且需要达到很详细的程度。而估算功能点所需要的数据是宏观的量,当把FP当做估算变量时所需要的分解程度可以不很详细。LOC是直接估算的,而FP是通过估计输入、输出、数据文件、查询和外部接口的数目,以及复杂性校正值间接地确定的。除去所用到的估算变量,项目计划人员必须对每一个分解的功能提出一个有代表性的估算值范围。利用历史数据或凭实际经验,计划人员对每个功能分别按乐观的、可能的、悲观的三种情况给出LOC或FP估计值。

  为了反映开发特性的影响,应当随时修正平均生产率。

  1 LOC(Lines of Code,代码行)估算代码尺寸

  把项目划分为若干个功能,分别计算每个功能的代码长度,所有功能代码行之和即项目的代码长度。

  LOC估算表包括:

  每个功能的代码长度估算值=(乐观值+4*可能值+悲观值)/6

  估算工作量=代码总估算长度/估算生产率

  估算总成本=日薪*估算工作量

  估算行成本=估算总成本/估算代码长度

  估算生产率由经验获得

  2 FP(功能点)估算代码尺寸

  项目的功能点数是几个测量参数(用户输入数、用户输出数、用户查询数、文件数、外部接口数)的功能点之和。

  用户输入数:计算每个用户输入,它们向软件提供面向应用的数据。输入应该与查询区分开来,分别计算。

  用户输出数:计算每个用户输出,它们向软件提供面向应用的信息。这里,输出是指报表、屏幕、出错信息,等等。一个报表中的单个数据项不单独计算。

  用户查询数:一个查询被定义为一次联机输入,它导致软件以联机输出的方式产生实时的响应。每一个不同的查询都要计算。

  文件数:计算每个逻辑的主文件(如数据的一个逻辑组合,它可能是某个大型数据库的一部分或是一个独立的文件)。

  外部接口数:计算所有机器可读的接口(如磁带或磁盘上的数据文件),利用这些接口可以将信息从一个系统传送到另一个系统。

  FP估算表包括:

  每个测量参数的估算FP计数=估算值*加权因子

  项目估算FP=各参数FP计数之和*复杂度调整因子

  估算生产率由经验获得

  估算工作量=项目估算FP/估算生产率

  估算总成本=日薪*估算工作量

  单个FP估算成本=估算总成本/估算FP

 

版权

作者:灵动生活 郝宪玮

出处:http://www.cnblogs.com/ywqu

如果你认为此文章有用,请点击底端的【推荐】让其他人也了解此文章,

img_2c313bac282354945ea179a807d7e70d.jpg

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

相关文章
|
存储 弹性计算 安全
Nginx系列教程(10) - 如何把项目部署到外网?
Nginx系列教程(10) - 如何把项目部署到外网?
873 0
|
存储 关系型数据库 MySQL
mysql(三)用户权限管理
为什么要设置用户权限?MySQL设置用户管理权限的主要目的是为了确保数据库的安全性和数据的机密性。以下是一些原因。
566 1
mysql(三)用户权限管理
|
数据安全/隐私保护
BUUCTF 萌萌哒的八戒 1
BUUCTF 萌萌哒的八戒 1
352 0
|
测试技术 数据库 uml
【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模
【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模
1175 0
【软件工程与UML】第2章 用例图、用例文档、活动图 -- 系统的功能需求建模
|
8月前
|
人工智能 运维 数据可视化
凌晨急诊室诞生的疫苗系统:一个宝妈的AI破局之路
本文分享了一位妈妈在急诊室经历后,将技术与母爱结合的心路历程。从凌晨抱着高烧儿子就医,同时处理工作告警的崩溃时刻,到意识到妈妈和程序员都是“运维工程师”,作者逐步构建了宝宝疫苗管理系统。文章介绍了系统从静态命令行工具升级为动态智能预警系统的全过程,包括环境搭建、核心代码解析及家庭协同功能实现,并总结了碎片时间开发法与防坑指南。最终,作者通过技术赋予母爱温度,为其他妈妈提供了实用资源包,展现了代码背后的人文关怀。
237 5
|
SQL 关系型数据库 数据库连接
详解 Entity Framework(EF)核心组件与数据访问方法探索
Entity Framework是一个ORM框架,简化.NET开发者与数据库的交互。它始于.NET Framework的一部分,但现在可通过NuGet独立获取。ORM允许对象模型直接映射到数据库结构,避免直接编写SQL。
1985 2
详解 Entity Framework(EF)核心组件与数据访问方法探索
|
存储 运维 Kubernetes
K8S基于NFS来动态创建PV【亲测可用】
K8S基于NFS来动态创建PV【亲测可用】
898 2
|
数据采集 缓存 JavaScript
Python神器!WEB自动化测试集成工具 DrissionPage
Python神器!WEB自动化测试集成工具 DrissionPage
463 0
|
机器学习/深度学习 人工智能 算法
智能AI机器人管家
应用场景:四层别墅,每层面积1000平+,有自己的地下停车场,地下酒窖,阳光房,花园,广场。在此场景下想做一个智能机器人管家。 主要功能: 1、自动跟随制定的人,可以根据设定的人的语音指令做一些动作,比如:停下、充电、倒退、去某个地方等等。 2、可以根据设定的人的语音回答一些常见问题,比如:今天天气,股票走势,黄金走势,钢铁走势等能够从网上直接获取到的信息。 3、可以根据设定的人的语音回答一些本地问题,比如家里还有多少酒,调一下某地的监控,花房的温度多少,打开某房间的空调。 4、可以帮助做一些本企业决策性的问题。
下一篇
oss云网关配置