构件化软件系统在线增加新功能的方法

文档序号:6378444阅读:400来源:国知局
专利名称:构件化软件系统在线增加新功能的方法
技术领域
本发明适用于软件的维护与演化,属于软件技术领域。
背景技术
软件正在从以产品为核心向以服务为核心进行转化(Software As Service)。为了更好地为最终用户提供支持,软件服务系统(例如Web Service)需要在保持现有功能的前提下,不断增加新功能,以保持老用户、吸引新用户,从而在竞争中保持有利的局面。目前的软件服务系统增加新功能一般采用的方法是,对用户的访问量进行周期性分析,然后选取用户访问量最低的时间进行离线演化,例如在晚上进行等等,待演化结束后重新启动软件服务系统。但是,随着计算机网络的发展,软件服务系统的全球化过程十分迅速,周期性访问量的最低值将不断上升,因此在保持系统持续的前提下增加系统的功能变得逐步重要起来。
另外,考虑到系统一旦提供某种服务供客户访问后,不能轻易将服务内容减少,或者改变服务接口方法的调用方式,因此,本发明仅考虑增加服务功能的情形,不考虑其它形式的接口演化。

发明内容
本发明的目的是提供一种构件化软件系统的功能在线增加方法接口在线演化方法,使得软件服务系统具有在线增加新功能的目的。
构件化软件系统在线增加新功能可以采用两种方案其一,通过增加新构件的途径增加新功能。该方案的主要方式是向软件系统部署新构件实现体。具体的加载方法与系统启动过程中加载构件的方法完全相同,构件引用的注册方法也相同。
其二,通过在现有构件接口中增加新方法的途径增加新功能。
如果需要增加的功能与现有的功能在逻辑上耦合度不是很大,则采用第一种方案比较合适;如果需要增加的功能与软件系统现有功能中的某一个功能密切相关,则采用第二种方案比较合适。
本发明涉及第二种方案。
本发明的技术方案如下构件化软件系统在线增加新功能的方法,包括以下步骤(1)开发支持新功能的新构件。
(2)在线演化现有构件的实现体,向软件系统加载新构件的实现体;然后,与部署新构件的过程类似,在构件容器中的消息与具体实现函数之间的映射表中增加代表新功能的消息与新构件实现体中新具体方法之间的关联。具体的演化方法,可以参照中国专利“构件化软件的在线演化方法”(专利号ZL01136385.1)。
(3)为新的构件接口生成骨架程序并加载到系统中,替换老的骨架程序,用于接收来自客户的各种请求消息。
(4)更新与运行时刻软件系统对应的文件形态的软件系统,使软件系统中包含新的构件。
所述的构件化软件系统在线增加新功能的方法,步骤(1)中开发新构件的方法包括以下步骤(1)根据现有系统中各个功能与构件的对应关系,对需要增加的新功能进行分析,确定一个对应功能与新功能耦合度最大的现有构件为基础构件,由基础构件对新功能进行支持。
(2)确定新的构件接口,即确定在接口目前的方法集合中,增加哪些新的方法;然后根据新的构件接口,重新开发该基础构件,在构件代码中增加必要的新方法以提供对新功能的支持,形成新构件。
所述的构件化软件系统在线增加新功能的方法,如果新功能的增加影响的不仅是被演化的构件,还调用了现有系统中的其他构件或者资源,所述步骤(2)和(3)之间增加步骤建立新构件与其他现有构件、新构件与系统其他部分之间的新关联。
所述的构件化软件系统在线增加新功能的方法,如果现有系统中各构件的接口已经发布到查找服务器上,所述步骤(3)和(4)之间增加步骤根据对新构件的接口描述更新查找服务器上被演化的基础构件的接口描述,以便于新客户可以获得新的构件接口。
本发明的优点和积极效果采用本发明的方法,可以使软件服务系统的维护人员方便地在保持系统运行的前提下为系统增加新的功能。此外,本发明与申请者已获授权的另一专利——“构件化软件的在线演化方法”(专利号01136385.1)密切相关。在“构件化软件的在线演化方法”中,系统的功能、构件的接口等在系统演化过程中是不变的,变化的是实现构件功能的具体对象。而在本发明中,由于系统的功能需要增加,因此,从系统总体角度看,可能需要增加新的接口,或者增加现有接口中的方法。两个发明所采用的低层技术也有很强的关联。
具体实施例方式本节给出一个基于J2EE应用服务器的实施方式,

