当前位置:首页 » 生产成本 » 软件项目开发成本分析怎么写
扩展阅读
12年老郎酒什么价格 2025-06-10 14:34:03
憩园怎么选择价格 2025-06-10 14:33:00

软件项目开发成本分析怎么写

发布时间: 2022-07-18 16:42:47

Ⅰ 软件项目计划的成本估算

自顶向下估算方法
估算人员参照以前完成的项目所耗费的总成本,来推算将要开发的软件的总成本,然后把它们按阶段、步骤和工作单元进行 分配,这种方法称为自顶向下估算方法。
它的优点是对系统级工作的重视,所以估算中不会遗漏系统级的诸如集成、用户手册和配置管理之类的事务的成本估算,且估算工作量小、 速度快。它的缺点是往往不清楚低级别上的技术性困难问题,而往往这些困难将会使成本上升。
自底向上估算方法
自底向上估算方法是将待开发的软件细分,分别估算每一个子任务所需要的开发工作量,然后将它们加起来 ,得到软件的总开发量。这种方法的优点是对每个部分的估算工作交给负责该部分工作的人来做,所以估算 较为准确。其缺点是其估算往往缺少与软件开发有关的系统工作级工作量,所以估算往往偏低。
差别估算方法
差别估算是将开发项目与一个或多个已完成的类似项目进行比较,找到与某个相类似项目的若干 不同之处,并估算每个不同之处对成本的影响,导出开发项目的总成本。该方法的优点是可以提高估算的准确度, 缺点是不容易明确“差别”的界限。
其他
除上三种还有:
(1)专家估算法。
(2)类推估算法。
(3)算式估算法。 COCOMO估算模型
机构性成本模型COCOMO(Constructive Cost Mode)是最精确、最易于使用的成本估算方法之一。
该模型分为:基本COCOMO模型,是一个静态单变量模型,它是对整个软件系统进行估算;中级COCOMO模型,是一个静态多变量模型;详细COCOMO模型,将软件系统模型分为系统、子系统和模块三个层次。
①基本COCOMO模型估算公式:
E=ab(KLOC)exp(bb)
D=cb(E)exp(db)
式中E为开发所需的人力(人/月)。D为所需的开发时间(月)。KLOC为估计提交的代码行。
ab、bb、cb和db是指不同软件开发方式的值。
②中级COCOMO模型。
其估算公式为:E=ai(KLOC)exp(bi)×乘法因子,ai,bi
Putnam成本估算经验模型
Putnam估算模型是一种动态多变模型,它是假设在软件开发的整个生存期中工作量的分布。如下图:
根据曲线导出关于提交的代码行数L,人力K(人/年)和时间td(年)之间估算公式:
式中Ck是技术状况有关的常数,它的典型值如下:
对于差的开发环境 Ck=2500
对于好的开发环境 Ck=10000
对于有的开发环境 Ck=12500
由上述公式可以得到所需开发工作量的公式:

Ⅱ 一个软件项目如何评估工作量和成本

软件开发成本估算过程可进一步细分为软件规模估算工作量估算成本估算确定软件开发成本等四个过程。

其中成本估算需要对直接人力成本间接人力成本间接非人力成本直接非人力成本分别进行估算。

国家标准《GB/T 36964-2018 软件工程 软件开发成本度量规范》中建议的软件开发成本估算基本流程如下图所示:

国家准中的四个估算过程,层层递进,逐步细化,最终达到科学、一致的成本估算。

一、软件规模估算

通常情况下,规模估算是软件成本估算过程的起点。

估算规模是后续计算软件项目的工作量、成本和进度的主要输入,是项目范围管理的关键,因此,在条件允许的情况下,应首先进行规模估算。

在规模估算过程中,需要注意以下情况:

  1. 在规模估算开始前,应根据可行性研究报告或类似文档明确项目需求及系统边界。项目需求除包含最基本的业务需求外,还应进行初步的子系统/模块划分,并对每一子系统或模块的基本用户需求进行说明,以保证可以根据项目需求进行规模预估。

  2. 依据项目特点和需求详细程度不同,通常估算人员在选择估算方法时应采用纳入国际标准的功能点方法进行功能规模估算,在适用IFPUG或NESMA方法时,可以根据需求的粒度和管理需要,选择预估功能点方法、估算功能点方法或者详细功能点方法。

  3. 若当前的项目需求极其模糊或不确定,可不进行规模估算,而直接采用类比法或类推法估算工作量和成本。

