一种基于超图的网构软件体系结构在线演化方法

文档序号:6400260阅读:155来源:国知局
专利名称:一种基于超图的网构软件体系结构在线演化方法
技术领域
本发明涉及一种基于超图的网构软件体系结构在线演化方法,属于软件维护技术领域。
背景技术
构件是指语义完整、语法正确、有可重用价值的单位软件,是软件重用过程中可以明确辨识的系统,结构上,它是语义描述、通讯接口和实现代码的复合体。网构软件是Internet时代一种新的软件形态,包括一组分布于Internet环境下各个结点的、具有主体化特征的构件,以及一组用于支撑这些软件实体以各种交互方式进行协同的连接件。随着软件系统的规模越来越大,其可用性、可靠性等问题越来越难以保证。为了确保构件在应对外部环境和用户需求变化的同时仍能持续不断地提供服务,研究者提出了一些在线演化的方法。目前,大多是对构件在线演化的研究,针对全局的体系结构进行在线演化的研究相对较少。经过对现有技术的检索发现,中国专利申请号01136385.1,记载了一种构件化软件的在线演化方法。通过引入构件的同步状态、截流状态和缓冲状态建立起构件的细粒度管理机制,利用构造新加载程序的方法,借助构件接口进行构件重载,实现了在软件运行过程中进行构件的替换、增加、删除等操作。此方法仅考虑了构件这种小粒度的演化方式,没有涉及体系结构的演化。进一步检索发现,中国专利申请号200910044524.X,记载了一种基于体系结构演化的软件可信保证方法,将软件环境适应过程中感知、决策和执行各阶段封装为感知构件、策略连接子和行为构件,保存了软件体系结构模型并支持其在线修改。但是,此方法的体系结构主要体现在一致性维护部件,在构件的演化时没有考虑到针对体系结构变化如何调整局部构件。进一步检索发现,中国专利申请号201010530576.0,记载了一种基于事务的构件在线演化方法,基于相关的多个构件之间的事务关系,管理用户可以通过控制器动态修改构件状态,在系统持续运行的前提下,对构件的内部结构、行为等动态更新。同样的,此方法也没有考虑基于体系结构进行演化。另外,在网构软件中,大型复杂软件需要由庞大的构件组成,构件由连接件建立连接依赖关系组成软件,连接件建立的不只是两个构件之间的二元关系,也可以是多个构件之间的依赖关系。如果使用普通图来表示由纵横交错的构件组成的体系结构,生成时开销很大,且体系图庞大不易处理。综上所述,为了实现软件体系结构的可扩展性,保证大规模复杂软件系统的自适应演化,基于体系结构的复杂软件在线演化是网构软件研究的难点之一。

