最近刚完成了本公司自己使用的一套协同系统升级工作,从中感受颇多,通过项目组的一个多月的努力,使升级工作取得成功!
也许有人说升级应该是很简单的事情,只要安装升级补丁就好了。但是我这个升级项目比较有其特殊性,就是老版本跟新版本有些核心功能不兼容,这样就导致升级难度加大。
归咎其历史原因有很多,但是我的目标就是如何完成任务,而不去纠结其他因素。
将升级的经验进行分享!!
先描述下项目情况,一般在早期的项目过程中,很多项目都会在已有的产品基础上,进行定制开发,在当时由于对项目管理不是很重视,再加上做项目更多的是从时间和成本来考虑,所以导致很多项目没有可跟踪性,再加上人员的流动,会导致最终这些定制功能不知道如何开发,为什么要这样,甚至连源代码都没有建立其代码仓库(甚至有些人自己修改了jar包名称,很难被后面人发现,这种情况我就碰见过来,很是浪费时间啊!!)。这样在做升级前的前期工作就比较花时间去整理这些内容,下面接着说下这种特殊项目升级的一般操作方式。
首先是了解目前系统运行情况,主要任务有以下几点:
第一:了解老系统上的定制功能(针对不同的客户,需要定制出有特色的功能),列出定制功能列表(包括那些源码,如java、jsp、js等)并文档化
第二:老系统的运行环境,包括操作系统、应用服务器、数据库等,并在测试环境下搭建一套老系统
第三:了解标准功能里,老系统跟新系统的差别,列出列表并文档化
其次新系统的升级要求
了解新系统有哪些升级工具,如数据库升级脚本等。
最后是保证数据库已升级到支持新版本的基础上,直接在运行新系统,让测试人员找出目前跟老系统的具体差别
这些完成之后,
有些能通过修改配置解决
有些是需要升级jar包解决
因为两个版本的有核心功能不兼容的地方,所以只能根据源代码修改解决(反编译class文件)
这里补充说明下个人认为协同系统里比较核心的功能是权限管理、工作流引擎和表单设计器。
由于对项目管控始终都不理想,所以在升级的过程中,我采用的是最原始的方法(因为时间比较紧),就是必须每天记录修改点,为什么修改,解决方式等描述,已达到正式上线,操作无误。
从这个升级项目描述来看,也能出问题有很多,都是当初项目开发不规范导致,但愿以后的项目能够稍微用有效的管理模式去管控项目,而不会导致升级还如此麻烦。