CN1322420C - 构件化软件系统在线增加新功能的方法 - Google Patents
构件化软件系统在线增加新功能的方法 Download PDFInfo
- Publication number
- CN1322420C CN1322420C CNB2004100007736A CN200410000773A CN1322420C CN 1322420 C CN1322420 C CN 1322420C CN B2004100007736 A CNB2004100007736 A CN B2004100007736A CN 200410000773 A CN200410000773 A CN 200410000773A CN 1322420 C CN1322420 C CN 1322420C
- Authority
- CN
- China
- Prior art keywords
- new
- function
- structural member
- interface
- component
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种构件化软件系统在线增加新功能的方法,属于软件技术领域。改方法包括以下步骤:(1)开发支持新功能的新构件;(2)在线演化现有构件的实现体,向软件系统加载新构件的实现体;然后在构件容器中的消息与具体实现函数之间的映射表中增加代表新功能的消息与新构件实现体中新具体方法之间的关联;(3)为新的构件接口生成骨架程序并加载到系统中,替换老的骨架程序;(4)更新与运行时刻软件系统对应的文件形态的软件系统,使软件系统中包含新的构件。采用本发明的方法,可以使软件服务系统的维护人员方便地在保持系统运行的前提下为系统增加新的功能。
Description
技术领域:
本发明适用于软件的维护与演化,属于软件技术领域。
背景技术:
软件正在从以产品为核心向以服务为核心进行转化(Software As Service)。为了更好地为最终用户提供支持,软件服务系统(例如Web Service)需要在保持现有功能的前提下,不断增加新功能,以保持老用户、吸引新用户,从而在竞争中保持有利的局面。目前的软件服务系统增加新功能一般采用的方法是,对用户的访问量进行周期性分析,然后选取用户访问量最低的时间进行离线演化,例如在晚上进行等等,待演化结束后重新启动软件服务系统。但是,随着计算机网络的发展,软件服务系统的全球化过程十分迅速,周期性访问量的最低值将不断上升,因此在保持系统持续的前提下增加系统的功能变得逐步重要起来。
另外,考虑到系统一旦提供某种服务供客户访问后,不能轻易将服务内容减少,或者改变服务接口方法的调用方式,因此,本发明仅考虑增加服务功能的情形,不考虑其它形式的接口演化。
发明内容:
本发明的目的是提供一种构件化软件系统的功能在线增加方法接口在线演化方法,使得软件服务系统具有在线增加新功能的目的。
构件化软件系统在线增加新功能可以采用两种方案:
其一,通过增加新构件的途径增加新功能。该方案的主要方式是向软件系统部署新构件实现体。具体的加载方法与系统启动过程中加载构件的方法完全相同,构件引用的注册方法也相同。
其二,通过在现有构件接口中增加新方法的途径增加新功能。
如果需要增加的功能与现有的功能在逻辑上耦合度不是很大,则采用第一种方案比较合适;如果需要增加的功能与软件系统现有功能中的某一个功能密切相关,则采用第二种方案比较合适。
本发明涉及第二种方案。
本发明的技术方案如下:
构件化软件系统在线增加新功能的方法,包括以下步骤:
(1)根据现有系统中各个功能与构件的对应关系,确定用于支持新功能的现有构件,并根据新的构件接口开发新构件。
(2)在保持系统运行的前提下加载新构件实现体,以新构件为模板创建构件实例,同步新、老构件实例的状态,然后利用请求路由控制机制和请求缓冲控制机制二者之一或二者结合将系统中其他模块所引用的构件定向到新构件实现上;然后,与部署新构件的过程类似,在构件容器中的消息与具体实现函数之间的映射表中增加代表新功能的消息与新构件实现体中新具体方法之间的关联。更为具体的演化方法实施例,可以参照中国专利“构件化软件的在线演化方法”(专利号:ZL 01136385.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)在保持系统运行的前提下加载新构件实现体,以新构件为模板创建构件实例,同步新、老构件实例的状态,然后利用请求路由控制机制和请求缓冲控制机制二者之一或二者结合将系统中其他模块所引用的构件定向到新构件实现上。如图1所示,容器中包含一个请求方法(消息)与具体实现函数之间的映射表,为使客户的请求消息发送给正确的函数,需要在该表中增加代表新功能的消息与新实现体中新具体方法之间的关联。
(4)同时,如果新功能的增加影响的不仅是被演化的构件,还调用了现有系统中的其他构件或者资源,则需要建立该构件与其他现有构件、该构件与系统其他部分之间(例如数据库、消息服务等等)的新关联。
(5)为新的构件接口生成骨架程序(Skeleton)。同样,通过java.lang.ClassLoader,将其加载到系统中,替换老的骨架程序,用于接收来自客户的各种请求消息。
(6)如果各构件的接口已经发布到查找服务器上,则更新查找服务器上被演化构件的接口描述,以便于新客户可以获得新的构件接口。客户根据新接口生成对应的指代(Stub),该指代是构件在客户进程内的代理,客户程序向指代发出请求,即可以访问提供服务的软件系统提供的新方法。
(7)更新文件形态的软件系统,使之与运行时刻包含新构件的软件系统一致。以便于下次重新启动软件系统时,包含新的功能。
Claims (4)
1.构件化软件系统在线增加新功能的方法,包括以下步骤:
(1)根据现有系统中各个功能与构件的对应关系,确定用于支持新功能的现有构件,并根据新的构件接口开发新构件;
(2)在保持系统运行的前提下加载新构件实现体,以新构件为模板创建构件实例,同步新、老构件实例的状态,然后利用请求路由控制机制和请求缓冲控制机制二者之一或二者结合将系统中其他模块所引用的构件定向到新构件实现上;然后,在构件容器中的消息与具体实现函数之间的映射表中增加代表新功能的消息与新构件实现体中新具体方法之间的关联;
(3)为新的构件接口生成骨架程序并加载到系统中,替换老的骨架程序;
(4)更新文件形态的软件系统,使之与运行时刻包含新构件的软件系统一致。
2.如权利要求1所述的构件化软件系统在线增加新功能的方法,其特征在于,所述步骤(1)中开发新构件的方法包括以下步骤:
(1)根据现有系统中各个功能与构件的对应关系,对需要增加的新功能进行分析,确定一个对应功能与新功能耦合度最大的现有构件为基础构件,由基础构件对新功能进行支持;
(2)确定新的构件接口,即确定在接口目前的方法集合中,增加哪些新的方法;然后根据新的构件接口,重新开发该基础构件,在构件代码中增加必要的新方法以提供对新功能的支持,形成新构件。
3.如权利要求1所述的构件化软件系统在线增加新功能的方法,其特征在于,新功能的增加还调用了现有系统中的其他构件或者资源,所述步骤(2)和(3)之间增加步骤:建立新构件与其他现有构件、新构件与系统其他部分之间的新关联。
4.如权利要求1所述的构件化软件系统在线增加新功能的方法,其特征在于,现有系统中各构件的接口已经发布到查找服务器上,所述步骤(3)和(4)之间增加步骤:根据对新构件的接口描述更新查找服务器上被演化的基础构件的接口描述。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100007736A CN1322420C (zh) | 2004-01-18 | 2004-01-18 | 构件化软件系统在线增加新功能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100007736A CN1322420C (zh) | 2004-01-18 | 2004-01-18 | 构件化软件系统在线增加新功能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1641574A CN1641574A (zh) | 2005-07-20 |
CN1322420C true CN1322420C (zh) | 2007-06-20 |
Family
ID=34866889
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100007736A Expired - Fee Related CN1322420C (zh) | 2004-01-18 | 2004-01-18 | 构件化软件系统在线增加新功能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1322420C (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100451965C (zh) * | 2005-12-07 | 2009-01-14 | 英业达股份有限公司 | 动态升级程序的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999035566A1 (fr) * | 1997-12-30 | 1999-07-15 | Bull S.A. | Procede d'identification et de suivi des evolutions d'un ensemble de composants logiciels |
CN1339742A (zh) * | 2001-10-12 | 2002-03-13 | 北京大学 | 构件化软件的在线演化方法 |
CN1430143A (zh) * | 2003-01-29 | 2003-07-16 | 北京大学 | 软件构件实现多协议服务的方法 |
-
2004
- 2004-01-18 CN CNB2004100007736A patent/CN1322420C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999035566A1 (fr) * | 1997-12-30 | 1999-07-15 | Bull S.A. | Procede d'identification et de suivi des evolutions d'un ensemble de composants logiciels |
CN1339742A (zh) * | 2001-10-12 | 2002-03-13 | 北京大学 | 构件化软件的在线演化方法 |
CN1430143A (zh) * | 2003-01-29 | 2003-07-16 | 北京大学 | 软件构件实现多协议服务的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1641574A (zh) | 2005-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0786723B1 (en) | Document management systems using object- and agent-oriented methods | |
EP2021937B1 (en) | Techniques to perform gradual upgrades | |
CN101065947B (zh) | Web服务注册和操作方法和系统 | |
US7657609B2 (en) | Data transfer in a multi-environment document management system access | |
CN100487689C (zh) | 用于环球网服务结构中的包容器选择器及其选择方法 | |
CN101192937B (zh) | 一种可热部署的方法及其系统 | |
CN100388265C (zh) | 管理数据处理系统中的应用文件的方法和装置 | |
US7650609B2 (en) | Multi-environment document management system access | |
KR100783679B1 (ko) | 데이터 스트림에 기반하는 서비스의 개발, 배치, 제공을용이하게 하는 미들웨어 시스템 | |
CN101146127B (zh) | 一种分布式系统中客户端缓存更新的方法和装置 | |
CN1612523A (zh) | 在网络数据处理系统中安装软件的方法和系统 | |
CN101246424A (zh) | 一种基于文件的菜单自动生成系统和方法 | |
US7302681B2 (en) | Method and system for customized information handling system support updates | |
CN101375269A (zh) | 用于设备驱动程序的下载服务 | |
Wu et al. | Tango: a flexible mobility-enabled architecture for online and offline mobile enterprise applications | |
CN101236510B (zh) | 一种ejb集群的失败恢复处理方法及系统 | |
KR100834977B1 (ko) | 임베디드 에이전트 프레임워크 및 이를 이용한 유비쿼터스서비스 제공 방법 | |
CN1322420C (zh) | 构件化软件系统在线增加新功能的方法 | |
CN106302125A (zh) | 一种对请求信息进行响应的方法、装置及系统 | |
CN100428151C (zh) | 大规模并发联机交易中基于版本的c/c++组件热插拔方法 | |
US20030204646A1 (en) | Object-oriented framework for document routing service in a content management system | |
US6668271B1 (en) | System for distributing, installing and running web applications (agents) | |
CN108228192A (zh) | 一种面向服务的机载软件的动态管理的实现方法 | |
JP2001265603A (ja) | 自動振分ソフトウエア配布システム及びその方法 | |
CN113240492A (zh) | 订单生成方法及装置、存储介质、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070620 Termination date: 20100219 |