LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 应用软件开发成本简易估算法

应用软件开发成本简易估算法

2020-09-05 skywalker 来源:区块链网络


此文结合国际标准的几种应用软件开发成本测算方法,去繁就简,从用户方且非专业的角度,提供一套评估应用软件开发成本的快速工具,为用户方编制、安排、衡量应用软件开发的费用提供参考依据。

软件开发费用评估的现状

现在世界的运行,已经完全离不开计算机以及软件系统的支持,可以好不夸张地说,如果某一天整个世界运行的软件都失效了,这个世界马上就会陷入一片混乱和崩溃。

不知道大家还记不记得,在上个世界末来临的时候,软件的千年虫问题在全世界范围内广为人知,因为媒体的传播,让公众都知道这一场千年的软件危机。当时的很多软件,因为硬件条件或者开发设计人员的原因,当时间运行到2000.1.1 00:00:00的时候,软件系统会认为时间是1900年。本质原因是硬件上存放年份的长度不够(只有后面两位年份),还有开发设计人员不认为自己的软件能被使用这么长时间,跨越千年。媒体推波助澜,发挥了无数想象,给大众造成了一些恐慌。


新千年的第一缕阳光普照大地时,人们发现,好像什么事情都没有发生,所有昨天还在运转的机器,今天照样运转,昨天是怎样的生活,今天生活还是这样继续。核电站没有停止运转,火车没有出轨,飞机没有从天上掉下来,一切如往日般平静。于是,还是那些媒体,转而宣扬阴谋论,说千年虫软件危机,是软件公司的一场世纪大阴谋,为的是在这场危机制造恐慌,让软件全部升级一遍,让用户付出大量的费用,实际上这场软件危机并不存在。

到底千年虫是不是一场谎言,在软件行业内部其实是有定论的。因为后果实际上是真实地摆在那里的。可以说因为当时集体的目光短浅,让这个世界付出了很昂贵的代价。在2000年以前,实际上各行业投入了大量的软件开发人员和预算,修复了大多数软件上的千年虫问题,才会在2000年到来时,避免有重大的事情发生。而往往这种没有发生就被消灭的隐患,正因为没有被公众所看到,反而被认为是一场阴谋。

说回到软件开发,人们更愿意相信千年虫是一场软件开发公司的阴谋,也是因为软件开发相当昂贵,而且很难有一个准确的度量,来界定一款软件应该值多少价钱,支付多少费用合适。

而软件系统渗透到世界每个角落的今天,我们仍然遇到了这样的问题。当我们因为各种工作需要,提出一个信息化系统建设的需求时,对接了一些软件开发公司,讨论确定了系统功能和架构、讨论了业务的各种细节实现,最终会面临一个问题,软件开发公司给的报价是否合理,开发费用如何计算,我们又应该如何申报软件的预算。

存在的难点

在信息化领域,硬件是一个相对充分竞争的市场,一台服务器,确定配置后,预算费用是多少,市场上询一下几个主流厂商的报价,马上可以获得。在一些硬件比较细分的领域,比如网络安全设备等或者更偏门专业的设备,也有5、6家的生产厂家能够提供相同的产品,价格是透明且确定的。这是全球经济一体化和摩尔定律大规模生产的成果。

但是软件开发,是一种专业技能和知识的智力产品,是一种自由技艺的体现。打个比方,如果你要请人画一幅肖像画,请大师和请美院的学徒,这价格就差距巨大了。真正大师开发的软件产品,和软件作坊的小工开发的同样软件产品,一样存在巨大的费用差距。

但是如果真的是这样的话,软件开发的费用现在又是如何界定出来的呢?

1、比较报价。你可以请三家以上的软件开发公司,一起了解你的系统功能需求,然后让这三家公司分别报价,根据自身的财务承受能力和其他因素的判断,来基本界定软件开发的价格。

2、你可以让开发公司提供相同产品,已经成交的合同价格作为参照。但是这种方式,如果这个开发公司做第一个成交的,通过各种操作把合同价格拉得很高,我们就可能陷入这个价格区间,被开发公司所诱导。

3、请第三方软件造价审计机构,进行开发成本审计,给出审计报告。但是这个方式的问题在于,审计一般按照法定程序是在项目立项获得资金批复后才能介入,而软件的开发费用本身就要在项目立项的时候框定。

