对于管理软件提供商来说,管理软件应该向企业实际情况靠拢还是向通用化方向靠拢?这是每一个管理软件在具体到一个企业时都会遇到的问题。这个问题和二次开发紧密相关。
二次开发的由来
我们通常把改动程序的工作称为二次开发。
目前,软件提供商开发的ERP软件产品,有很多都属于通用软件产品,是针对一个或多个行业、多个用户而设计开发的软件系统。软件功能比较标准,流程设置相对规范化。事实上,在ERP产品开发的时候,通用性是首要考虑的问题之一。这些通用型软件通过参数可调的形式可以部分满足不同用户的需求,但很多情况下这种“轻度”灵活会失效。
比如ERP软件原来提供的报表功能很通用,但是却可能碰到需要特殊格式报表的企业,而这无法通过调节参数来完成;或者报表功能本来是适应企业要求的,但是随着企业的发展、变革、改组,导致报表样式、内容要改变,这些情况就必须通过二次开发来实了。事实上,即使最成熟的ERP软件产品也不可能做到面面俱到,因此有二次开发的必要。
再者,企业所处的环境是不断变化的,企业的产品种类、产品所处生命周期的阶段、企业的计划模式、分销模式都不断在变化,企业不断地进行业务流程的再造,企业规模不断缩小或扩展等等。
总之,企业自身的变化客观上要求ERP具备适应各种变化的能力,这种能力就体现在二次开发的实施上。
而从二次开发应用程度的角度看,企业信息化建设的方式有三种:
使用成熟的ERP软件再加上少量的二次开发;
使用不太成熟的ERP系统再加上比重较大的二次开发;
纯粹按照企业需求定制开发。
从国内ERP发展趋势来看,采用第一种方式的企业很多,也最容易成功。
可以这么说,ERP系统的二次开发是ERP软件由软件厂商提供的一种产品转变为企业内部的管理信息系统的桥梁和纽带。
二次开发的原则
一个不争的事实是,几乎每个ERP厂商的老总都有这样的感慨:明明是经过几个月的初期讨论和项目分析,在用户的认可下做好了的ERP系统,结果由于企业要求的“二次开发”,系统变得越来越复杂,与最初期望的效果越来越远,最后猛然一看,系统已经完全“变味”了。因此,把握二次开发的原则很重要。
首先要说的是,二次开发的时候,不要过多的强调企业自身的特点,ERP软件中的管理流程是从许多企业中提炼出来的,具有先进性。许多企业的特殊之处都是由于流程自身的不合理产生的,应该通过ERP的实施,对企业进行业务流程优化或重组,而不是一味修改软件以适应不合理的流程。
其次,在二次开发中,应该把“不要修改核心代码”作为基本原则。一般来说,应该把数据从ERP中导出,利用二次开发的程序进行处理后,再导入系统。这样可以以最小的变动获得最大的收获。但如果直接修改了核心代码,往后再升级就很困难。
再次,二次开发中,修改不宜过多。ERP软件是一个很复杂的大型软件,从软件工程的角度来说,开发者应该保持对项目的可追溯性。如果修改过多的话,这种可跟踪的追溯性将变得模糊不清,最终导致项目不可控。
第四,二次开发的时间性应该控制好,尽量不要在并行运行前就进行二次开发,因为这个时期对ERP系统的功能还没有充分了解。
最后,二次开发的另一个基本原则是要对实施起到积极的推进作用。有时一个报表、一个字段用途的改变可能直接影响到该部分功能是否能用起来,在这种情况下,仍需做二次开发,目的也是为了方便操作,减少业务人员的工作量,甚至是起到理顺管理环节的效果。
尽量对二次开发说“不”
一般来说,二次开发应该尽量减少或避免。这是因为从事二次开发的人员必须熟悉软件的功能和相应数据库中表的结构,又要充分理解用户的特殊业务流程,这需要一定的时间和工作的,甚至可能会使项目延期;再者,改动软件后还可能出现系统的不稳定性,影响版本升级。
如果必须进行二次开发,则应尽量使得二次开发做出的功能模块独立于原来的ERP系统。这样,当ERP系统版本更新时,二次开发出来的模块无需修改或者只需较少的修改就可以应用于高版本的ERP系统。
关于如何减少二次开发,用友软件公司提出了标准化的思路。用友认为,标准化是产品的特性,软件的标准化是建立在精确的数学模型基础之上,将所有企业的共用部分用标准件进行固化。用友在提倡标准化的同时,将二次开发当作实施与售后服务的重点。在软件标准化的基础上,二次开发会大大减少。笔者认为,这种做法是值得提倡的。