二、工作量估算

在完成规模估算后,应当开展工作量估算工作,若当前项目未开展规模估算,也可直接启动工作量估算工作。

工作量估算时,可采用方程法、类比法、类推法、功能点法:

  • 方程法:即基于基准数据建立参数模型,通过输入各项参数,确定估算值。

  • 类比法:即将待估算项目的部分属性与类似的一组基准数据进行比对,进而确定估算值。

  • 类推法:即将待估算项目的部分属性与高度类似的一个或几个已完成项目的数据进行比对,并进行适当调整后确定估算值。

  • 功能点法:从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计。功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行成为最主流的软件规模度量方法。

在开展工作量估算的过程中,需要注意以下情况:

  1. 当需求极其模糊或不确定时,如果此时具有高度类似的历史项目,则可直接采用类推法,充分利用历史项目数据来粗略估算工作量。

  2. 当需求极其模糊或不确定时,如果此时具有与本项目部分属性类似的一组基准数据,则可直接采用类比法,充分利用基准数据来粗略估算工作量。

  3. 对于规模估算已经开展的项目,可采用方程法,通过输入各项参数,确定待估算项目的工作量。若客户或高层对项目的工期有明确的要求时,在采用方程法估算工作量时,工期要求有可能是方程的参数之一。

  4. 为追求估算的准确性,建议在条件允许的情况下,可采用两种估算方法,对估算结果进行交叉验证,若估算结果差别不大,可直接使用两种估算结果的平均值或以某种估算结果为准,若差别较大,需进行差异分析。

  5. 工作量的估算结果宜为一个范围而不是单一的值。

三、成本估算

在获得了工作量估算结果后,可采用科学的方法进行成本估算。

在成本估算过程中,应需要注意的情况:

  1. 类比法和类推法,同样适用于需求极其模糊或不确定时的成本估算;

  2. 间接成本是否与工作量估算结果相关取决于间接成本分摊计算方式。在绝大多数组织,项目周期越长,项目组成员越多,其分摊的间接成本就越高,此时项目的间接成本与工作量估算结果直接相关;

  3. 直接非人力成本通常与工作量估算结果无关,宜单独分项测算;

  4. 成本估算结果,也通常为一个范围,而不是单一的值。

四、确定软件开发成本

在《软件工程 软件开发成本度量规范》中,将软件开发成本分为四类,主要是为便于对成本构成(即哪些成本属于开发成本,哪些不属于开发成本)进行清晰界定。

而在实际确定软件开发成本时,通常并不是分别测定四类成本,加和后获得总成本,而是通常采用以下两种方式确定总成本:

  • 根据人力成本费率及工作量估算直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本;

  • 根据规模综合单价和软件规模,测算出直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本。

在进行软件的规模、工作量、成本估算时应遵循以下原则:

  1. 在规模估算时,应根据项目特点和需求的详细程度选择合适的估算方法;

  2. 充分利用基准数据,采用方程法、类比法或类推法,对工作量和成本进行估算;

  3. 工作量和成本的估算结果宜为一个范围值;

  4. 在进行成本估算时,如有明确的工期要求,应充分考虑工期对项目成本的影响,可以根据项目实际情况以及工期对项目的影响程度,对成本的估算结果进行调整;

  5. 成本估算过程中宜采用不同的方法分别估算并进行交叉验证。如果不同方法的估算结果产生较大差异,可采用专家评审方法确定估算结果,也可使用较简单的加权平均方法;

  6. 在软件项目的不同场景下(如预算、招投标、项目计划和变更管理等)采用国家标准时,相关要求见国家标准中附录A。

除了上述主要原则外,我们还需注意在使用基准数据时:

  • 对于委托方和第三方,建议使用或参考软件行业基准数据进行估算。估算模型的调整因子的增减或取值有可能随着行业基准数据的变化而变化。

  • 对于开发方,在引入行业基准数据的基础上,可逐步建立组织级基准数据库,以提高估算精度。组织级基准数据定义应与行业基准数据定义保持一致,以便于与行业基准数据进行比对分析,并持续提升组织能力。

Ⅲ 成本分析报告怎么写