另外,软件开发涉及的方面非常多,开发的语言工具、运行的系统环境、系统用户数量,稳定性要求、安全性要求,系统健壮性要求,bug容忍度等等要求,会很大程度影响软件开发的成本。

就像说,人的生命是无价的,但是在一个特定的情况下,必须把人的生命换成价格。一个场景就是交通事故死亡的赔偿计算。生命无价,但是生命消逝后,必须给生命定价,总要拿出一个计算的方法。

在软件开发的行业,也是如此。这个行业也进入了大规模工业化时代,软件的开发可以批量生产,一个个开发人员现在都被成为码农,除了及个别顶尖的大牛,在传统的大学院校培养体系出来的软件开发人员,已经越来越趋近于相同的开发水平。通过一个软件产品,需要多少个软件开发人员,多少时间来开发完成产品,计算一个软件的开发成本。这就是软件开发费用评估的最基本逻辑。这在软件行业有有一个专用名词,叫人月。

现在国际标准的几种开发成本计算方法

国际标准的五种度量方法

在功能点方法的发展演进中,共有五种功能点方法被ISO国际标准组织接受成为了ISO国际功能点标准。这五种方法分别为IFPUG、MARK Ⅱ、COSMIC、NESMA和FiSMA方法。目前在全球使用功能点方法的企业中,超过90%使用IFPUG/NESMA方法,而NESMA方法中详细功能点方法与IFPUG方法基本等效。

(1)ISO/IEC 20926 软件和系统工程—软件度量—IFPUG功能规模度量方法2009(Software and systems engineering -- Software measurement -- IFPUG functional size measurement method 2009),IFPUG(International Function Points User’s Group国际功能点用户组)是一个非营利性组织,1979年IBM的Allan Albrecht提出功能点分析方法,1984年正式发布了第一个功能点使用指南,1986年成立IFPUG组织,2003年被ISO组织接纳成为国际标准。

(2)ISO/IEC 19761 软件工程—COSMIC:一种功能规模度量方法(Software engineering -- COSMIC: a functional size measurement method)COSMIC(Common Software Measurement International Consortium,通用软件度量国际联盟)功能点的前身来源于1997年所提出的FFP(Full Function Point,全面功能点)功能点标准,后来FFP组织又与COSMIC组织共同合作于1999年提出了COSMIC功能点标准,该标准历经修订,该标准也于2003年被ISO组织接纳成为国际标准。

(3)ISO/IEC 20968 软件工程—MkⅡ功能点分析—计数实践手册(Software engineering -- MkⅡ Function Point Analysis -- Counting Practices Manual)1991年,英国人Charles Symons在自己的《Software Sizing and Estimating: MkII Function Point Analysis》一书中介绍了MarkII功能点的操作方法。Symnos先生在为毕马威咨询公司工作期间提出了MarkII功能点操作方法,在该操作方法的基础之上形成了MarkII功能点标准,该标准提出后被英国政府所采纳,目前该标准由英国软件行业协会维护。2001年被ISO组织接纳成为国际标准。

(4)ISO/IEC 24570 软件工程—NESMA功能规模度量方法2.1版—功能点分析应用定义和计数指南(Software engineering -- NESMA functional size measurement method version 2.1 -- Definitions and counting guidelines for the application of Function Point Analysis)NESMA为荷兰软件度量协会的简称(Netherland Software Measurement Association),NESMA功能点标准与IFPUG功能点标准之间存在一定的差异,,但与其他的功能点标准相比较(MarkII功能点标准、COSMIC功能点标准和FISMA功能点标准),NESMA功能点标准与IFPUG功能点标准保持了最好的一致性。

按照国标计算的难度

我们国家也出台了软件开发成本评估方面的标准,最新的是《软件工程 软件开发成本度量规范》2019年8月实施的规范。和那些国际标准一样,对于纯用户方对软件成本的评估存在很大问题。

1、需要对整个软件工程领域有专业知识的人员,来甄别出标准计算组件。

2、方法的执行需要经过一个较长时间的培训和实践,才能达到精确。

3、对于提出开发需求用户方,存在难以逾越的专业门槛。

总之一句话,这些这些测算标准还是太专业,需要更长时间学习。

开发成本估算的关键——确定功能点

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

功能点方法的核心思想