发明内容
本发明技术解决问题:为了解决上述难点问题,提供一种基于超图的网构软件体系结构演化方法,实现软件体系结构的可扩展性,保证大规模复杂软件系统的自适应演化。本发明技术解决方案包括:将构件自下而上分为基础层构件、业务层构件和应用层构件;构件存在于不同领域的静态域中,用户的应用软件处于动态域中;使用有向超图表示网构软件的体系结构;在体系结构超图表示的基础上,利用超图的性质,解决构件或连接件的增删、替换、迁移等演化问题。构件分层具体包括:将构件分为自下而上的三层:基础层构件、业务层构件和应用层构件。基础层构件一般是不涉及业务或领域知识的一类通用的基础构件;业务层构件一般是借助基础构件,又带有领域相关业务信息的一类构件;应用层构件一般是根据用户需求,通过组合业务构件而形成的大粒度构件。通过连接件建立层内、层间构件的依赖关系。静态域、动态域具体是:业务层和应用层的构件根据其所属的领域分别存放于不同的静态域中。通过链接静态域中的构件到用户的动态域中,再加上用户相关的配置信息,形成用户的应用软件。使用有向超图表示网构软件的体系结构具体包括:通过读取构件库中存有的构件信息和用户应用软件的配置信息,建立体系结构的超图表示。为了显示构件部署的情况,将基础设施作为体系结构中的最底层,通过超边连接服务器与其上部署的所有构件。为了显示构件部署的情况,将基础设施作为网构软件的体系结构最底层,通过超边连接基础设施与基础设施上部署的所有构件因此,在本发明的网构软件的体系结构超图表示中,顶点代表用户应用、构件、月艮务器,超边代表连接件,一条超边建立了多个顶点之间的依赖关系。共有三类超图:(I)所有构件形成的超图,表达了基础层、业务层、应用层之间及各层次内部构件的依赖关系;(2)静态域中每个领域形成的超图,表达了领域业务构件之间的逻辑关系;(3)动态域中每个用户的超图,体现了用户应用使用构件的情况。利用超图解决演化问题具体包括:构件的增加:分为增加构件和增加构件的新版本。当有新构件加入时,根据构件所属的层次,在超图对应的层中添加顶点,如果该构件有依赖的其他构件,则需要建立超边。构件的不同版本在超图中表现为顶点的对象。当已有构件的新版本加入构件库时,首先找到此顶点,如果新版本是对原有构件错误的修正,则转为构件的替换问题,如果新版本增加了功能,则为此构件实例化一个新的对象,并向使用该构件旧版本的用户发送消息,询问是否替换掉旧版本。构件的删除:分为删除构件和删除构件的某一版本。删除构件的某一版本时,首先需要确定动态域或者该构件所在层及以上层中的构件是否依赖于该版本,如果存在依赖,则不能删除,如果不存在依赖,根据该构件的版本信息,删除超图中相应顶点的对象。删除构件时,首先删除该顶点的所有对象,即执行步骤删除构件的版本,然后,删除此顶点及其与下层顶点建立的超边。构件的替换:当构件内部出现错误时,需要启用新构件对问题构件进行替换。为了保证系统的正常运行,在替换前,通过超图获得与此构件互相依赖的其他构件,验证构件之间的接口、参数是否匹配,验证成功后才能进行替换操作。构件的迁移:当构件运行环境CPU、内存使用率高,或者构件的响应时间、可靠性QoS指标不能满足用户的要求时,需要将构件迁移到CPU、内存等外部环境较佳的基础设施上。首先,在超图中找到代表此构件的顶点,查找是否存在与此构件所实现的功能、接口一致的对象,如果有则判断该对象是否满足用户的需求,然后在超图中获得直接依赖于问题构件的所有超边,即修改连接件的配置,让连接件指向此对象即可;否则,需要将该构件迁移到一个满足用户QoS要求的基础设施上,并修改直接依赖于该构件的连接件信息,指向此构件所处的新地址。演化完成后都会在线实时更新对应的超图。为了降低算法计算复杂度,将超图转换为二部图:增加了一类超边顶点集合,通过此顶点代替超边建立原始顶点之间的联系。这样,始终只有一条边从头顶点流出指向边顶点,只需要两步回溯就可以找到依赖于它的顶点。本发明与现有技术相比的优点和积极效果如下:( I)本发明通过链接静态域中的构件到用户的动态域中,所有用户共享使用构件,只要加上用户的配置信息,就可以形成用户的应用系统,不需要为用户开发系统,当用户需求改变时,只需要修改配置信息或者对构件进行演化即可满足,实现软件体系结构的可扩展性,保证大规模复杂软件系统的自适应演化。(2)本发明基于超图进行软件体系结构演化,可以通过一条超边建立多个构件之间的依赖关系,层次的划分使得演化更加清晰。通过构件、域、用户应用三个维度形成的不同超图,可以全方位的把握复杂软件的整体结构和动态演化过程。(3)本发明中将超图转换为二部图进行求解计算,大大降低了算法复杂度。