楼主你好!拙见
要正确进行成本分析,关键是定量分析。下面我简要介绍一下定量分析的方法。
首先贵单位应制定对各种产品分别制定标准成本,该标准成本应当是通过努力可以实现的,略低于平时生产的平均成本,这样做是为了明确一个努力方向,该标准应保持相对的稳定性。该标准成本分别按直接材料、直接人工、变动制造费用、固定制造费用四个项目制定,每一项都分解成二、三个因素标准来分别进行考核。
有了标准成本,月末就可以对成本差异进行因素分析了,方法如下:
1、直接材料成本差异分为价格差异和数量差异。
价格差异=实际数量*(实际价格-标准价格)
数量差异=(实际数量-标准数量)*标准价格
两者相加就是直接材料成本差异。
2、直接人工成本差异分为工资率差异和人工效率差异。
工资率差异=实际工时*(实际工资率-标准工资率)
人工效率差异=(实际工时-标准工时)*标准工资率
两者相加就是直接人工成本差异。
3、变动制造费用差异分为耗费差异和效率差异。
耗费差异=实际工时*(变动制造费用实际分配率-变动制造费用标准分配率)
效率差异=(实际工时-标准工时)*变动制造费用标准分配率
两者相加就是变动制造费用差异。
4、固定制造费用差异分为耗费差异、闲置能量差异、效率差异。
耗费差异=固定制造费用实际数-固定制造费用标准分配率*生产能量
闲置能量差异=固定制造费用预算数-实际工时*固定制造费用标准分配率
效率差异=实际工时*固定制造费用标准分配率-标准工时*固定制造费用标准分配率
三者相加就是固定制造费用差异。

Ⅳ 成本分析报告怎么写啊,主要写哪些内容啊。

成本分析报告一般包括以下内容:
1)当期成本项目数据及其比例;
2)当期成本数据与历史平均(或上期)成本数据的变动;
3)成本数据变动率及其原因分析。
以上个人观点,供参考。

Ⅳ 软件成本评估都包含哪些内容

完整的软件造价评估应该包含哪些?

1 估算基础

  • 对估算对象(需求、任务等)的拆分颗粒度定义了上限与下限,以提升估算的准确度。

  • 完备识别了估算对象,没有遗漏的需求或任务。

  • 估算人员经过了估算方法的系统培训。

  • 定义了组织级的估算方法。

2 规模估算

  • 从不估算规模或经验估算规模升级为客观度量规模,比如采用国际标准的功能点方法或自定义的规模度量方法,无论是哪种方法,规模与工作量之间应该是强相关的才是合理的。

  • 如果对本公司的项目而言,规模与工作量不强相关,也可以是复杂度等其他因子,对这些因子应该也与工作量做了相关性分析,与工作量应该强相关才是合理的。

3 工作量估算

  • 建立了从规模的客观度量用定量模型推算出项目总工作量。

  • 建立了工作量分布百分比的性能基线,可以从总工作量推算各阶段或各类任务的工作量。比如开发的工作量、测试的工作量。

  • 能够用PPB或PPM推算出各种关键活动的最少投入工作量,比如需求评审的工作量、代码评审的工作量、系统测试的工作量等。

  • 工作量的估算结果应该是一个区间,而不是单点值。如,总工作量不超过100人月。

4 成本估算

  • 从工作量到成本有定量的计算方法。

  • 成本的估算结果应该也是一个区间,而不是单点值。比如不超过30万,或者在25到30万之间等。

5 工期估算

  • 识别了项目的关键路径与关键链。

  • 对项目的工期进行了模拟,得到满足项目工期要求的概率有多大。如果概率太低,对关键路链上的任务、投入的资源与需要完成的需求进行了优化。

6 评审与修订估算

  • 保存了估算记录,估算结果经过了评审。

  • 随着需求和任务的明确,在开发过程中修订了估算结果。

7 持续改进估算过程

  • 对比了估算结果与实际结果,对估算偏差率建立了过程性能基线或过程性能模型。

  • 总结了估算有关的经验教训。

  • 对估算方法和过程进行了持续优化。

  • 跟踪检查了估算方法与过程在组织级的落地实施情况。

Ⅵ 项目成本估算方法的IT项目开发成本的估算方法

项目成本估算方法的IT项目开发成本的估算方法

