软件开发成本有哪些?
所谓售前成本,就是在合同签订前,乙方为这个项目做商务、做演示、做售前调研等付出的成本(人工费、办公费、差旅费等)。倒霉的是,并不是每个售前项目都可以签单,更倒霉的是,一般情况下丢单的比签单的多,这些丢单的售前项目,成本往哪里去呢,自然需要由签下的项目弥补。
直接人工成本。
每个开发团队包括很多岗位,如项目实施经理、需求分析师、系统架构师、程序员、测试工程师、美工、客服等,这些岗位的人,都是需要吃饭的,都需要发工资、交五险一金。一个项目要做好,离不开这些岗位通力合作。即使只看直接人工成本,也远远不止程序员的工资社保。
开发工具及设备成本。
团队在开发过程中需要各种开发工具,有些工具是开源免费的,但也有很多工具是要收费的。当然,一般来说,每个团队都有很多开发项目,这个成本分摊到每个项目并不高,几乎可以忽略不计。但是,有的时候,有些特殊的设备是为这个项目专门采购的,那么这个成本就不能忽视了。
间接人工成本。
软件开发成本属于什么科目
开发软件费用为什么这么贵
软件开发费用非常高,要想降低软件开发成本,首先要知道软件开发成本是怎样产生的。
软件开发成本 = 软件工程师人力成本 + 项目管理人力成本 + 返工成本 + 其它成本。其中,软件工程师人力成本,包括与需求获取、架构设计、编码和测试、交付、辅助文档等活动相关的人力成本。
项目管理人力成本,包括与项目计划和跟踪、解决问题和管理风险等活动相关的人力成本。返工成本,包括与需求变更和bug修复等活动相关的人力成本。其它成本,包括设备采购、工具费用、差旅等额外成本。
占比较大的软件开发成本
这些成本中,哪个占大头?有人说当然是软件工程师和项目经理的人力成本占大头。有这种想法的人是想当然了。权威数据显示,返工成本占整体软件开发成本的40%-80%!【1,2】就是说,软件开发费用的大部分都花在了修复缺陷和需求变更上。觉得挣钱少的老板们是不是可以算一下自己公司的返工成本?
知道了“要降低研发成本,必须首先降低返工成本”的道理以后,那如何降低返工成本呢?本文给出4点建议。
如何降低返工成本?
1、提高人员能力
开发软件,不管是设计还是编码,争取第一遍就要做对。这就需要软件工程师和项目经理有很强的专业能力。提升能力的方法无外乎培训和招聘有能力的人。其中,加强培训是很多公司常用的做法。
2、选对开发方法
过程决定结果。方法错了,再有经验的人,结果也不会好。例如,软件开发方法从70年代的瀑布,一步步从迭代、快速原型等进化到现在的敏捷、规模化敏捷、DevOps等。统计数字显示,使用敏捷方法,平均上市时间加快了37%,团队效率平均提高了16%【3】。这只是其中一个例子。
需求、设计、编码、测试、交付等各个开发环节中,都有很多好的方法。那么怎样确保选对好的开发方法?答案是要么自学成为软件过程专家,要么聘请有经验的软件过程专家来帮助自己。
3、使用辅助工具
俗话说,“好记性不如烂笔头”、“再破的自行车也比走路快”。使用工具使我们事半功倍,软件开发也是如此。常见的软件编程工具例如Eclip、IntelliJ IDEA、VSCode、SVN、Git等自不必说,是必须用的。项目管理工具、测试管理工具、持续集成和持续构建工具、自动化测试工具等也是很多企业常用的辅助工具。有些工具使用成本极低,但是收益极高,达到了四两拨千斤的效果,是开发团队的首选。
CoCode软件众包平台的评审分析工具
例如CoCode软件众包平台的评审分析工具【4】,能自动预测代码里的缺陷数,让项目在第一时间消除大多数缺陷,从而降低返工成本。数据显示,这一个工具的使用,就能使整个开发成本降低20%【5】。那么怎样获得好的辅助工具?首先应该了解公司的具体情况,包括已有的工具情况,同时参考软件过程专家的建议,选择最适合公司情况的辅助工具,然后采用自研、开源、购买等方式获得。
4、持续改进
罗马不是一天建成的。降低开发成本也不是通过一次培训、一个方法、一个工具而达成,而是需要不断地改进,直至达到期望的结果。持续改进的动力来自目标。所以期望降低开发成本的老板们应该首先设一个改进目标,例如降低20%的开发成本,然后锲而不舍地改进,直至目标达成。等一个目标达成后,再设定更高的目标。这样在目标驱动下,开发能力不断螺旋上升,软件开发成本才能真正降下来,软件企业才能达到期望的盈利水平。
道 法 术 器 人
最后记住“道、法、术、器、人”这五个字,您将在“降低成本、提升能力”的战斗中,无往而不胜!
道:过程决定结果。结果无法直接改变,但我们可以通过改变过程来影响结果。
法:选对方法很重要。做软件开发可以参考CMMI、敏捷、DevOps等经过业界验证的好方法。
术:只有好的方法是不够的,还需要落地的手段。这时候需要的是经验。
器:好的工具让落地实施事半功倍。
人:找到做事的人,尤其是找到有能力的人,才能心想事成!
参考资料:
1.IBM White Paper. (2009). Reducing rework througheffective requirements management.
2. MarkusSprunck, SoftwareEngineering Candies - Selected Rules of Thumb in Software Engineering(sw-engineering-candies.com)
3. https://apiumhub.com/tech-blog-barcelona/benefits-of-agile-project-management/
4. https://www.co-code.cn/tool
5. https://mp.weixin.qq.com/s?__biz=MjM5NjY1OTEzMg==&mid=2649781830&idx=1&sn=4022dbbc58ca580a573ddadef20840a4&chksm=bee13c958996b5838906bd915c1be930d7897f61e902a7e14d9d9eb449dda04da7ac86d40247&token=790976633&lang=zh_CN&scene=21#wechat_redirect
6. 睿思得咨询提供专业的软件过程辅导和CMMI认证服务,敬请关注。http://raysdom.cn
如何确定软件的开发成本价格?
软件开发成本估算过程可进一步细分为软件规模估算、工作量估算、成本估算和确定软件开发成本等四个过程。
其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。
国家标准《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.对于开发方,在引入行业基准数据的基础上,可逐步建立组织级基准数据库,以提高估算精度。组织级基准数据定义应与行业基准数据定义保持一致,以便于与行业基准数据进行比对分析,并持续提升组织能力。
开一家软件开发公司,大概需要多少投入?
做软件开发的成本究竟如何估算
软件成本评估的6个步骤:
1、软件规模评估:
软件规模评估是软件成本评估的基础,是为了保证软件成本评估结果的客观性和透明性,软件规模信息必不可少。
在软件规模评估过程中,如果能够以软件功能点方法作为主要的软件规模评估方法,同时辅以其他的非标准评估方法,例如代码行方法、用例数方法等,应用不同的软件规模评估方法对规模评估结果进行真实性交叉检验,一方面可以提高软件规模评估结果的可信度;另一方面,也可以对不同类型的项目干系人也会具有更强的说服力。
在实际的软件规模评估过程中,软件组织或者个人也可以根据自身的特点采用有别于上述评估方法的其他方法。但要注意的是,不管采用哪种软件规模评估方法,都要尽可能的保证这个方法所评估结果的一致性和客观性。
2、软件工作量评估
如果说我们能够算出开发软件、维护软件所投入的人员工作量,那么我们也就相当于得到了相应的软件成本。在软件行业中的绝大多数项目里面,影响软件工作量的最主要因素还是软件规模因素,当软件规模越来越大时,也就意味着我们需要投入的工作量越多,这两者之间是存在着正相关的关系。
在软件工作量的评估中,还包含了五个小步骤,也就是收集历史工作量数据、分析历史工作量数据、建立工作量评估模型、评估工作量、工作量模型的标定和更新。通过这些步骤可以积累更多关于软件组织开发工作量和维护工作量的数据,在此基础之上,建立相应的工作量评估模型,从而为后续的工作量评估任务提供支持方法。
3、软件阶段工作量评估
在这个步骤中,软件成本评估团队应该充分考虑软件项目的工期因素,对软件项目总工作量安排和各个阶段工作量安排进行优化分析,将软件项目的总工作量以合理可行的方式分解为各个阶段的工作量。
不仅如此,还要考虑软件项目工期所面临的各种工期约束条件,例如一些来自客户的强制工期要求、市场竞争性、可用的人力资源、项目各阶段人力资源分配的合理比例等约束条件,都在这个步骤中明确介绍了一系列阶段工作量安排的改进和优化方法,包括阶段工作量汇总法、资源平滑法、快速跟踪法、赶工法以及软件阶段工作量的可行性评估方法等。
这些方法的主要目的就是在于将软件工作总量以合理、可行的方式分配到软件项目的各个阶段,确保在不超出工作总量的前提下,尽可能降低人员成本、优化人力资源配置,为软件预算、软件开发计划制定等管理活动提供充分的决策支持信息。
4、软件人员成本评估
在这个步骤里面,我们将会详细说明如何在软件开发和维护所需的工作量转换为对应的费用信息,以便为相关的项目外部干系人提供更直接的决策依据。在软件人员成本评估中,也包含有单一人员成本评估法、分类人员成本评估法和行业人员成本评估法。
5、软件风险评估
在软件开发的过程中,许多软件组织明确认识到软件行业的开发人员已经默认和接受了无偿加班这一行业事实,这样一来,就算没有识别相应的风险信息,但也没有严重后果,也就是说,如果风险发生了,那就加班。
这个步骤中通过应用不同的风险评价方法,将软件项目的风险信息转换为项目的成本信息,从而建立软件项目的风险预算。
6、软件成本报告与更新
软件项目在开发过程中时,经常容易发生各种软件需求变更、人员变更、工期变更等多种类型的变更,这些变更无一例外地将对软件成本产生明显的影响。
在这个步骤中,可以分析软件成本更新面临的困难,有哪些典型的软件成本更新的信息来源,从机制设计的角度确保尽可能全面获取软件成本变更信息。最后遵循软件组织所建立的软件成本更新过程,将软件成本变更信息反映到更新后的软件成本评估结果中。
本文发布于:2023-02-28 19:04:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167759675951043.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:软件开发成本(软件开发成本度量规范).doc
本文 PDF 下载地址:软件开发成本(软件开发成本度量规范).pdf
留言与评论(共有 0 条评论) |