图1为本发明的实施例流程图;图2为本发明使用超图表示网构软件体系结构的示意图;图3为本发明将超图变换为二部图的示意图;图4为本发明得到的某一用户应用的超图表示图。
具体实施例方式下面结合说明书附图,对本发明的具体实施方式
做详细描述。如图1所示,本发明实施例建立的基于超图的网构软件体系结构在线演化方法,通过以下过程完成:(I)构建网构软件体系结构:将构件自下而上分为基础层构件、业务层构件和应用层构件,构件信息保存在构件库中。用户的应用软件处于动态域中,由配置文件和所需的构件组成,配置文件中记录了所需构件的连接关系、响应时间等要求。业务层和应用层的构件根据其所属的领域分别存放于不同的静态域中,通过链接静态域中的构件到用户的动态域中,再加上用户相关的配置,形成用户的应用软件。(2)使用有向超图表示网构软件的体系结构:通过读取构件库中存有的构件信息和用户应用软件的配置信息,建立体系结构的超图表示。顶点代表用户应用、构件、基础设施,超边代表连接件,一条超边建立了多个顶点之间的依赖关系。(3)当有新用户加入所述网构软件系统时,首先填写本人和申请构造应用软件的相关信息,如本人的姓名、公司、应用名称、所属领域等;系统将静态域中与此用户应用领域业务相关的构件推荐给用户进行选择;用户选择业务构件,链接到自己的动态域中,并配置界面、构件之间的流程、约束等信息。然后,系统进行步骤一和步骤二操作,用户就可以使用该应用软件了。根据配置信息,生成此用户应用的超图,加入到整个体系结构中。(4)对基于超图的网构软件体系结构进行监控,当感知到用户需求或外部环境变化时,利用超图的性质,解决构件的增删、替换、迁移等演化问题:a.构件的增加:分为增加构件和增加构件的新版本。当有新构件加入时,根据构件信息,在超图相应的层中添加顶点,如果该构件有依赖的其他构件,则需要建立超边。构件的不同版本在超图中表现为顶点的对象。当已有构件的新版本加入构件库时,首先找到此顶点,如果新版本是对原有构件错误的修正,则转为构件的替换问题,如果新版本增加了功能,则为此构件实例化一个新的对象,并向使用该构件旧版本的用户发送消息,询问是否替换掉旧版本。b.构件的删除:分为删除构件和删除构件的某一版本。删除构件的某一版本时,首先需要确定动态域或者该构件所在层及以上层中的构件是否依赖于该版本,如果存在依赖,则不能删除,如果不存在依赖,根据该构件的版本信息,删除超图中相应顶点的对象。删除构件时,首先删除该顶点的所有对象,即执行步骤删除构件的版本,然后,删除此顶点及其与下层顶点建立的超边。c.构件的替换:为了保证系统的正常运行,在替换前,通过超图获得与此构件互相依赖的其他构件,验证构件之间的接口、参数是否匹配,验证成功后才能进行替换操作。d.构件的迁移:当构件运行环境CPU、内存使用率高,或者构件的响应时间、可靠性QoS指标不能满足用户的要求时,需要将构件迁移到CPU、内存等外部环境较佳的基础设施上。如图2所示,本发明将用户的应用软件、各个层次的构件作为超图中的顶点,连接件作为超边建立用户应用与业务构件、上层构件与下层构件、本层构件之间的依赖关系。每个构件可能有不同的版本,基于超图的数据结构,将构件的某一版本表示为此构件的一个对象。为了显示构件部署的情况以方便演化中的替换、迁移等操作,将基础设施作为体系结构中的最底层,通过超边连接基础设施与基础设施上部署的所有构件。为了降低算法计算复杂度,本发明将超图转换为二部图,如图3所示。增加了一类超边顶点集合,通过此顶点代替超边建立原始顶点之间的联系。这样,始终只有一条边从头顶点流出指向边顶点,只需要两步回溯就可以找到依赖于它的顶点。体系结构管理员可以实时查看网构软件体系结构形成的三类超图:所有构件形成的超图、静态域中每个领域形成的超图、动态域中每个用户的超图。如图4所示,用户“软件所”的应用超图表示中,显示用户使用了“招标管理”这个应用层构件,它是由“招标信息发布”和“招投标信息查询”两个业务构件组成的,而业务构件又依赖于下层的查询、添加、更新、数据库访问服务这些基础构件。图中内容为E的框表示超边结点,通过它建立顶点之间的关联。当感知到外部环境或用户需求改变,需要演化某一构件或体系结构时,都需要根据建立的体系结构超图,获得构件间的依赖关系,进行相应的演化操作,并在演化完成后实时更新体系结构。本发明未详细阐述部分属于本领域技术人员的公知技术。以上所述,仅为本发明中的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可理解想到的变换或替换,都应涵盖在本发明的包含范围之内,因此,本发明的保护范围应该以权利要求书的保护范围为准。
权利要求
1.一种基于超图的网构软件体系结构在线演化方法,其特征在于实现步骤如下: 第一步,构建网构软件体系结构; 将构件自下而上分为基础层构件、业务层构件和应用层构件;所述基础层构件是指不涉及业务或领域知识的一类通用的基础构件;所述业务层构件一般是借助基础构件,又带有领域业务信息的一类构件;应用层构件是指根据用户需求,通过组合业务构件而形成的大粒度构件; 所述构件存在于不同领域的静态域中,构件名称、编号、构件功能信息保存在构件库中,用户的应用软件处于动态域中,它由配置文件和所需的构件组成,配置文件中记录了所需构件的连接关系、响应时间等要求;业务层和应用层的构件根据其所属的领域分别存放于不同的静态域中,通过链接静态域中的构件到用户的动态域中,再加上用户相关的配置,形成用户的应用软件;这样,所有用户共享使用构件,只要加上用户的配置信息,就可以形成用户的应用系统,不需要为用户开发系统,当用户需求改变时,只需要修改配置信息或者对构件进行演化即可满足,实现软件体系结构的可扩展性; 第二步,使用有向超图表示网构软件的体系结构,形成基于超图的网构软件体系结构; 通过读取构件库中存有的构件信息和用户应用软件的配置信息,建立体系结构的超图表示;为了显示构件部署的情况,将基础设施作为网构软件的体系结构最底层,通过超边连接基础设施与基础设施上部署的所有构件;在网构软件体系结构采用超图表示中,顶点代表用户应用、构件、服务器,超边代表连接件,一条超边建立了多个顶点之间的依赖关系,共有三类超图,即: (1)所有构件形成的超图,表达了基础层、业务层、应用层之间及各层次内部构件的依赖关系; (2)静态域中每个领域形成的超图,表达了领域业务构件之间的逻辑关系; (3 )动态域中每个用户的超图,体现了用户应用使用构件的情况; 第三步,当有新用户加入所述网构软件系统时,首先填写本人和申请构造应用软件的相关信息,将静态域中与此用户应用领域业务相关的构件推荐给用户进行选择;用户选择业务构件,链接到自己的动态域中,并配置界面、构件之间的流程、约束信息;然后,进行步骤一和步骤二操作,用户就能够使用该应用软件了 ; 第四步,在网构软件的体系结构采用超图表示的基础上,利用超图的性质,解决构件的增删、替换和迁移演化问题。
2.根据权利要求1所述基于超图的网构软件体系结构在线演化方法,其特征在于:所述构件的增加:分为增加构件和增加构件的新版本,具体实现为: a.当有新构件加入时,根据构件所属的层次,在超图对应的层中添加顶点,如果该构件有依赖的除此构件之外的构件,则需要建立超边; b.构件的不同版本在超图中表现为顶点的对象,当已有构件的新版本加入构件库时,首先找到此顶点,如果新版本是对原有构件错误的修正,则转为构件的替换问题,如果新版本增加了功能,则为此构件实例化一个新的对象,并向使用该构件旧版本的用户发送消息,询问是否替换掉旧版本。
3.根据权利要求1所述基于超图的网构软件体系结构在线演化方法,其特征在于:所述构件的删除:分为删除构件和删除构件的某一版本,具体实现为: a.删除构件的某一版本时,首先需要确定动态域或者该构件所在层及以上层中的构件是否依赖于该版本,如果存在依赖,则不能删除,如果不存在依赖,根据该构件的版本信息,删除超图中相应顶点的对象; b.删除构件时,首先删除该顶点的所有对象,执行步骤a,然后,删除此顶点及其与下层顶点建立的超边。
4.根据权利要求1所述基于超图的网构软件体系结构在线演化方法,其特征在于:所述构件的替换:当构件内部出现错误时,需要启用新构件对问题构件进行替换;为了保证系统的正常运行,在替换前,通过超图获得与此构件互相依赖的其他构件,验证构件之间的接口、参数是否匹配,验证成功后才能进行替换操作。
5.根据权利要求1所述基于超图的网构软件体系结构在线演化方法,其特征在于:所述构件的迁移为:当构件运行环境CPU、内存使用率或者构件的响应时间、可靠性QoS指标不能满足用户的要求时,需要将构件迁移到CPU、内存外部环境的基础设施上,具体实现为: a.在超图中找到代表此构件的顶点,查找是否存在与此构件所实现的功能、接口一致的对象,如果有则判断该对象是否满足用户的需求; b.在超图中获得直接依赖于问题构件的所有超边,即修改连接件的配置,让连接件指向此对象即可;否则,需要将该构件迁移到一个满足用户QoS要求的基础设施上,并修改直接依赖于该构件的连接件信息,指向此构件所处的新地址。
6.根据权利要求1所述基于超图的网构软件体系结构在线演化方法,其特征在于:步骤四所述演化完成后网构软件系统都会在线实时更新对应的超图。
7.根据权利 要求1所述基于超图的网构软件体系结构在线演化方法,其特征在于:所述步骤二中,为了降低算法计算复杂度,将超图转换为二部图,即:增加了一类超边顶点集合,通过此顶点代替超边建立原始顶点之间的联系,这样始终只有一条边从头顶点流出指向边顶点,只需要两步回溯就能够找到依赖于它的顶点。
全文摘要
本发明一种基于超图的网构软件体系结构在线演化方法,主要是为了解决大规模复杂软件系统中统一、协调的演化问题,属于软件技术领域。该方法包括将构件分为基础构件层、业务构件层、应用构件层;构件存在于不同领域的静态域中,用户应用处于动态域中;使用有向超图表示网构软件的体系结构;在体系结构超图表示的基础上,利用超图的性质,解决构件或连接件的增删、替换、迁移等演化问题。本发明可以实现软件体系结构的可扩展性,保证大规模复杂软件系统的自适应演化。
文档编号G06F9/44GK103164225SQ20131007871
公开日2013年6月19日 申请日期2013年3月12日 优先权日2013年3月12日
发明者王瑞, 彭启民, 胡晓惠 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1