如今,不少企业都想拥有属于自己企业或产品的手机APP,但其中最困扰企业主的问题就是:开发一款手机APP到底需要多少钱?

简单点来说,要视手机APP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高。

四、APP开发公司的所在地

需要注意的是,同样实力的APP开发公司,在不同的城市也会导致APP的成本费用高一些

Ⅶ 软件项目的成本如何估算

定制软件开发是软件开发的一个领域,开发定制的数字技术解决方案以满足特定业务组织的特定需求。话虽如此,任何投资于定制软件开发的组织都必须有适当的计划和预算。定制软件开发项目有两个非常重要的限制需要考虑:时间和成本。(准确估算软件开发项目的成本是保障其整体成功的关键)。

在为某个定制软件开发项目制定计划时,组织或个人会问两个问题。

“多少钱?”

“多长时间?”


一、确定定制软件开发的基础工作

要确定和估算某个软件开发项目的成本,必须了解定制软件开发的基础知识。更具体地说,您必须知道问题的答案:

“定制软件开发是如何执行的?”

为了最简单、最全面地回答这个问题,需要讨论以下几点,它们是定制软件开发的基础。

  • 确定需求——它有助于更好地估算成本,还可以正确开发和执行开发任务。

  • 计划整个过程并设定目标——为整个软件项目开发周期制定适当的计划可以在时间和成本管理方面大有帮助。

  • 详细文档——必须记录项目计划、实施计划、测试计划、范围说明书和培训计划中的所有内容。

  • 为定制软件寻找合适的专业团队——能够高效工作并且能够同时处理多项任务,为整个过程提升效益。


二、确定影响定制软件开发成本的因素

在下面这一部分,讨论影响自定义软件开发项目的关键因素。确定软件开发项目的成本需要组织或个人考虑并考虑这些因素。

  • 软件的规模和类型:软件的规模和类型是决定开发成本的两个关键因素。

例如,移动应用程序或电子商务商店将比银行或医院 ERP 解决方案等其他类型的软件便宜。自定义软件、仓库管理、安全应用程序和 CRM 解决方案的类型通常更加昂贵和耗时。

  • 复杂性:开发的复杂性是影响整体定制软件开发估算的关键因素。

  • 设计结构:设计结构有两个关键领域:创意设计和UI/UX设计。这两个因素对于项目的总成本都是必不可少的。

  • 集成:第三方集成需要大量的精力和资源。

  • 数据迁移:数据迁移是一个非常具体和准确的过程,需要自定义脚本和多个渠道。

  • 开发时间:开发时间是影响定制软件开发成本的关键因素,人力成本是最大的支出。

  • 功能和平台:尽管听起来很明显,软件运行的平台及其功能对您需要在产品上进行的整体投资有重大影响。

  • 测试:有助于确定软件的效率和功能,还涉及一些影响项目总成本的支出。

  • 维护:在成本估算时,还必须考虑某种定制软件产品的维护和支持类型。


三、如何估算定制软件的规模

快速功能点方法是依据国际标准《ISO/IEC 24570-2005软件工程NESMA功能尺度测量法2.1版功能点分析应用的定义和计数指南》提出的一种软件规模度量方法。

该方法适用于软件项目早期、中期、后期等各个阶段的规模估算或测量。

快速功能点方法进行规模估算或测量的基本过程或步骤如下:

  • 确定计数类型

  • 识别系统边界

  • 识别功能点计数项

  • 计算未调整的功能点数

  • 计算调整后的功能点数。

那么就让新星为大家详细对每个步骤进行剖析:

1、确定计数类型

根据需求或项目的类型确定计数类型。

计数类型分为三种:新开发延续开发已有系统计数

  • 对于新开发需求或项目,对预计(或实际)投产的功能进行计数;

  • 对于延续开发需求或项目,对预计(或实际)新增、修改及删除的功能均进行计数;

  • 对于已有系统,对实际的功能进行计数。

2、识别系统边界

在识别系统边界的时候应注意:

  • 应从用户视角出发,不受系统实现影响;

  • 主要是为了区分内部逻辑文件(ILF)和外部接口文件(EIF);

  • 事务功能应穿越识别的系统边界。

3、识别功能点计数项

