构件化软件系统的运行状态结构化显示方法

文档序号:6418300阅读:178来源:国知局
专利名称:构件化软件系统的运行状态结构化显示方法
技术领域
本发明涉及软件技术领域中的一种构件化软件系统的运行状态结构化显示方法,尤其是一种通过可视化工具在线访问软件体系结构来直观、真实地反映系统运行状态的方法。
背景技术
软件维护是指在软件产品已经交付使用之后,对软件进行修改的过程,从而改正软件中的错误,提高软件的性能,或是保证软件系统能持续地与用户环境相适应。软件的一些本质特性,如软件需求的变化性和不断增加的复杂性等,决定了在软件生命周期中,软件维护是不可避免的重要阶段。特别是在Internet成为主流软件运行环境之后,网络的开放性和动态性使得客户需求与硬件资源不断地变化,其结果是不可预测的软件维护不断增多。据统计,软件维护的成本占到整个软件成本的50%-80%,并且该成本还在不断增大。软件维护高成本的主要原因之一在于维护人员难以理解被维护的软件。因此,如何提供一种直观、易于理解的手段描述或表示软件系统,成为简化软件维护、降低维护成本的关键。进一步地,软件开始被看作一种服务(Software As Service),这意味着软件系统24(小时)×7(天)的不间断运行成为重要需求,因此,软件系统的描述或表示还应该准确、真实地反映系统运行状态。软件体系结构是对软件总体结构的描述,即对其计算元素和它们之间交互的高层组织的描述。其主要目标就是帮助开发人员更好地理解软件系统,显然,软件体系结构是一种描述被维护系统的有效手段。但目前的软件体系结构主要作用于软件开发阶段。而在维护阶段,主要利用程序理解技术来分析源代码然后构造软件体系结构。这种软件体系结构无法捕捉系统的运行状态和行为。对于构件化软件系统而言,构件往往在市场上购得,无法获取源代码,因此,现有的利用软件体系结构描述被维护系统的方法能力不足,适用性较差。

发明内容
本发明所要解决的技术问题在于,针对现有技术的不足,提出一种构件化软件系统的运行状态结构化显示方法,在软件系统运行时将软件体系结构可视化,直观、真实地反映系统的结构及当前的运行状态,辅助维护人员理解系统,利用软件的维护,降低成本。
该发明的核心思想就是将开发阶段构造的软件体系结构在运行阶段予以实例化,通过构件运行支撑平台建立与构件化软件系统的映射,从而真实、直观地反映系统的结构及当前的运行状态。
本发明通过以下的技术方案实现一种构件化软件系统的运行状态结构化显示方法,其特征在于,包括如下步骤步骤一、构件运行支撑平台装载构件化软件系统,获取并实例化构件化软件系统的软件体系结构;步骤二、建立软件体系结构与运行系统之间的映射关系;步骤三、实时访问与显示软件体系结构。
所述步骤一中构件运行支撑平台装载构件化软件系统的过程为将应用以软件包的形式部署到构件运行支撑平台,然后实例化构件,为构件分配互操作资源,建立构件与系统服务之间的关联。
所述步骤一中获取并实例化构件化软件系统运行状态的软件体系结构的过程为根据当前系统中的构件实例及其之间的关系对现有的软件体系结构描述语言元素进行扩展,增加构件运行实例Component元素、连接子运行实例Connector元素和系统服务Constraint元素,其中,所述的Constraint元素用于表示作用于体系结构、构件以及连接子的一组约束,Component元素包括其类型ComponentType元素与实现体ComponentImplementation元素,Connector元素包括客户端代理ClientSideProxy元素、服务端代理ServerSideProxy元素以及与上述代理之间建立的连接Connection元素,然后实例化上述所述的元素。
构件化软件系统的构件往往运行在构件运行支撑平台提供的容器中。该平台同时还提供构件之间互操作机制以及其它公共服务,如安全、事务、命名、持久、日志等等。容器利用这些机制将各个构件连接起来并保障作用于构件的各种系统约束。因此,构件化软件系统运行状态的软件体系结构表示的关键在于与容器建立紧密关联。步骤二中建立软件体系结构与运行系统之间的映射关系的过程为步骤21、扫描应用中的所有构件实例,同时记录每个构件的依赖关系,创建相应构件实例的Component描述对象;所述的Component描述对象用于实时收集运行构件的容器的运行状态;步骤22、获取每个构件实例的接口信息,创建ComponentType描述对象;获取每个构件实例的实现体信息,创建ComponentImplementation描述对象;获取每个构件实例使用的系统服务信息,创建Constraint描述对象;所述的ComponentType描述对象、ComponentImplementation描述对象用于实时收集构件的运行状态;所述的Constraint描述对象用于实时收集每个构件实例使用的系统服务信息;步骤23、根据所有构件之间的依赖关系创建Connector描述对象,判断构件之间是否存在一到多个的依赖关系,如果存在,创建一个Connector描述对象以及相应的C1ientSideProxy描述对象和ServersideProxy,并根据作为客户端的构件采用的互操作机制创建Connection描述对象;所述的Connector描述对象、ClientSideProxy和ServerSideProxy描述对象、Connection描述对象用于实时收集互操作机制的运行状态。
所述的在线访问和显示通过可视化工具完成,可视化工具通过应用编程接口在线访问软件体系结构,实时显示运行系统的软件体系结构。
本发明所述的方法可以实时地显示运行系统的软件体系结构,通过软件体系结构表示处于运行状态的构件化软件系统,为维护人员提供了一个直观、易于理解的系统视图,基于该视图,不仅能够获取被维护系统设计时的信息,准确把握设计人员的意图,还能利用现有的软件体系结构相关技术完成系统的推理和验证,从而降低软件维护的复杂度和难度,节省软件维护的成本。


