最近着手信息化项目产业化的申报,无论是软件行业企业或是政府职能部门,对软件项目的成本却没有一个统一的认识。本文就软件项目的可能的成本组成提出自己的看法,望与关系此问题的朋友商榷,欢迎批评指正。
软件开发属于高智商的脑力劳动过程,软件产品一旦开发完成,即可进行软件“生产线”的建设,虽然软件产品的制作过程需要几乎可以忽略不计的成本就可以实现产品的批量生产(复制),但不同软件种类其生产线的“流程”和成本是不同的,真正能实现产品化软件销售绝不是简单的事情。 但是,软件行业却无形中给人造成这样一种印象,软件开发只需要有一个开发队伍坐在计算机前就可以了,既然不像传统产业需要建工厂,不需要固定的厂房、设备和看得见的生产线,所以软件行业是“一本万利”的高回报产业。但是软件产业的高投入、高风险是一个不争的事实,甚至在软件已经开发完成,在给客户实施过程中动辄几十万、几百万甚至上千万的项目打了“水漂”。那么一个新软件产品研制过程究竟会发生哪些成本支出呢?如果您对上述问题感兴趣,请来一起探讨吧。
一个新软件产品或新软件项目,从提出到具备销售条件,需要经历策划与环境建设、产品研制与孵化、软件产品生产线建立等阶段,其成本主要源自这几个阶段的过程之中。
一、策划与环境建设
同传统项目一样,软件产品开发也需要经历立项过程,也就是经过调研论证决定项目“上马”后,才能开始策划软件的开发、建设开发环境。
软件产品虽不像传统产品那样需要建工厂、盖厂房而“大兴土木”,但软件产品开发和研制同样需要建设适合软件技术人员工作的“生产环境”和“生产车间”,只不过软件开发的“生产车间”比较特殊罢了。
软件产品的策划与环境建设阶段需要展开必要的调研、建设软件开发环境、购买必须的工具,当然也就需要有相应的成本支出。
1、调研费用
调研是软件产品立项前必须开展的工作,是软件立项和软件产品策划的依据。调研内容有客户调研和市场调查,客户调研目的是确定产品需求和产品功能,并进一步分析市场规模。市场调查主要用来分析当前同类型软件产品面世情况,对面世的产品调研其市场分布如何,软件产品的功能特点、差异、优劣及发展趋势;如果没有同类产品面世,则通过调研需要重点分析市场需求和市场规模。
调研规模和调研方式存在很大差异,一旦明确了调研方式、规模、范围和参与的人员组成,则调研费用就可以基本确定下来。
2、环境建设费用
经过调研分析一旦确定新软件产品立项,就需要落实开发队伍,进行产品开发的环境建设和前期准备。环境建设内容由工作场地建设和网络环境建设组成。
一、场地建设
场地建设是软件开发环境的基础,是软件人员开展开发工作的基本场所。需要提供工作场所租赁和工作环境建设等费用。
二、开发环境建设与系统集成
软件公司最主要的环境就是要有适合软件开发需要的开发环境,建设软件开发所必须的网络系统。有以下建设内容:
网络工程建设:服务器、交换机、防火墙、UPS电源、工作站等硬件设备采购与安装调试,网络布线工程。
系统集成:网络操作系统、工作站和终端操作系统、数据库系统、软件防火墙和病毒防护软件采购与集成。
辅助工程:根据企业规模和需要,进行多媒体会议室、企业网站、企业办公系统建设。
3、工具购置费
“工欲善其事,必先利其器”,在软件产品开发前也必须采购所需要的各类工具。软件开发所需要的工具有很大差别,工具的选择和确定由项目组根据产品特点和要求确定,不同工具的价格可从提供商获取。工具的选择依据是由所要开发的软件决定的,不仅要考虑工具功能,也需要从工具的性能价格比和客户承受能力考虑。一个典型软件产品所需要的工具有以下几种:
开发工具:就是用来开发软件的工具,是软件开发不可缺少的部分,发工具都有自身优势也有其不足,采用不同的开发工具会影响软件的开发成本和维护成本,例如用Java是用Delphi开发成本数倍以上。
操作系统:这里说的操作系统是将来的软件产品或客户所要求的操作系统,所以,如果软件项目要求的环境不具备时,须另行采购所需的操作系统并建设一个专用的开发环境。
数据库操作系统:这里指软件产品所需要的数据库系统,数据库系统的价格因版本和允许同时进行数据操作终端的不同而异。
测试工具:测试工具是对软件产品进行针对性能测试的软件,是软件质量控制的检测工具,测试工具可以在一定程度上实现测试的自动化、替代部分人工测试、提高测试效率。不是所有的软件产品都能找到合适的测试工具,即使有可用的测试工具,测试环境的建立和规范的应用需要软件企业投入比较大的精力才行,不能完全取代人工测试。软件测试是必须的,不是非要借助测试工具才能完成,不一定都要购买测试工具。
管理工具:软件产品开发具有自身特点,其开发过程的管理又属于项目管理的范畴。借助实用的管理工具不仅可以提高软件开发的规范程度,而且可以提高产品开发效率、有助于项目管理和质量控制。软件开发过程中需要参与管理的内容有各类文档、开发过程中所产生的结果,不同管理工具具有不同的管理目的和作用。常见的管理工具有:1、进行软件版本控制和管理的版本控制工具;2、进行数据库定义的数据库建模工具;3、用于可视化需求分析和系统设计的系统建模工具;4、以文件形式对产品结果进行管理的文件管理工具;5、产品开发过程需要的其他应用工具,如文档编写工具、网络计划工具、图形绘制工具等。管理工具也是计算机软件,具有适用的环境和对象,所以就一个具体软件开发过程来说需要哪些管理工具存在很大差异。
安装程序制作工具:当软件尤其产品化软件的开发完成,需要通过安装工具将一个完整的软件产品打包压缩制作成安装程序,这样当软件发布客户购买后即可运行安装程序,引导客户一步一步的完成软件的安装和配置。
第三方软件:几乎所有的软件都需要有其它软件的支持才能运行,除了系统本身提供的软件外,一些软件需要从第三方购买的具有特定功能的软件“半成品”。这些“半成品”犹如建筑屋“积木”或“预制构件”,他们具有独立功能可接口,利用这些“半成品”可以方便的迁入到自己的软件成品中,从而降低开发成本、提高开发效率和产品质量。
硬件工具及配套设备:软件运行所用到的硬件工具和配套硬件设备也是必须的。硬件工具是通用性质的硬件,例如票据打印机、手写板,这类硬件购买过来即可安装使用;而配套设备是需要针对不同的设备进行二次编程、开发接口才能发挥硬件的作用,例如用于安全的加密狗、用于称重的电子磅、用于图像采集的视频采集卡,这需要供应商提供设备二次开发接口和标准。配套设备购买的多少与软件适用范围有关,例如,开发一个手机游戏软件,则需要购买多种款式的手机。