功能点计数项分为数据功能和交易功能两类。

  • 数据功能——包括内部逻辑文件(ILF)、外部接口文件(EIF);

  • 交易功能——包括外部输入(EI)、外部输出(EO)、外部查询(EQ)。

数据功能:系统提供给用户的满足产品内部和外部数据需求的功能,即本系统管理或使用那些业务数据(业务对象),如“客户信息”“账户交易记录”等。内部逻辑文件或外部接口文件所指的“文件”不是传统数据处理意义上的文件,而是指一组客户可识别的、逻辑上相互关联的数据或者控制信息。因此,这些文件和物理上的数据集合(如数据库表)没有必然的对应关系。

交易功能:系统提供给用户的处理数据的功能,即本系统如何处理和使用那些业务数据(业务对象),如“转账”“修改黑名单生成规则”“查询交易记录”等。交易功能又称为基本过程,是用户可识别的,业务上的一组原子操作,可能由多个处理逻辑构成。例如,“添加柜员信息”这个基本过程可能包含“信息校验”“修改确认”“修改结果反馈”等一系列处理逻辑。

3、计算未调整的功能点数

a.采用预估功能点进行计数,计算公式如下:

FP=35ILF+15EIF

——FP:未调整的功能点数,单位为功能点;

——ILF:内部逻辑文件的数量;

——EIF:外部接口文件的数量。

b.采用估算功能点进行计数,计算公式如下:

FP=10ILF+7EIF+4EI+5EO+4*EQ

——FP:未调整的功能点数,单位为功能点;

——ILF:内部逻辑文件的数量;

——EIF:外部接口文件的数量;

——EI:外部输入的数量;

——EO:外部输出的数量;

——EQ:外部查询的数量。

5、计算调整后的功能点数

根据不同的规模测算阶段,需要考虑隐含需求及需求变更对规模的影响,因此,需要根据规模计数时机进行规模调整。

调整后的功能点数(AFP),计算公式如下:

AFP=FP*CF

——AFP:调整后的功能点数,单位为功能点;

——FP:未调整的功能点数,单位为功能点;

——CF:规模变更调整因子,依据行业数据,项目估算早期(如概预算阶段)通常取值为1.5;项目估算中期(如招投评标、项目立项、技术方案阶段)通常取值为1.26;项目估算中后期(如需求分析完成及后评价)通常取值为1.0。


四、估算软件项目开发成本

得出功能点数后,结合当地人力成本成本费率和项目非人力成本支出可以估算出软件项目开发成本。

Ⅷ 做软件开发的成本究竟如何估算

软件成本评估的6个步骤:

1、软件规模评估:

软件规模评估是软件成本评估的基础,是为了保证软件成本评估结果的客观性和透明性,软件规模信息必不可少。

在软件规模评估过程中,如果能够以软件功能点方法作为主要的软件规模评估方法,同时辅以其他的非标准评估方法,例如代码行方法、用例数方法等,应用不同的软件规模评估方法对规模评估结果进行真实性交叉检验,一方面可以提高软件规模评估结果的可信度;另一方面,也可以对不同类型的项目干系人也会具有更强的说服力。

在实际的软件规模评估过程中,软件组织或者个人也可以根据自身的特点采用有别于上述评估方法的其他方法。但要注意的是,不管采用哪种软件规模评估方法,都要尽可能的保证这个方法所评估结果的一致性和客观性。

2、软件工作量评估

如果说我们能够算出开发软件、维护软件所投入的人员工作量,那么我们也就相当于得到了相应的软件成本。在软件行业中的绝大多数项目里面,影响软件工作量的最主要因素还是软件规模因素,当软件规模越来越大时,也就意味着我们需要投入的工作量越多,这两者之间是存在着正相关的关系。

在软件工作量的评估中,还包含了五个小步骤,也就是收集历史工作量数据、分析历史工作量数据、建立工作量评估模型、评估工作量、工作量模型的标定和更新。通过这些步骤可以积累更多关于软件组织开发工作量和维护工作量的数据,在此基础之上,建立相应的工作量评估模型,从而为后续的工作量评估任务提供支持方法。

3、软件阶段工作量评估

在这个步骤中,软件成本评估团队应该充分考虑软件项目的工期因素,对软件项目总工作量安排和各个阶段工作量安排进行优化分析,将软件项目的总工作量以合理可行的方式分解为各个阶段的工作量。