功能点方法的核心思想是把软件系统按照组件进行分解,从而确定系统的功能点数量。功能点方法是一种分解式的规模度量方法,即把复杂的系统分解为较小的子系统进行评估的方法。功能点度量方法是基于软件文档的功能性需求来进行度量,其结果是以功能点数的形式来表示软件的规模。把软件系统按照组件进行分解,从而确定系统的功能点数量。

作为用户和需求提出方,如何获得快速的功能点计算的工具

那么我们作为用户方,提出信息系统开发的需求方,如何评估我们要的软件需要多少人工,需要多少人月。通过计算我们设定的软件功能点,来换算。

1、一个新业务,对应一个实体对象,有增加、修改、删除、查询显示、过滤等完整功能的,作为一个实体对象计算(ILF,internal logic file ,标准定义:内部逻辑文件 )。

如果这个业务是通过外部系统引用的,有查询,验证,调用等等的操作,定义为引用对象。(EIF:外部接口文件)

2、套用公式

套用公式的时候,必须以一个场景来对照计算,否则太抽象。

一个项目背景:政府部门拟新开发一套OA系统,支持其网上办公、文档流转等电子政务需求。

主要功能:……收文管理、发文管理、会议管理、日程安排……;

功能描述:……收文管理功能要求……;……日程安排功能要求……。

ILF转换功能点35个,EIF转换功能点15,同时通过界定不同的复用度来计算功能点数量。

功能类型不同复用度文件数功能点数功能点数合计ILF低9___×1×35= _3153___×2/3×35= 70__ 高3___×1/3×35= 35__ ILF计数合计:_420_EIF低_2___×1 ×15= 30_0___×2/3×15= 0_2___×1/3×15= __ 10___ EIF计数合计:__40__US(ILF计数合计+ EIF计数合计):规模变更因子: S(调整后规模总计):_460__1.23__565.8说明:规模变更因子预算时取值为1.41,招投标时取值为1.23;功能规模S=US*规模变更因子

那么复用度如何计算,靠经验

3、计算预算

根据规模测算结果,填写以下模板可得到最终费用测算结果:

功能点测算规模、工作量、工期、费用表1.未调整功能点数UFP(功能点)/经过复用调整后的功能点数US(功能点)460设定规模变更因子CF1.232.调整后的功能点数S(功能点)S=UFP×CF(不调整复用度)/S=US×CF(调整复用度)565.8基准数据(生产率)P25(人时/功能点)3.21P50(人时/功能点)6.72P75(人时/功能点)10.903.未调整的工作量UE(人时)计算公式:UE=PDR×S下限(人时)1816.22最有可能(人时)3802.18上限(人时)6167.22平均人力成本费率(含直接人力成本和间接成本及开发方毛利润)F(元/人月)25500直接非人力成本合计DNC(元)200004.软件开发费用P(元)计算公式:P=人时/176*人力成本下限(元)283113.63最有可能(元)570857.95上限(元)913514.20项目预算(元)570857.95 功能点单价(元**/功能点)**1008

使用的局限性和条件

这里介绍的软件开发费用计算方法,是参照国际标准的软件功能点计算方法,结合用户角度实际,给出的一个最简略且可行的软件开发费用计算模式。已经摒弃了很多需要专业知识才能细算甄别的复杂过程,当然也就损失了一些精准度。但是起码用这种方法,可以给用户方提出的需求转化为软件产品后,给这个产品框定一个预算的范围,不至于太偏离合理的费用范围。

唯一要求的根本计算任务其实是框定功能点,这个也只有提出需求的人,才能界定出来了,而这个人,需要有一些软件需求的管理经验。其实,在这个套用这个计算方法的过程中,也从反向推动需求方把自己的需求理清楚,整理出来。对后期的软件开发,也是一个很好的起点。

当然,币圈的软件开发代码是一种天地最巨大的差异。币圈因为与生俱来的非主流、去中心化、共享、互助等特性,造成创世的一些升级代码系统,比如比特币网络,而且因为开源,造成直接拿来改几个代码重新发布一套网络也变得可行甚至收益无穷大,是的币圈的软件系统要么是传奇的存在,要么是拙劣的拷贝加抄袭。

因为币圈的软件开发盈利模式不一样,可以通过方便cx割韭菜,更快。

—-

编译者/作者:skywalker

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...