软件多版本升级的方法及系统的制作方法

文档序号:6560624阅读:174来源:国知局
专利名称:软件多版本升级的方法及系统的制作方法
技术领域
本发明涉及软件领域,尤其涉及一种软件版本升级的方法及系统。
背景技术
作为软件产品,每开发到一定阶段、可执行指定功能后,都需要将当前的软件固化下来,以版本形式作为产品发布。然后再在此基础上继续增加新的功能,或修改现有软件中的BUG。
版本的内容包括编译出来的可执行程序、编译出来的动态库、用于控制软件功能的配置文件、版本描述性文档等等。
在软件产品使用过程中,客户针对软件产品会提出很多新的需求,或者发现很多需要修改的地方。该软件产品经过修改完后,会有新的版本出现,以满足产品的要求,此时就要考虑版本升级的问题了。
软件产品版本升级可以增强软件的安全性、提高软件产品的可靠性及兼容性,也可以实现更多的功能,以满足更多的需求。
在软件产品升级过程中,需要考虑软件产品在使用过程中,已经产生了很多有用的数据,即便是在软件产品的升级之后,能够实现更多更好的功能,也要完好地保留这些有用数据,保证这些有用的数据不会被覆盖掉。否则会为软件产品的继续使用带来极大的不便,例如,旧版本的某软件产品中,用户设置了很多配置项,配置文件已经被修改,如果在升级过程中所述配置数据丢失,那么用户修改的部分都将丢失,这是用户所不会接受。
数据库不会自动升级,新版本往数据库中存储数据的方式可能同旧版本不一样了,数据表的格式可能发生了变化,如果只是简单的将新版本的可执行文件和库文件覆盖旧版本的相应文件,而数据库的格式仍保持旧版本的样子,那么就会发生数据库读写失败的问题。
所以说软件产品版本升级,必须在保证用户现有劳动成果的基础上,增加新版本的功能,修改旧版本的BUG,比如对集成管理应用平台iMAP而言,就是要保存现有数据库中的数据以及现有的配置文件等。
目前,被采用的软件版本升级的方法有两种,第一种方法就是为版本升级中需要升级的所有特性分别写各自的升级程序,将这些升级程序放到一个目录下;然后利用配置文件对这些升级程序进行控制;在配置文件中,罗列了每一组可能的升级,并且在后面指出该组升级需要调用哪些升级程序;用户升级时,只要提供原始版本号和新版本号,升级脚本就可以从配置文件中找到需要调用的升级程序,然后对升级程序进行调用,这种方法只适用于简单的软件升级,软件规模越大、升级程序越多,这种方法就越难控制。第二种方法是需要针对新旧版本的特点,为每一个版本的升级写一个专门的升级程序,升级程序的命名方式和升级程序的存放位置不作特别规定。所述升级命令的脚本包括的功能有原软件产品各个模块数据库格式的升级(如果数据库格式发生变化的话)、各个模块配置文件的升级(将用户修改的配置项合入到新版本的配置文件中)等等。升级脚本是一个可执行文件,里面存放了将旧版本升级到新版本时,需要执行的命令集合。
下面将以iMAP的版本升级过程为例,对目前的软件产品升级方法二进行详细说明iMAP作为一种集成管理应用平台,是一个基于CORBA标准开发的分布式系统。其目标是为产品提供一个集中的网管平台。iMAP包含故障管理、安全管理、拓扑管理、公共组件等多个模块,每个模块都由专人负责开发和维护。图1描述了iMAP版本的产生情况在iMAP的开发过程中,依次产生version1、version2、......、version7等版本,图1中的圆点表示版本。iMAP利用专业的版本管理软件(Rational Clearcase)进行版本管理。在iMAP每个版本开发完成时,通过版本管理软件为iMAP当前的所有代码打一个版本标签,如version1、version2等。以后可以根据标签名从版本管理软件中获取对应的iMAP版本。当把某个iMAP版本提交给产品使用后,产品会对该版本提出许多新的需求,或者发现一些需要修改的问题。为了不和正在开发的主干版本相互影响,开发者会利用版本管理软件在某个版本上创建一个分支,然后再在该分支上,专门针对产品的需求来进行开发和维护。图2描述了iMAP版本分支的产生情况。
由图2可知,随着iMAP的不断开发和维护,iMAP的版本和分支将越来越多、越来越复杂。
随着iMAP用户的不断增多,用户之间使用的版本差异性也就越来越大,这就造成在版本升级时,新、旧版本的之间的关系十分复杂,版本升级的工作量非常大。比如说,图2中的版本v7b1_version1发布了,而用户目前使用的版本可能包括version1、version2、version3、v2b1_version1、v2b1_version2等等,那么需要考虑的新、旧版本升级情况可能包括version1=>v7b1_version1、version2=>v7b1_version1、version3=>v7b1_version1、v2b1_version1=>v7b1_version1、v2b1_version2=>v7b1_version1,等等。
版本升级必须在保证用户现有劳动成果的基础上,对iMAP来说,就是要在现有数据库中的数据和现有的配置文件的基础上,增加新版本的功能,修改旧版本的BUG。
因此,研发人员需要针对新旧版本的特点,写版本升级命令的脚本,升级命令的脚本包括的功能有很多,对于iMAP来说,升级脚本至少包括的功能有各个模块数据库格式的升级(如果数据库格式发生变化的话)、各个模块配置文件的升级,即将用户修改的配置项合入到新版本的配置文件中。
综合上述关于软件版本升级的现有技术,仍以iMAP为例,可以总结出现有技术存在的缺陷有1、升级脚本的存放目录不合理。
假设iMAP版本存放在IMAP_ROOT目录下,则升级脚本的存放目录为IMAP_ROOT/upgrade目录。升级的版本多时,这个目录下升级脚本文件的数量也随之增多,达到了分不清哪个版本该使用哪些升级脚本文件的程度。
2、版本升级脚本命名混乱。
iMAP没有一个统一的脚本命名方法,编写升级脚本时,各模块的维护人员根据自己的习惯为各自模块的升级脚本命名。升级的版本多时,升级脚本文件的数量也随之增多,升级脚本命名就显得五花八门,令人眼花缭乱,时间长了之后,维护起来非常困难。
3、重复劳动太多。
对于不同的新旧版本升级,升级内容虽然不完全一样,但也有相同的地方。而目前是针对每一个新旧版本的升级,都写一套独立的升级脚本,造成了很多重复劳动。
总之,软件产品现有的版本升级方法开发周期长,软件版本升级效率低,不易于管理、维护。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种软件多版本升级的方法及系统,以提高软件版本升级的效率,使得多版本升级软件更便于管理、维护。
本发明提供的一种软件多版本升级的方法,包括a、为不同指定版本间的升级任务分别建立不同的指定目录,所述指定目录用于存放与之对应的升级脚本;
b、通过激活与指定版本间的升级任务相对应的指定目录下的升级脚本完成指定版本间的升级。
下述方法的技术方案为可选技术方案。
不同旧版本升级到同一新版本的各指定目录具有相同的上级目录,该上级目录称为该新版本目录,不同新版本对应不同的新版本目录,不同新版本目录具有相同的上级目录。
所述步骤a还包括将不同升级脚本中各升级任务通用的公共资源存放在固定目录下;且所述步骤b具体包括通过激活与指定版本间的升级任务相对应的指定目录下的公共组件升级脚本完成指定版本间的升级任务;所述公共组件升级脚本用于存放调用所需升级脚本以及公共资源时所需要的执行命令。
所述公共资源包括各个升级过程中都需要用到的通用工具和通用文档。
所述通用工具和通用文档分别设立有固定目录。
所述步骤a还包括根据预定目标模块将升级脚本中执行预定目标模块升级的内容划分成预定目标模块升级脚本;且所述步骤b具体包括各预定目标模块的升级脚本由与指定版本间的升级任务相对应的指定目录下的公共组件升级脚本统一调用,以完成指定版本间的升级。
本发明还提供有软件多版本升级系统,该系统包括一个或多个指定目录单元,不同指定版本间的升级任务分别对应一个指定目录单元,各指定目录单元均存放与之对应的升级脚本,通过激活与指定版本间的升级任务相对应的指定目录单元下的升级脚本完成指定版本间的升级。
所述系统还包括公共资源存储单元,所述公共资源存储单元用于存储各个升级过程中都需要用到的公共资源,由与指定目录单元下的公共组件升级脚本调用,以完成升级任务;所述公共组件升级脚本用于存放调用所需升级脚本以及公共资源时所需要的执行命令的集合,以执行指定版本间的升级任务。
所述公共资源存储单元包括通用工具存储子单元、通用文档存储子单元。
所述升级脚本根据预定目标模块划分成预定目标模块升级脚本,由与指定版本间的升级任务相对应的指定目录单元下的公共组件升级脚本统一调用,执行指定升级任务。
通过上述技术方案的描述可以看出,本发明通过将不同版本间的升级任务对应的升级脚本存放在不同的指定目录中,能够高效、安全、快捷地实现多版本升级任务,如可以方便的完成旧版本1、旧版本2、旧版本3等不同旧版本到同一新版本的升级任务,即便在有多个旧版本到多个新版本升级等情况下,仍然可以高效、快捷、安全地完成软件多版本升级的任务,有效解决了升级脚本存放目录不合理、版本升级脚本命名混乱的问题;本发明通过将各升级任务都会用到的公共资源存放在固定目录下,如将通用的工具或者文档放在固定的目录下,避免了升级脚本的重复开发现象,减小了升级脚本的开发工作量;通过将升级脚本划分成多个预定目标模块升级脚本,在升级任务中不涉及某个目标模块时,则不需要维护相应的目标模块升级脚本,进一步减小了升级脚本的开发工作量,而且,使升级脚本便于管理和维护。从而通过本发明提供的技术方案实现了提高软件多版本升级的工作效率、提高软件多版本升级可维护性的目的。