图1为本发明的流程图;图2为本发明一实施例的实现流程图;图3为本发明建立的构件化软件系统运行状态的软件体系结构的描述语言示意图。
具体实施例方式
以下通过具体的实施例和附图对本发明的技术方案进行详细的说明。
该发明的核心思想就是将开发阶段构造的软件体系结构在运行阶段予以实例化,通过构件运行支撑平台建立与构件化软件系统的映射,从而真实、直观地反映系统的结构及当前的运行状态。
参见图1,首先,构件运行支撑平台装载构件化软件系统,获取并实例化构件化软件系统运行状态的软件体系结构;然后,建立软件体系结构与运行系统之间的映射关系,实时访问与显示软件体系结构。
以下参照图2以基于J2EE应用服务器的实现为例,进行详细的说明。
应用服务器是目前典型的构件运行支撑平台,被认为是继操作系统、数据库管理系统之后,随着计算机网络环境的发展而出现的里程碑式的系统软件。J2EE应用以软件包的形式部署到应用服务器,设计阶段的软件体系结构可随软件包一起发布,供应用服务器在实例化运行系统的软件体系结构时使用。在应用服务器内部,部署的应用和系统服务都是构件,由应用服务器统一创建与维护。
当一个应用部署到应用服务器时,应用服务器根据软件包中的部署描述符装载并实例化构件,为构件分配所需的互操作资源,然后建立构件与系统服务之间的关联以满足指定的约束。在完成这些应用服务器部署应用的标准步骤后,获取应用的软件体系结构并实例化。
如果无法直接从应用服务器中获取软件体系结构,则根据当前系统中的构件实例及其之间的关系得到软件体系结构描述语言(ArchitectureDescription Language,简称ADL)元素,所述的软件体系结构描述语言元素如图3所示,包括构件类型ComponentType元素、连接子类型ConnectorType元素,配置信息Configuration元素,同配置信息Configuration元素相关的构件实例componentInstance元素,连接子实例ConnectorInstance元素,并在上述元素的基础上扩展以下的元素构件运行实例Component元素、连接子运行实例Connector元素和系统服务Constraint元素,其中,所述的Constraint元素用于表示作用于体系结构、构件以及连接子的一组约束,Component元素包括其类型ComponentType元素与实现体ComponentImplementation元素,Connector元素包括客户端代理ClientSideProxy元素、服务端代理ServerSideProxy元素以及与上述代理之间建立的连接Connection元素。
其中,所述的构件类型ComponentType元素、连接子类型ConnectorType元素,配置信息Configuration元素,同配置信息Configuration元素相关的构件实例componentInstance元素,连接子实例ConnectorInstance元素为设计阶段的软件结构体系的描述语言元素,构件运行实例Component元素、连接子运行实例Connector元素和用于表示作用于体系结构、构件以及连接子的一组约束——系统服务Constraint元素及实现体ComponentImplementation元素,客户端代理ClientSideproxy元素、服务端代理ServerSideProxy元素以及与这些代理之间建立的连接Connection元素为特定于运行系统软件结构的描述语言元素。
某些特定于运行系统软件结构的描述语言元素与设计阶段的软件结构体系的描述语言元素具有继承关系,如Component元素继承自ComponentInstance、Connector元素继承自ConnectorInstance、RuntimeSoftwareArchitecture继承自Configuration,因为前者需要对后者进行更详细的描述,而没有继承关系的扩展元素,如Constraint、ComponentImplementation、ClientSideProxy、ServerSideProxy、Connection,则是描述那些系统运行阶段特有的状态,以确保真实、准确反映系统的运行状态。本质上,运行系统的软件体系结构是对设计阶段软件体系结构的精化。
而后建立软件体系结构与运行系统之间的映射关系,通过可视化工具进行在线访问与显示。
需要说明的是,如果设计阶段的软件体系结构随同应用软件包一起部署到构件运行支撑平台,则可直接利用设计阶段的软件体系结构实例化上述的各个元素;如果无法获取设计阶段的软件体系结构,则根据当前系统中的构件实例及其之间的关系在线重建软件体系结构并实例化上述的各个元素。其中,前者简单快捷,后者相对复杂耗时,主要适用于设计阶段软件体系结构无法获得的情况。
软件体系结构实例化之后,进行软件体系结构与运行系统之间的映射。首先,扫描应用中的所有构件实例,并创建相应的Component描述对象,对于每个构件实例,获取其接口信息以创建ComponentType描述对象,获取其实现体信息以创建ComponentImplementation描述对象,获取其使用的系统服务的信息以创建Constraint描述对象,此时,还要记录每个构件依赖的其它构件;接下来,根据所有构件之间的依赖关系创建Connector描述对象,若两个构件之间存在一到多个依赖,则创建一个Connector描述对象以及相应的ClientSideProxy和ServerSideProxy描述对象,并根据作为客户端的构件采用的互操作机制创建Connection描述对象。至此,完整建立了软件体系结构与运行系统之间的映射。最后,将该软件体系结构与软件包中保留的设计阶段的软件体系结构进行一致性检查,并将后者记录的语义信息转存到前者的相应元素中。如果利用设计阶段的软件体系结构直接实例化运行系统的软件体系结构,则只需将前者描述的各个元素实例化成对象,然后查找到相应的运行实体并建立关联即可。
完成运行系统软件体系结构的映射后,即可通过编程接口和图形界面在线察看系统的运行状态,并进行软件维护。其中的图形界面与开发阶段使用的软件体系结构建模工具类似,往往采用简单的方框和连线等图元表示。
由于现有的软件系统在运行时,人们无法看到用于描述软件总体结构的软件体系结构,而是通过分析构件的源代码后构造软件体系结构,而且,这种软件体系结构表示的是一种静态的软件结构,无法动态的表现出系统运行的状态和行为,本发明通过扩展软件体系结构的描述语言,在系统运行时构造特定于运行系统的软件体系结构,该软件体系结构实例化后通过可视化工具以视图的方式显示,不但直观、真实地反映系统的结构,还可以反映系统当前的运行状态,便于辅助维护人员理解系统,利于软件的维护,降低成本。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种构件化软件系统的运行状态结构化显示方法,其特征在于,包括如下步骤步骤一、构件运行支撑平台装载构件化软件系统,获取并实例化构件化软件系统的软件体系结构;步骤二、建立软件体系结构与运行系统之间的映射关系;步骤三、实时访问与显示软件体系结构。
2.根据权利要求1所述的构件化软件系统的运行状态结构化显示方法,其特征在于,所述步骤一中构件运行支撑平台装载构件化软件系统的过程为将应用以软件包的形式部署到构件运行支撑平台,然后实例化构件,为构件分配互操作资源,建立构件与系统服务之间的关联。
3.根据权利要求1所述的构件化软件系统的运行状态结构化显示方法,其特征在于,所述步骤一中获取并实例化构件化软件系统的软件体系结构的过程为根据当前系统中的构件实例及其之间的关系对现有的软件体系结构描述语言元素进行扩展,增加构件运行实例(Component)元素、连接子运行实例(Connector)元素和系统服务(Constraint)元素,其中,所述的系统服务(Constraint)元素用于表示作用于体系结构、构件以及连接子的一组约束,构件运行实例(Component)元素包括构件运行实例类型(ComponentType)元素与实现体(ComponentImplementation)元素,连接子运行实例(Connector)元素包括客户端代理(ClientSideProxy)元素、服务端代理(ServerSideProxy)元素以及与上述代理之间建立的连接(Connection)元素,然后实例化上述所述的元素。
4.根据权利要求1所述的构件化软件系统的运行状态结构化显示方法,其特征在于步骤二中建立软件体系结构与运行系统之间的映射关系的过程为步骤21、扫描应用中的所有构件实例,同时记录每个构件的依赖关系,创建相应构件实例的构件运行实例(Component)描述对象;所述的构件运行实例(Component)描述对象用于实时收集运行构件的容器的运行状态;步骤22、获取每个构件实例的接口信息,创建构件运行实例类型(ComponentType)描述对象;获取每个构件实例的实现体信息,创建实现体(ComponentImplementation)描述对象;获取每个构件实例使用的系统服务信息,创建系统服务(Constraint)描述对象;所述的构件运行实例类型(ComponentType)描述对象、实现体(ComponentImplementation)描述对象用于实时收集构件的运行状态;所述的系统服务(Constraint)描述对象用于实时收集每个构件实例使用的系统服务信息;步骤23、根据所有构件之间的依赖关系创建连接子运行实例(Connector)描述对象,判断构件之间是否存在一到多个的依赖关系,如果存在,创建一个接子运行实例(Connector)描述对象以及相应的客户端代理(ClientSideProxy)描述对象和服务端代理(ServerSideProxy)描述对象,并根据作为客户端的构件采用的互操作机制创建连接(Connection)描述对象;所述的连接子运行实例(Connector)描述对象、客户端代理(ClientSideProxy)和服务端代理(ServerSideProxy)描述对象、连接(Connection)描述对象用于实时收集互操作机制的运行状态。
5.根据权利要求1所述的构件化软件系统的运行状态结构化显示方法,其特征在于,所述的实时访问和显示通过可视化工具完成,可视化工具通过应用编程接口在线访问软件体系结构,实时显示运行系统的软件体系结构。
全文摘要
本发明公开了一种构件化软件系统的运行状态结构化显示方法,首先,构件运行支撑平台装载构件化软件系统,获取并实例化构件化软件系统的软件体系结构;建立软件体系结构与运行系统之间的映射关系;实时访问与显示软件体系结构。本发明通过软件体系结构表示处于运行状态的构件化软件系统,为维护人员提供了一个直观的、易于理解的系统视图,基于该视图,不仅能够获取被维护系统设计时的信息,准确把握设计人员的意图,还能利用现有的软件体系结构相关技术完成系统的推理和验证,从而降低软件维护的复杂度和难度,节省软件维护的成本。
文档编号G06F9/44GK1588309SQ20041006241
公开日2005年3月2日 申请日期2004年7月2日 优先权日2004年7月2日
发明者梅宏, 黄罡, 曹东刚, 刘天成 申请人:北京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1