随着信息技术的进步和激烈市场竞争的多元化,企业采用引进ERP这种具有最先进的管理思想和方法的信息系统,以提高企业的整体效率和市场竞争能力。尽管国内外一些著名公司基于自身的信息技术并根据企业整合的方法论开发出完整且复杂的ERP系统,但由于各企业的都有自己独特的管理理念与企业文化特点,必然会存在一些无法满足企业本身需求或与企业产生不适合的情况,虽然系统通过参数可调的形式可以部分满足不同用户的需求,但很多情况下还是达不到要求,就需要改动原有程序、甚至修改原始数据库结构的二次开发来完成。
笔者作为企业的IT主管,历经了Oracle ERP系统实施、二次开发的全过程,在多年实践的基础上,积累了丰富的经验并在这方面做了一定的研究。该文从二次开发的产生原因、可能带来的风险及如何规避风险等方面进行阐述。
1 ERP系统二次开发的产生原因
1.1 用户不愿意改变现有的操作习惯
对于任何一套ERP软件产品为了具有较强的通用性,软件功能是标准的,流程设置是规范化的。但企业实施ERP时,除了在业务流程等方面具有个性化需求外,还存在着一些不涉及业务流程的、由企业的特殊性而产生的操作习惯需求,而提出了大量的二次开发。
1.2 企业不合理的管理制度造成的特殊流程需求
主要表现在企业想把现有的手工流程、手工作业一成不变的搬到ERP中去,而不分析ERP现有的流程与本企业原有的流程的优劣性,固执的坚持采用目前的管理手段、管理习惯,要进行必须二次开发来满足其需求。
1.3 ERP软件确实无法满足的需求
ERP系统是一个套装软件,属于行业通用的,而每个企业是有其自身的特点,确实存在着一些个性的业务流程需求,要进行二次开发,既要吸纳软件中的先进管理思想,也要保持企业的特色。
1.4 接口需求
企业的信息化建设涉及多套系统,如笔者企业软件系统包括Pro/E、CAD、PDM、CAPP等,而各系统的数据之间存在信息共享,产生系统接口需求,二次开发也成为必然的。
1.5 新的需求产生
随着项目的实施,企业人员对信息系统有了更深的了解,应用不断深入,对信息系统产品就会提出更多的要求,来提升企业管理水平。
2 ERP系统二次开发的可能带来的风险
2.1 ERP系统二次开发会增加系统升级的难度
ERP供应商会阶段性的对系统新功能扩充,推出新的版本。系统的升级只针对标准版的,不会考虑到用户化和二次开发部分,所以系统二次开发工作大部分要重新修改或者开发,有些甚至无法再升级了,这是二次开发的最致命的弊端。
2.2 ERP系统二次开发会降低系统稳定性
成熟ERP软件是由优秀的团队经过数年或者数十年的开发研制并在大批用户的验证下成长的,具有较高的稳定性。而二次开发只对单一用户的需求,对某局部的更改往往因为没有考虑对全局的影响而殃及整个系统的稳定性,并且二次开发的测试和试运行时间有限,出现BUG的机率较多,系统复杂度以及耦合度增大,降低系统的稳定性。
2.3 二次开发有时会偏离企业实施ERP系统获得管理水平的提升、优化企业流程的最初目标
二次开发需求往往会使ERP系统合理的逻辑屈服于企业固有的、习惯的工作方法,也会因提高不同部门员工使用系统的效率,而影响流程的稳定性。
2.4 二次开发要求会增加ERP项目的成本
因为软件的规模效应,产品软件的价格相对于其功能是相当低的。而二次开发只针对唯一用户,所以这些程序开发的全部成本由其承担,即使用企业自行二次开发,也要投入人力、物力,势必增加ERP项目的成本。
3 ERP二次开发的风险控制
尽管各企业ERP二次开发是不尽相同的,但必须把握好二次开发的原则:实施ERP二次开发项目的目的是提升企业的管理水平,优化企业的流程。因提升个别工作效率而会影响业务流程的稳定性,坚决不做;因工作效率提升,并未对业务流程以及管理水平有帮忙的开发,尽量少做。基于此原则,针对二次开发风险的控制做如下总结。
3.1 对整个企业的业务进行IT规划,二次开发要求的合理性分析,要有所取舍
对于机械制造企业,会涉及到CAD、PDM、CAPP、ERP、MES系统,并存在接口集成等,因此要根据企业的实际,从业务流程的整体角度去考虑,而不是从某个功能点或某个业务部门去考虑。企业不应过多的强调自身的特点,必定ERP中的管理流程是从许多企业中提炼出来的,具有一定的先进性和合理性。而有些特殊之处是由于企业流程自身的不合理产生的,应通过ERP的实施,对企业的业务流程进行优化或重组,而不是一味修改软件以适应不合理的流程。
3.2 尽量利用原有的“闲置”字段,避免改动数据库结构
对于那些会牵涉到新增字段或档案,而影响到原有数据库结构的开发,尽量利用系统原有的“闲置”字段,不要轻易新增字段或文件档案。如确实需要的要与原开发商进行确认,以避免二次开发与产品发展方向重叠或冲突,以降低日后版本升级的困扰。
3.3 不要随意修改核心代码,新功能自成模块
要严格遵守不修改核心代码这一原则。如果必须开发,则应尽量使得二次开发的功能模块独立于原来的ERP系统。这样当ERP系统版本更新时,二次开发出来的模块无需修改或者只需较少的修改就可以应用于高版本的ERP系统。
3.4 建立二次开发的规范
ERP是一项庞杂的系统工程,ERP二次开发要建立一套完整的开发流程、开发标准。新扩充的字段、新建程序的命名制定统一规范,并且要预留扩充空间。公用组件不建议修改,程序的编写应采用继承的方式。
3.5 加强IT队伍建设,避免开发人员流失
培养一支既懂管理科学又懂信息技术的复合型、专业化人才队伍是企业信息化建设韵重中之重。留住IT人才也是规避企业ERP二次开发风险的策略。
4 结语
企业ERP系统二次开发具有十分重要的意义,该文旨在从中总结出一些普遍性的经验和教训。对提高ERP实施的成功率和实施效益具有参考价值,从而使得ERP能够真正的发挥作用,提高企业的核心竞争力,推动企业的发展。
笔者作为企业的IT主管,历经了Oracle ERP系统实施、二次开发的全过程,在多年实践的基础上,积累了丰富的经验并在这方面做了一定的研究。该文从二次开发的产生原因、可能带来的风险及如何规避风险等方面进行阐述。
1 ERP系统二次开发的产生原因
1.1 用户不愿意改变现有的操作习惯
对于任何一套ERP软件产品为了具有较强的通用性,软件功能是标准的,流程设置是规范化的。但企业实施ERP时,除了在业务流程等方面具有个性化需求外,还存在着一些不涉及业务流程的、由企业的特殊性而产生的操作习惯需求,而提出了大量的二次开发。
1.2 企业不合理的管理制度造成的特殊流程需求
主要表现在企业想把现有的手工流程、手工作业一成不变的搬到ERP中去,而不分析ERP现有的流程与本企业原有的流程的优劣性,固执的坚持采用目前的管理手段、管理习惯,要进行必须二次开发来满足其需求。
1.3 ERP软件确实无法满足的需求
ERP系统是一个套装软件,属于行业通用的,而每个企业是有其自身的特点,确实存在着一些个性的业务流程需求,要进行二次开发,既要吸纳软件中的先进管理思想,也要保持企业的特色。
1.4 接口需求
企业的信息化建设涉及多套系统,如笔者企业软件系统包括Pro/E、CAD、PDM、CAPP等,而各系统的数据之间存在信息共享,产生系统接口需求,二次开发也成为必然的。
1.5 新的需求产生
随着项目的实施,企业人员对信息系统有了更深的了解,应用不断深入,对信息系统产品就会提出更多的要求,来提升企业管理水平。
2 ERP系统二次开发的可能带来的风险
2.1 ERP系统二次开发会增加系统升级的难度
ERP供应商会阶段性的对系统新功能扩充,推出新的版本。系统的升级只针对标准版的,不会考虑到用户化和二次开发部分,所以系统二次开发工作大部分要重新修改或者开发,有些甚至无法再升级了,这是二次开发的最致命的弊端。
2.2 ERP系统二次开发会降低系统稳定性
成熟ERP软件是由优秀的团队经过数年或者数十年的开发研制并在大批用户的验证下成长的,具有较高的稳定性。而二次开发只对单一用户的需求,对某局部的更改往往因为没有考虑对全局的影响而殃及整个系统的稳定性,并且二次开发的测试和试运行时间有限,出现BUG的机率较多,系统复杂度以及耦合度增大,降低系统的稳定性。
2.3 二次开发有时会偏离企业实施ERP系统获得管理水平的提升、优化企业流程的最初目标
二次开发需求往往会使ERP系统合理的逻辑屈服于企业固有的、习惯的工作方法,也会因提高不同部门员工使用系统的效率,而影响流程的稳定性。
2.4 二次开发要求会增加ERP项目的成本
因为软件的规模效应,产品软件的价格相对于其功能是相当低的。而二次开发只针对唯一用户,所以这些程序开发的全部成本由其承担,即使用企业自行二次开发,也要投入人力、物力,势必增加ERP项目的成本。
3 ERP二次开发的风险控制
尽管各企业ERP二次开发是不尽相同的,但必须把握好二次开发的原则:实施ERP二次开发项目的目的是提升企业的管理水平,优化企业的流程。因提升个别工作效率而会影响业务流程的稳定性,坚决不做;因工作效率提升,并未对业务流程以及管理水平有帮忙的开发,尽量少做。基于此原则,针对二次开发风险的控制做如下总结。
3.1 对整个企业的业务进行IT规划,二次开发要求的合理性分析,要有所取舍
对于机械制造企业,会涉及到CAD、PDM、CAPP、ERP、MES系统,并存在接口集成等,因此要根据企业的实际,从业务流程的整体角度去考虑,而不是从某个功能点或某个业务部门去考虑。企业不应过多的强调自身的特点,必定ERP中的管理流程是从许多企业中提炼出来的,具有一定的先进性和合理性。而有些特殊之处是由于企业流程自身的不合理产生的,应通过ERP的实施,对企业的业务流程进行优化或重组,而不是一味修改软件以适应不合理的流程。
3.2 尽量利用原有的“闲置”字段,避免改动数据库结构
对于那些会牵涉到新增字段或档案,而影响到原有数据库结构的开发,尽量利用系统原有的“闲置”字段,不要轻易新增字段或文件档案。如确实需要的要与原开发商进行确认,以避免二次开发与产品发展方向重叠或冲突,以降低日后版本升级的困扰。
3.3 不要随意修改核心代码,新功能自成模块
要严格遵守不修改核心代码这一原则。如果必须开发,则应尽量使得二次开发的功能模块独立于原来的ERP系统。这样当ERP系统版本更新时,二次开发出来的模块无需修改或者只需较少的修改就可以应用于高版本的ERP系统。
3.4 建立二次开发的规范
ERP是一项庞杂的系统工程,ERP二次开发要建立一套完整的开发流程、开发标准。新扩充的字段、新建程序的命名制定统一规范,并且要预留扩充空间。公用组件不建议修改,程序的编写应采用继承的方式。
3.5 加强IT队伍建设,避免开发人员流失
培养一支既懂管理科学又懂信息技术的复合型、专业化人才队伍是企业信息化建设韵重中之重。留住IT人才也是规避企业ERP二次开发风险的策略。
4 结语
企业ERP系统二次开发具有十分重要的意义,该文旨在从中总结出一些普遍性的经验和教训。对提高ERP实施的成功率和实施效益具有参考价值,从而使得ERP能够真正的发挥作用,提高企业的核心竞争力,推动企业的发展。