图1为iMAP版本的产生情况;图2为iMAP版本分支的产生情况;
图3为本发明实施例的软件多版本升级流程图;图4为本发明实施例的iMAP多版本升级的目录结构。
具体实施例方式
本发明提供了一种方便灵活的方法来解决上述现有技术中存在的问题,当软件产品有新的版本需要更新、升级时,只需激活与指定版本间的升级任务相对应的指定目录下的升级脚本,即可完成指定版本间的升级。利用本发明所提供的技术使得软件产品不同版本间的升级更易于实现,从而提高了软件产品版本升级的工作效率。
本发明的核心是为不同指定版本间的升级任务分别建立不同的指定目录,指定目录用于存放与之对应的升级脚本,通过激活与指定版本间的升级任务相对应的指定目录下的升级脚本完成指定版本间的升级。
在本发明中,不同旧版本升级到同一新版本的各指定目录应该是同级目录并列关系,即不同旧版本升级到同一新版本的各指定目录具有相同的上级目录。这个上级目录即为一个新版本建立的目录,不同新版本的目录可以具有相同的上级目录。
为了避免升级脚本的重复开发、提供软件版本的升级效率,本发明可以将不同升级脚本中各升级任务通用的公共资源存放在固定目录下,还可以为各预定目标模块分别设置升级脚本。
具体一点讲,本发明实现软件产品版本升级时的设置步骤包括(1)为软件产品每两个指定版本间的升级任务建立指定目录,指定目录用于存放指定版本间的升级脚本。
为了便于理解,这里仍以iMAP为例进行说明。对于iMAP而言,如果存在version1=>v7b1_version1的升级任务,那么就为这个升级任务建立指定目录,如果不存在上述升级任务,就不需要建立该指定目录。
(2)按软件产品的功能模块即预定目标模块划分升级脚本,这样,可以对不同模块的升级脚本分别进行独立的维护,然后,由公共组件升级脚本来统一组织调用。
(3)将各个升级任务中需要用到的相对不变化的公共资源,如通用工具、通用文档等,放到固定目录下,由公共自己升级脚本来统一组织调用。这里的通用文档如升级指导文档等。通过该步骤的设置,使每个升级脚本均不需要包括公共资源部分的内容,从而避免了升级脚本的重复开发现象,减小了升级脚本的开发工作量。
下面仍以iMAP为例、结合附图3、附图4对本发明提供的软件版本升级方法进行说明。
图3中,在步骤31、为每个新版本建立一个目录,该新版本目录中包括多个指定目录,不同指定目录用于存放不同旧版本到该新版本的升级任务对应的升级脚本,本发明应保证一个升级任务对应一个指定目录。
下面以图4为例对软件版本升级的目录结构进行说明。
图4中,所有的升级脚本都在一个upgrade目录中,在upgrade目录下,为每一个新版本建立一个目录,用于存放升级脚本,即由当前各旧版本升级到该新版本的升级脚本。需要注意的是图4中只为一个新版本建立了目录,即Version_NEW目录,如果还有其他更新的版本时,比如说Version_NEW1(新版本1),则可以在upgrade目录下为这个更新的版本建立目录Version_NEW1。
iMAP当前推出新版本Version_NEW时,需要升级当前的旧版本升级到Version_NEW,设定目前有三个地方在使用iMAP,相应的版本分别是Version_OLD_ONE(旧版本1)、Version_OLD_TWO(旧版本2)、Version_OLD_THREE(旧版本3),此时需要将iMAP版本分别从Version_OLDO_NE、Version_OLD_TWO、Version_OLD_THREE升级到Version_NEW,这样,就需要分别为Version_OLD_ONE=>Version_NEW、Version_OLD_TWO=>Version_NEW、Version_OLD_THREE=>Version_NEW,分别建立指定目录,即在目录Version_NEW1下分别建立三个子目录Version_OLD_ONE子目录、Version_OLD_TWO子目录、Version_OLD_THREE子目录,从而使一个升级任务对应一个指定目录。
到步骤32按照预定目标模块即功能模块划分升级脚本,这里的预定目标模块如MOSvc模块、FaultSvc模块、SecuritySvc模块等。
图4中,本发明将所有在upgrade目录中的升级脚本按照预定目标模块划分为如下三个升级脚本upgrade_MOSvc.sh、upgrade_FaultSvc.sh、upgrade_SecuritySvc.sh。这三个升级脚本分别对应MOSvc模块、FaultSvc模块、SecuritySvc模块。图4中的upgrade.sh作为公共组件升级脚本即平台模块的升级脚本。如果以后iMAP添加了新的功能模块,那么,需要在各指定目录中为新增的功能模块建立升级脚本。
如果某个升级任务中不需要对某个功能模块进行升级,那么,该功能模块的升级脚本中可以为空,即不对该功能模块进行任何更新升级操作。升级版本的开发过程由此变得清晰可控。
到步骤33将各个升级任务中需要用到的相对不变化的公共资源,如通用工具、通用文档等,存放到一个固定的目录下,以避免在每次编写升级脚本时都需要重复进行公共资源的编写过程。
图4中的公共资源目录为在upgrade目录下建立的Tools、Docs子目录,Tools子目录用于存放各个升级任务中都需要用到的通用工具,Docs子目录用于存放各个升级任务中都需要用到的通用文档。如果以后还有其它表现形式的公共资源,且该表现形式的公共资源放在Tools和Docs目录下都不合适时,可以在upgrade目录下为该表现形式的公共资源建立新的子目录。
到步骤34将不同版本间对应的升级脚本存放在与之相应的指定目录下。
如图4中,将与升级任务Version_OLD_ONE→Version_NEW对应的升级脚本upgrade.sh、upgrade_MOSvc.sh、upgrade_FaultSvc.sh、upgrade_SecuritySvc.sh存放到指定目录Version_OLD_ONE中;将与升级任务Version_OLD_TWO→Version_NEW对应的升级脚本upgrade.sh、upgrade_MOSvc.sh、upgrade_FaultSvc.sh、upgrade_SecuritySvc.sh存放到指定目录Version_OLD_TWO中;将与升级任务Version_OLD_THREE→Version_NEW对应的升级脚本upgrade.sh、upgrade_MOSvc.sh、upgrade_FaultSvc.sh、upgrade_SecuritySvc.sh存放到指定目录Version_OLD_THREE中。
到步骤35在进行软件版本升级时,激活与指定版本间的升级任务对应的公共组件升级脚本,执行指定版本间的升级任务。
例如,当用户需要将iMAP从Version_OLD_TWO升级到Version_NEW时,用户可直接到与之相对应的指定目录upgrade/Version_NEW/Version_OLD_TWO/下找到upgrade.sh升级脚本,并激活upgrade.sh,执行从Version_OLD_TWO升级到Version_NEW的升级任务;用同样的方法可以完成任意版本间的升级任务。
本发明还提供了一种软件多版本升级的系统,所述系统包括一个或多个指定目录单元,不同指定版本间的升级任务分别对应一个指定目录单元,各指定目录单元均存放与之对应的升级脚本。
本发明中的升级脚本可以按预定目标模块划分成预定目标模块升级脚本,由与指定版本间的升级任务相对应的指定目录单元下的升级脚本单元中公共组件升级脚本统一调用。公共组件升级脚本中存放有调用不同预定目标模块升级脚本时所需要的执行命令的集合。通过激活指定目录单元下的公共自己升级脚本可以执行指定版本间的升级任务。执行指定版本间的升级任务。预定目标模块可以为功能模块,具体如上述方法中的说明。
本发明的系统还包括公共资源存储单元,所述公共资源存储单元用于存储各个升级任务中都需要用到的公共资源。公共资源存储单元中存储的公共资源由与指定目录单元下的公共组件升级脚本调用,以完成升级任务。公共组件升级脚本中存放有调用不同预定目标模块升级脚本以及公共资源时所需要的执行命令的集合。通过激活指定目录单元下的公共资源升级脚本可以执行指定版本间的升级任务。具体如上述方法中的描述。
上述公共资源存储单元可以包括通用工具存储子单元、通用文档存储子单元等,以存储公共资源中的通用工具、通用文档如升级指导文档等。具体如上述方法中的描述。
在上述实施例中,本发明是以iMAP为例对软件多版本升级的方法及系统进行说明的,但是本发明不只限于iMAP的软件升级,只要是通过为不同指定版本间的升级任务分别建立不同的指定目录实现软件多版本升级的技术方案均在本发明保护范围之内。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种软件多版本升级的方法,其特征在于,所述方法包括a、为不同指定版本间的升级任务分别建立不同的指定目录,所述指定目录用于存放与之对应的升级脚本;b、通过激活与指定版本间的升级任务相对应的指定目录下的升级脚本完成指定版本间的升级。
2.根据权利要求1所述的方法,其特征在于,不同旧版本升级到同一新版本的各指定目录具有相同的上级目录,该上级目录称为该新版本目录,不同新版本对应不同的新版本目录,不同新版本目录具有相同的上级目录。
3.根据权利要求1所述的方法,其特征在于,所述步骤a还包括将不同升级脚本中各升级任务通用的公共资源存放在固定目录下;且所述步骤b具体包括通过激活与指定版本间的升级任务相对应的指定目录下的公共组件升级脚本完成指定版本间的升级任务;所述公共组件升级脚本用于存放调用所需升级脚本以及公共资源时所需要的执行命令。
4.根据权利要求3所述的方法,其特征在于,所述公共资源包括各个升级过程中都需要用到的通用工具和通用文档。
5.根据权利要求4所述的方法,其特征在于,为所述通用工具和通用文档分别设立固定目录。
6.根据权利要求1或2或3或4或5所述的方法,其特征在于,所述步骤a还包括根据预定目标模块将升级脚本中执行预定目标模块升级的内容划分成预定目标模块升级脚本;且所述步骤b具体包括各预定目标模块的升级脚本由与指定版本间的升级任务相对应的指定目录下的公共组件升级脚本统一调用,以完成指定版本间的升级。
7.一种软件多版本升级系统,其特征在于,所述系统包括一个或多个指定目录单元,不同指定版本间的升级任务分别对应一个指定目录单元,各指定目录单元均存放与之对应的升级脚本,通过激活与指定版本间的升级任务相对应的指定目录单元下的升级脚本完成指定版本间的升级。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括公共资源存储单元,所述公共资源存储单元用于存储各个升级过程中都需要用到的公共资源,由与指定目录单元下的公共组件升级脚本调用,以完成升级任务;所述公共组件升级脚本用于存放调用所需升级脚本以及公共资源时所需要的执行命令的集合,以执行指定版本间的升级任务。
9.根据权利要求8所述的系统,其特征在于,所述公共资源存储单元包括通用工具存储子单元、通用文档存储子单元。
10.根据权利要求7所述的系统,其特征在于,所述升级脚本根据预定目标模块划分成预定目标模块升级脚本,由与指定版本间的升级任务相对应的指定目录单元下的公共组件升级脚本统一调用,执行指定升级任务。
全文摘要
本发明提供了一种软件多版本升级的方法及系统。本发明的核心是为不同指定版本间的升级任务分别建立不同的指定目录,所述指定目录用于存放与之对应的升级脚本,通过激活与指定版本间的升级任务相对应的指定目录下的升级脚本完成指定版本间的升级。本发明能够高效、安全、快捷地实现多版本升级任务,如可以方便的完成旧版本1、旧版本2、旧版本3等不同旧版本到同一新版本的升级任务,即便在有多个旧版本到多个新版本升级等情况下,仍然可以高效、快捷、安全地完成软件多版本升级的任务,有效解决了升级脚本存放目录不合理、版本升级脚本命名混乱的问题;从而实现了提高多版本升级的工作效率以及提高多版本升级可维护性的目的。
文档编号G06F9/445GK1904837SQ20061010952
公开日2007年1月31日 申请日期2006年8月4日 优先权日2006年8月4日
发明者龙鸽 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1