不仅如此,还要考虑软件项目工期所面临的各种工期约束条件,例如一些来自客户的强制工期要求、市场竞争性、可用的人力资源、项目各阶段人力资源分配的合理比例等约束条件,都在这个步骤中明确介绍了一系列阶段工作量安排的改进和优化方法,包括阶段工作量汇总法、资源平滑法、快速跟踪法、赶工法以及软件阶段工作量的可行性评估方法等。

这些方法的主要目的就是在于将软件工作总量以合理、可行的方式分配到软件项目的各个阶段,确保在不超出工作总量的前提下,尽可能降低人员成本、优化人力资源配置,为软件预算、软件开发计划制定等管理活动提供充分的决策支持信息。

4、软件人员成本评估

在这个步骤里面,我们将会详细说明如何在软件开发和维护所需的工作量转换为对应的费用信息,以便为相关的项目外部干系人提供更直接的决策依据。在软件人员成本评估中,也包含有单一人员成本评估法、分类人员成本评估法和行业人员成本评估法。

5、软件风险评估

在软件开发的过程中,许多软件组织明确认识到软件行业的开发人员已经默认和接受了无偿加班这一行业事实,这样一来,就算没有识别相应的风险信息,但也没有严重后果,也就是说,如果风险发生了,那就加班。

这个步骤中通过应用不同的风险评价方法,将软件项目的风险信息转换为项目的成本信息,从而建立软件项目的风险预算。

6、软件成本报告与更新

软件项目在开发过程中时,经常容易发生各种软件需求变更、人员变更、工期变更等多种类型的变更,这些变更无一例外地将对软件成本产生明显的影响。

在这个步骤中,可以分析软件成本更新面临的困难,有哪些典型的软件成本更新的信息来源,从机制设计的角度确保尽可能全面获取软件成本变更信息。最后遵循软件组织所建立的软件成本更新过程,将软件成本变更信息反映到更新后的软件成本评估结果中。

Ⅸ 软件开发的成本

软件开发成本主要指软件开发过程中所花费的工作量及相应的代价。

在对一个软件项目进行开发成本估算时,应该包括从项目立项直至项目研发活动结束所花费的资源总和,并且可以按阶段进行估算或测量。

软件开成本估算的过程可分为:估算规模、估算工作量、估算工期和估算成本这4个过程,最终确定软件成本。其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。

开发平台

软件开发平台源于繁琐的实践开发过程中。开发人员在实践中将常用的函数、类、抽象、接口等进行总结、封装,成为了可以重复使用的“中间件”,而随着“中间件”的成熟和通用,功能更强大、更能满足企业级客户需求的——软件开发平台应运而生。

平台是一段时间内科研成果的汇聚,也是阶段性平台期的标志,为行业进入新的研发领域提供了基础。由于平台对企业核心竞争力的提升非常明显,国内的管理软件市场,软件开发平台的应用已经成为一种趋势。

以上内容参考:网络-软件开发

Ⅹ 如何确定软件的开发成本价

软件开发成本估算过程可进一步细分为软件规模估算、工作量估算、成本估算和确定软件开发成本等四个过程。

其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。

国家标准《GB/T 36964-2018 软件工程 软件开发成本度量规范》中建议的软件开发成本估算基本流程如下图所示:

国家准中的四个估算过程,层层递进,逐步细化,最终达到科学、一致的成本估算。

一、软件规模估算

通常情况下,规模估算是软件成本估算过程的起点。

估算规模是后续计算软件项目的工作量、成本和进度的主要输入,是项目范围管理的关键,因此,在条件允许的情况下,应首先进行规模估算。

在规模估算过程中,需要注意以下情况:

1.在规模估算开始前,应根据可行性研究报告或类似文档明确项目需求及系统边界。项目需求除包含最基本的业务需求外,还应进行初步的子系统/模块划分,并对每一子系统或模块的基本用户需求进行说明,以保证可以根据项目需求进行规模预估。

2.依据项目特点和需求详细程度不同,通常估算人员在选择估算方法时应采用纳入国际标准的功能点方法进行功能规模估算,在适用IFPUG或NESMA方法时,可以根据需求的粒度和管理需要,选择预估功能点方法、估算功能点方法或者详细功能点方法。

