由于各行各业的千差万别,任何一个ERP系统不可能“放之四海而皆准”,甚至行业版的ERP系统也避免不了因各个企业的不同业务特点而出现无法满足企业要求的状况。所以,二次开发成为ERP实施的一个有效手段。
说它有效,是因为二次开发能够解决企业非标准化但却是确实存在的一些业务流程,同时可以增加人机操作界面的友好度。
但是,不论是软件供应商还是企业,一般都不希望做二次开发。原因很简单:从软件供应商的角度来讲:(1)二次开发要承担一定的风险。往往对某一局部的更改可能因为没有考虑对全局的影响而造成整个实施失败;(2)二次开发要投入相当的人力物力。软件供应商的技术重点一般都放在ERP系统研发和优化上,为企业特殊需要而配备的定制开发和维护人员无疑增加了公司的运营成本;(3)二次开发的测试和试运行时间有限,出现BUG的机率较多,影响软件整体质量; (4)二次开发费用的回款受企业认可度的影响。从客户角度来讲,客户当然希望购买一个不用二次开发就能完全符合企业需要的产品,二次开发是不得以的办法,既增加实施费用,又增加了以后维护的风险。
然而,实施中完全有可能会遇到企业流程的特殊性。解决的办法有两个:一个是企业流程适应软件,接受软件供应商提供的变通处理或改变业务流程,化特殊为标准;二是软件供应商提供二次开发,软件适应业务,这时,二次开发就不得不做了。那么,作为企业,如何预先评估软件供应商是否有能力提供二次开发解决方案呢?
首先,企业应该考虑的就是软件供应商的二次开发实力。二次开发的实力,表现在两个方面,一是实施顾问或系统分析人员的实力。软件供应商的实施服务体系决定了客户的二次开发是由实施顾问主导还是由专门的系统分析人员主导,也就是说,谁来做二次开发的系统规划和可行性分析。这是策略者的实力。二是软件研发人员的实力。软件设计的功能能否得以实现以及实现的结果如何,是客户能够直接感受得到的,是二次开发实力的最终体现。这是执行者的实力。
其次,企业应该考虑软件的整体架构。软件的整体架构决定了软件的可扩展性,一个ERP软件能不能为客户提供完善的二次开发服务,是由它的整体架构预先决定了的。具体表现在:(1) 二次开发的程序能否与整体系统做无缝挂接(2)二次开发的功能能不能很好的在软件后续的升级版本中正常运用。可以说成功的ERP系统,除了内涵先进的管理理念,高效的职能划分,合理的业务流程外,还应保留最大的灵活性和可扩展性。
最后,就是二次开发的实现模式。软件供应商是否有标准化的二次开发的实现方法,直接关系到软件的版本升级和维护。二次开发的实现模式大概可以从以下几个方面考虑:
1. 二次开发的层面
软件供应商的二次开发是基于哪一层面的,是在原Source上直接做修改,还是采用继承的方式。如果是在基础层直接修改,那对版本升级就有很大的影响,往往是你要么使用改进的功能,要么仍然用定制的功能,鱼和熊掌不可兼得。
2.数据结构的修改
通常来讲,能够实现完善的二次开发功能的软件,其数据结构的规划一定存在某种规则。标准版本用到的数据库、表和字段的命名方式会和二次开发用到的区分开来,互相之间留有余地,以保证不能发生冲突。同时,数据类型的定义要做到完全统一,以保证数据的一致性。如果没有一个明确的规则,必然导致二次开发和标准版本之间互用冲突,这可能是导致二次开发功能不能升级的主要原因。
3.二次开发的文档
二次开发要有健全的文档,文档不全或质量不高经常会引发的问题是:前面做好的二次开发,后面接手的人没有依据来知道前面改了哪些,为什么要改,所以后面根本不能在原来的基础上继续做二次开发或功能改进。
分析了二次开发的优缺点和软件供应商二次开发的能力表现后,对二次开发的基本做法阐述几点个人意见。
1. 二次开发功能的实现,应该在不修改父类的原则下,增强子类功能,灵活运用继承与重载,以保证后续的版本升级。
2. 对某一程序标准功能的修改,最好保存为另外一只与标准程序并列的程序,不要将标准程序完全丢弃,以免升级后的标准程序具备同样或更完善功能时不能得到运用。
3. 尽量做到二次开发处理的数据与标准数据分开,两部分数据的交互采取数据导入、导出处理,以保证当二次开发设计出现漏洞时,不至于直接影响标准数据。
4. 在和其他系统做接口的处理方式上,要充分利用中间表来处理,切忌其他系统直接对ERP数据做处理。同时,保留操作日志,以免对数据错误无从查起。
只要在充分了解二次开发优势劣势的前提下,选择正确的开发模式和实现方法,二次开发一定会起到提高ERP软件实施成功率和完美率的作用。
添加专属销售顾问
扫码获取一对一服务