图1给出了示意图。应用服务器是网络环境中应用程序的高层运行平台,使得应用系统的代码更为简洁、开发更为方便。应用服务器被认为是继操作系统、数据库管理系统之后,随着计算机网络环境的发展而出现的里程碑式的系统软件。在基于J2EE的应用服务器中,所有的业务构件由构件容器进行管理与支持。
在J2EE应用服务器中,构件为EJB(Enterprise JavaBean)构件,EJB构件状态由构件容器(Container)进行管理,其接口符合EJB规范。在运行过程中,每一个构件都有与其相对应的构件容器,专门用于对该构件的管理,构件容器中包含关于构件的各种信息,例如构件标识、构件类型、构件状态、构件安全控制、所需要的构件、通信机制等等。
完成构件重载需要定义新的加载类。JAVA平台中包含一个类java.lang.ClassLoader,新定义的加载来类可以通过利用Java的重载机制,重载java.lang.ClassLoader中的loadClass方法,以解决直接利用java.lang.ClassLoader加载类时可能遇到的冲突问题,以实现构件的重载。接口的实现符合EJB规范,构件的实现也符合EJB规范。
具体实施过程为(1)根据现有系统中各个功能与构件的对应关系,对需要增加的新功能进行分析,例如,新功能与哪个功能耦合度最大?最终确定出由哪个现有构件进行支持最合适。
(2)确定新的构件接口,即确定在接口目前的方法集合中,增加哪些新的方法。然后根据新的构件接口,重新开发该构件,主要是在构件代码中增加必要的新方法,以提供对新功能的支持。
(3)利用中国专利“构件化软件的在线演化方法”(专利号01136385.1)中的方法,在保持系统运行的前提下,演化构件实现体,向软件系统加载新构件实现体。如图1所示,容器中包含一个请求方法(消息)与具体实现函数之间的映射表,为使客户的请求消息发送给正确的函数,需要在该表中增加代表新功能的消息与新实现体中新具体方法之间的关联。
(4)同时,如果新功能的增加影响的不仅是被演化的构件,还调用了现有系统中的其他构件或者资源,则需要建立该构件与其他现有构件、该构件与系统其他部分之间(例如数据库、消息服务等等)的新关联。
(5)为新的构件接口生成骨架程序(Skeleton)。同样,通过java.lang.ClassLoader,将其加载到系统中,替换老的骨架程序,用于接收来自客户的各种请求消息。
(6)如果各构件的接口已经发布到查找服务器上,则更新查找服务器上被演化构件的接口描述,以便于新客户可以获得新的构件接口。客户根据新接口生成对应的指代(Stub),该指代是构件在客户进程内的代理,客户程序向指代发出请求,即可以访问提供服务的软件系统提供的新方法。
(7)更新与运行时刻软件系统对应的文件形态的软件系统,使软件系统中包含新的构件,以便于下次重新启动软件系统时,包含新的功能。
权利要求
1.构件化软件系统在线增加新功能的方法,包括以下步骤(1)开发支持新功能的新构件;(2)在线演化现有构件的构件实现体,向软件系统加载新构件的实现体;然后,在构件容器中的消息与具体实现函数之间的映射表中增加代表新功能的消息与新构件实现体中新具体方法之间的关联;(3)为新的构件接口生成骨架程序并加载到系统中,替换老的骨架程序;(4)更新与运行时刻软件系统对应的文件形态的软件系统,使软件系统中包含新的构件。
2.如权利要求1所述的构件化软件系统在线增加新功能的方法,其特征在于,所述步骤(1)中开发新构件的方法包括以下步骤(1)根据现有系统中各个功能与构件的对应关系,对需要增加的新功能进行分析,确定一个对应功能与新功能耦合度最大的现有构件为基础构件,由基础构件对新功能进行支持;(2)确定新的构件接口,即确定在接口目前的方法集合中,增加哪些新的方法;然后根据新的构件接口,重新开发该基础构件,在构件代码中增加必要的新方法以提供对新功能的支持,形成新构件。
3.如权利要求1所述的构件化软件系统在线增加新功能的方法,其特征在于,新功能的增加还调用了现有系统中的其他构件或者资源,所述步骤(2)和(3)之间增加步骤建立新构件与其他现有构件、新构件与系统其他部分之间的新关联。
4.如权利要求1所述的构件化软件系统在线增加新功能的方法,其特征在于,现有系统中各构件的接口已经发布到查找服务器上,所述步骤(3)和(4)之间增加步骤根据对新构件的接口描述更新查找服务器上被演化的基础构件的接口描述。
全文摘要
本发明公开了一种构件化软件系统在线增加新功能的方法,属于软件技术领域。该方法包括以下步骤(1)开发支持新功能的新构件;(2)在线演化现有构件的实现体,向软件系统加载新构件的实现体;然后在构件容器中的消息与具体实现函数之间的映射表中增加代表新功能的消息与新构件实现体中新具体方法之间的关联;(3)为新的构件接口生成骨架程序并加载到系统中,替换老的骨架程序;(4)更新与运行时刻软件系统对应的文件形态的软件系统,使软件系统中包含新的构件。采用本发明的方法,可以使软件服务系统的维护人员方便地在保持系统运行的前提下为系统增加新的功能。
文档编号G06F9/445GK1641574SQ20041000077
公开日2005年7月20日 申请日期2004年1月18日 优先权日2004年1月18日
发明者王千祥, 王晓鹏, 梅宏, 杨芙清 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1