3.若当前的项目需求极其模糊或不确定,可不进行规模估算,而直接采用类比法或类推法估算工作量和成本。

二、工作量估算

在完成规模估算后,应当开展工作量估算工作,若当前项目未开展规模估算,也可直接启动工作量估算工作。

工作量估算时,可采用方程法、类比法、类推法、功能点法:

方程法:即基于基准数据建立参数模型,通过输入各项参数,确定估算值。

类比法:即将待估算项目的部分属性与类似的一组基准数据进行比对,进而确定估算值。

类推法:即将待估算项目的部分属性与高度类似的一个或几个已完成项目的数据进行比对,并进行适当调整后确定估算值。

功能点法:从用户视角出发,通过量化系统功能来度量软件的规模,这种度量主要基于系统的逻辑设计。功能点规模度量方法在国际上的应用已经比较广泛,并且已经取代代码行成为最主流的软件规模度量方法。

在开展工作量估算的过程中,需要注意以下情况:

1.当需求极其模糊或不确定时,如果此时具有高度类似的历史项目,则可直接采用类推法,充分利用历史项目数据来粗略估算工作量。

2.当需求极其模糊或不确定时,如果此时具有与本项目部分属性类似的一组基准数据,则可直接采用类比法,充分利用基准数据来粗略估算工作量。

3.对于规模估算已经开展的项目,可采用方程法,通过输入各项参数,确定待估算项目的工作量。若客户或高层对项目的工期有明确的要求时,在采用方程法估算工作量时,工期要求有可能是方程的参数之一。

4.为追求估算的准确性,建议在条件允许的情况下,可采用两种估算方法,对估算结果进行交叉验证,若估算结果差别不大,可直接使用两种估算结果的平均值或以某种估算结果为准,若差别较大,需进行差异分析。

5.工作量的估算结果宜为一个范围而不是单一的值。

三、成本估算

在获得了工作量估算结果后,可采用科学的方法进行成本估算。

在成本估算过程中,应需要注意的情况:

1.类比法和类推法,同样适用于需求极其模糊或不确定时的成本估算;

2.间接成本是否与工作量估算结果相关取决于间接成本分摊计算方式。在绝大多数组织,项目周期越长,项目组成员越多,其分摊的间接成本就越高,此时项目的间接成本与工作量估算结果直接相关;

3.直接非人力成本通常与工作量估算结果无关,宜单独分项测算;

4. 成本估算结果,也通常为一个范围,而不是单一的值。

四、确定软件开发成本

在《软件工程 软件开发成本度量规范》中,将软件开发成本分为四类,主要是为便于对成本构成(即哪些成本属于开发成本,哪些不属于开发成本)进行清晰界定。

而在实际确定软件开发成本时,通常并不是分别测定四类成本,加和后获得总成本,而是通常采用以下两种方式确定总成本:

1.根据人力成本费率及工作量估算直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本;

2.根据规模综合单价和软件规模,测算出直接人力成本和间接成本之和,再加上直接非人力成本,获得总成本。

在进行软件的规模、工作量、成本估算时应遵循以下原则:

1.在规模估算时,应根据项目特点和需求的详细程度选择合适的估算方法;

2.充分利用基准数据,采用方程法、类比法或类推法,对工作量和成本进行估算;

3.工作量和成本的估算结果宜为一个范围值;

4.在进行成本估算时,如有明确的工期要求,应充分考虑工期对项目成本的影响,可以根据项目实际情况以及工期对项目的影响程度,对成本的估算结果进行调整;

5.成本估算过程中宜采用不同的方法分别估算并进行交叉验证。如果不同方法的估算结果产生较大差异,可采用专家评审方法确定估算结果,也可使用较简单的加权平均方法;

6.在软件项目的不同场景下(如预算、招投标、项目计划和变更管理等)采用国家标准时,相关要求见国家标准中附录A。

除了上述主要原则外,我们还需注意在使用基准数据时:

1. 对于委托方和第三方,建议使用或参考软件行业基准数据进行估算。估算模型的调整因子的增减或取值有可能随着行业基准数据的变化而变化。

2.对于开发方,在引入行业基准数据的基础上,可逐步建立组织级基准数据库,以提高估算精度。组织级基准数据定义应与行业基准数据定义保持一致,以便于与行业基准数据进行比对分析,并持续提升组织能力。