管理软件的定制开发和软件升级是比较常见的软件服务模式,定制开发是指针对用户需求进行量身定制的开发,很多厂商选择在已有产品的基础上进行;而软件升级一般是指厂商通用产品的升级,是通用性的升级(本文中的软件升级是指产品的升级,非定制系统的升级改造,但技术上的基本原则都是一样)。我们知道一个软件产品的升级,不仅仅是软件产品功能的升级和完善,也包括系统错误和BUG的修复,系统性能的改善、安全性的提升等多个方面,是产品保持生命力和竞争力的基本措施,因此软件升级对于软件产品的重要性不言而喻。

虽然管理软件的定制开发不是每个用户都需要的,但是对于有着比较突出的个性化需求,市场上的标准产品不能满足用户的需要情况下被广泛采用,深入应用的软件系统基本上都包含了软件定制开发。但软件定制的风险也是非常高的,不仅仅是因为其开发周期长、成本高、容易失败,如果在定制开发中没有处理好和产品的关系,如:直接修改产品源码进行的个性化开发,就会影响标准产品的升级。这点很多用户不容易理解,实际上这与软件厂商设计和开发能力有着紧密的关系,那么做过定制开发的系统是否会影响后续的软件升级呢?
处理好定制开发和软件升级的关键点
技术架构和系统设计是软件系统生命力的根本,是系统开发、维护和升级的保障,但因为是底层技术层面的开发,且对最终用户不可见,难度和工作量也远远高于一般的应用开发,是典型的“吃力不讨好”的事情,如果一个软件系统的技术架构和系统设计落后,后续系统的维护和升级几乎是举步维艰,开发人员换了一批又一批始终无法改善,这类系统只能推倒重建,但厂商和用户一边都没有这个勇气。
处理好定制开发和软件升级的基本原则
很多的软件产品只重视功能的实现,但技术架构和系统设计投入很少,定制开发需要通过修改产品源代码来实现,这是一种非常落后的模式。熟悉JAVA设计模式的技术人员一定知道,在面向对象开发中强调“对修改封闭,对扩展开放”是无数经验的提炼,我们可以从以下几个方面进行分析。
1、修改了核心和标准软件的源码,肯定会影响软件升级,也许产品功能需要升级一般只能是需要通过大量开发进行整合,这种代价比较高。
2、拥有良好技术架构的产品一般具有非常强的扩展能力,因此在其基础上进行定制开发对后续软件升级影响相对比较小。基于平台定制的功能开发,一般不会涉及到对产品核心源代码的修改,因而不会影响软件升级。先进的技术对后续系统的维护、升级都有着很大的优势,而且可以大大的降低软件服务的成本。
3、基于软件系统的接口进行的定制开发、功能扩展,不会修改软件产品的源码,因而不会影响软件升级。
4、软件升级可以分为整体升级和部分升级,这同样取决于产品的架构和设计。“按需升级”首先是可以降低软件升级的时间和成本,其次是对做过定制开发的系统影响非常小,达到最好的性价比。
处理好定制开发和软件升级的相关建议
在标准产品的基础上进行定制开发和功能扩展,是否影响软件产品的系统升级,应该依据实际情况而定,最直接的判断方法是看是否修改了软件产品的核心源代码,对于软件厂商来说,做到这点并非是一件容易的事情。
如果由于修改管理软件的源码导致软件产品不能升级,对于一般用户来说代价是非常大的,要么只能牺牲后续的软件系统升级,要么就需要花非常高的成本,在系统升级后再进行针对新版本进行整合,后续是无穷无尽的系统补丁和软件整合的投入,这不是一般用户所能够承受的,如果不想维持现状,此时换一个技术架构好的产品推倒重建是更好的选择。
(1)、首先软件产品要有非常好的技术架构和系统设计,软件系统的扩展性非常好;
(2)、其次需要有良好的软件定制开发规范,避免在修改源码的基础上进行个性化开发;
(3)、管理软件的定制开发,可以优先选择基于软件平台的定制开发,相比较传统的定制开发,软件平台的定制开发技术难度低、工作量少,错误率低,从根本上杜绝了直接修改源代码的定制开发,管理软件后续的升级和维护更方便,对最终用户和厂商而言都是非常有利的。