一种软件体系结构描述语言的快速构建和支持的方法

文档序号:6615559阅读:177来源:国知局

专利名称::一种软件体系结构描述语言的快速构建和支持的方法
技术领域
:本发明涉及一种软件体系结构描述语言的快速构建和支持的方法,属于计算机科学软件工程
技术领域

背景技术
:软件体系结构描述语言ADL(ArchitectureDescriptionLanguage)是对软件体系结构模型进行描述的语言。目前绝大多数ADL是为了不同领域与不同目的而开发的。例如Wright,C2,Rapide,ConMoto,Darwin等,他们各自有专门的应用领域和使用范围。目前,现有的绝大多数软件体系结构描述语言ADL不考虑通用与扩展性以及本身的结构问题,使得开发新ADL与扩展ADL的新特征都会导致不必要的代价。相应的开发工具就必须进行改写。这样软件体系结构的使用人员就不得把大量精力放在以ADL为中心的体系结构开发工具的开发和修改工作上。这一定程度上阻碍了软件体系结构描述语言ADL在实践中的应用。
发明内容为了解决上述技术问题,本发明提供了一种软件体系结构描述语言的快速构建和支持的方法。本发明包括以下二个步骤(l)构建一个可扩展体系结构语言基础FEAL(FoundationofExtensibleArchitectureLanguage),FEAL指定了一套描述性的抽象元素定义、一组元素结构规范和一套映射机制规范,提供一个来构造新ADL的各种表义符号的下层架构基础,将软件体系结构描述语言ADL的表义符号映射到FEAL的抽象元素;(2)构建一个基于FEAL的软件体系结构的具有软件体系结构开发通用的模型显示、可视化编辑、属性显示、多视图支持、软件体系结构描述语言ADL自动生成、模型结构展示功能的用于为软件体系结构相关研究提供实验平台和展示工具的开发平台XArch系统。所有ADL都会定义其表义符号用作其描述的基本词汇表。其中的一些是独特的,而其他的从表现上看十分相似甚至是一致的。为了统一那些独特的原色,必须指出其表达基础。例如,一些ADL会提供关于版本与服务ID以便对构件的检査;一些ADL支持变量,使得可以动态获取相关值。为了达到这一个描述需求,使用属性(/^rap^^力这一抽象概念。属性是一个简单的键值对,可以附加一个形式化的表达式来声明计算规则或者约束。在FEAL中,定义了实体、类型和实例用于描述像构件这样的表义符号。本发明的有益效果是:在针对某一软件体系结构领域研究课题时,一般来讲有如下步骤的工作需要依次完成(a)首先要利用问题所处的上下文环境和技术特征进行抽象和提取,定制软件体系结构模型;(b)利用编程技术实现此模型,比如实现一组Java类来表示模型中的实体和关系;(c)定义此软件体系结构模型的描述语法;(d)编写针对此语法的编译器,使得软件系统能够识别以此语法编写的软件体系结构描述文档。编译器的工作是将文本描述转换为第(b)步实现的计算机可以识别的类型;(e)编写相关的功能模块来处理实现的模型,以便完成研究内容中的分析校验等工作;(f)为了使得模型更加容易在实践活动中的使用更加方便,需要变现可视化的编辑器。这些内容包括可支持多视图的可视化编辑工具;串行化和反串行化支持;多视图自动同步支持等。而这些工作中除了第(a)和第(e)步外,均与核心的研究内容无关。但为了进行实验却不花费大量的精力来完成这些工作。同时,由于软件体系结构描述本身的特点,这些工作的重复性很高。这样的结果导致软件体系结构研究者或者使用者无法将自己的想法快速进行应用。而通过使用本发明方法就可以将第(b)步和第(c)步简单变换成为编写一份符合FEAL规范的XMLSchema,以及编写一份映射机制文档。避免了大规模的编写代码以及由此带来的软件测试和维护的问题。同时第(d)和第(f)步工作得到的功能可以自动获得。使用者需要的仅仅从解决问题的角度入手定义相应的模型,以及实现模型特有的功能即可。这样,使用者可以更加专心的投入到自身研究或者建模分析工作中来。此外,本发明的插件式的开发模式有利于系统功能重用。例如,可以实现一种形式化语法的解析器用于不同的ADL或者体系结构模型,只要形式化语法本身一致即可。这样,不同工具就可以根据需要任意整合,易于满足软件体系结构实际应用的需要,本发明使得定义ADL的工作更加方便和快捷,极大的方便了对软件体系结构的研究和分析。有利于软件体系结构在实际工程中应用的推广。图1是本发明所述一种软件体系结构描述语言的快速构建和支持的方法的XArch系统方框图,图2是本发明所述一种软件体系结构描述语言的快速构建和支持的方法的插件式软件体系结构开发平台ADP的方框图。具体实施方式下面结合附图和具体实施方式对本发明作进一步详细的说明,本发明定义了十种FEAL抽象元素定义,也可称之为FEAL元素类别(FEALElementCategories,FEC),它们是体系结构表义符号的抽象表达,FEAL抽象元素定义如下所示视图模型ViewModel:—系列代表结构模型的元素,一个视图模型包含一系列FEAL的其他元素以及它们的配置,视图模型还可以有输入参数,WRIGHT中的配置以及ACME的术语风格适合被映射成视图模型;容器Container:容器就容纳其他FEC元素(包括容器元素)的器皿,特定FEC的容器写作Container{FEC};实体Entity:实体是一种元素,它不需要类型/实例的支持。类型Type:类型是特殊的实体,它支持重用和一致性检测,在类型上,可以定义构件类型、连接器类型、端口类型、服务类型或者任意相近的元素,类型也适合于静态设计模型,该模型的元素会被运行时模型所引用,类型的许多特征与一般实体不同,例如类型的继承,导出与导入;实例Instance:实例是某些类型元素的实例化对象,是一种特殊的实体;属性类型PropertyType:属性类型是属性的集合,用于限制实例的值,可定义如整型、双精度浮点型、日期型和字符串型等基本属性类型,或者将值标记为只读或可选;属性Property:属性是一个简单键值对,记录了简单信息,其中的值可以是变量,通过对子脚本元素运行时分析计算而来,属性可以从属性类型实例化而来,或者独立存在;连接Link:连接声明元素之恋的关系,尤其是实体、类型、实例之间的关系,一系列的连接关系构成了配置,配置声明元素如何绑定在一起;脚本Script:用来表述ADL的行为、使用约束与计算规则,通常使用进程代数、逻辑或者是自定义语法的形式来书写;备注Comment:为便于阅读与学习的描述性的备注。当开发一种新的ADL时,它的相关概念与术语必须被映射成FEC元素。在本发明中,可扩展体系结构语言基础FEAL搭建一个可扩展的体系结构建模系统。当获得一个FEAL兼容的ADL时,将该ADL的术语映射至FEC,这个步骤由FEAL映射机制完成。FEAL映射机制有一系列顺序记录的映射记录,映射记录实现两种转换,先是ADL-FEAL映射,将ADL术语映射到相应的FEC;其次是相关的建模工作,FEAL映射机制确定基于FEAL的ADP如何处理特定的ADL符号,例如用什么形状表达,用什么样的背景颜色,使用什么样的纹饰来装饰,是否能够被编辑等等。在本发明中,可扩展体系结构语言基础FEAL处理那些与FEAL兼容的ADL,这些ADL必须服从FEAL的结构。更具体的说,ADL的表义符号被安排成树形且服从一些规则,这些规则就是FEAL元素结构规范,如下正则表达式所示,<formula>formulaseeoriginaldocumentpage11</formula>上述公式中各符号含义表示如下C表示Container,FM表示ViewModel,T表示Type,I表示Instance,E表示Entity,P表示Property,PT表示PropertyType,L表示Link,S表示Script,CO表示Gommsnt。在上述公式中需要说明的是FEAL-ROOT只包含一个视图模型的容器,可选属性用于记录meta信息。为了遵守此规则,所有类型,实例与实体元素的定义都必须封装在视图模型中。一方面,为非视图模型元素设置范围来执行访问与交叉引用控制,为了实现全局类型、实例、实体定义,可定义一个带全局范围的视图模型;另一方面,视图模型中的元素能够在基于FEAL结构建模工具中被视图表示。FEAL工作步骤是FEAL接受了基于FEAL的ADL,并且利用FEAL映射机制将ADL元素映射为对应的FEC。FEAL映射机制的附加信息帮助基于FEAL的插件式软件体系结构开发平台ADP。它利用对待FEAL的方法来为ADL提供一些基本功能。于是,软件体系结构开发者可以利用FEAL来快速定义ADL,并得到相应的工具支持。那些针对于特定ADL的功能可以利用插件的形式来对开发平台进行补充,如图2所示插件部分(插件1、插件2……插件n)提供特定ADL的功能;开发平台ADP部分提供可用于符合FEAL规范的ADL的通用功能。FEAL映射机制的规范中最核心的两个元素是feal-element和adl-element。是由它们完成的从具体ADL的内从向FEC的映射,其它的映射项均是围绕这两者之间进行更具体描述的。FEAL映射机制的规范详细说明如下所示adl-element:使用XML定义的ADL中要映射的内容;feal-element:映射到FEC的具体类型;name-content:用于标定ad卜element中可以被识别为名称的域;value-content:用于标定表达当前元素中可以被识别为值的域。当feal-element为Property日寸,name-content禾口value-content—起可以表示属性的key和value;baseon-content:用以表示实例化关系,表明表示实例化类型所用的实际属性。inherit-content:用以表示继承关系,表明继承的类型所用的实际属性;source-content禾口destination-content:同时用来表示Link中的源禾口目标。visible:表示此adl-element在开发平台上是否可见;shape:表示此adl-element在开发平台上需要显示的形状;fill-color:表示此adl-element在开发平台上的填充色;line-style:表示此adl-element在开发平台上的线型;editable:表示lt匕adl—element在开发平台上是否可编辑;icon:表示此adl-element在开发平台上的工具栏中的图标是什么。XArch系统是基于FEAL的插件式软件体系结构开发平台ADP。该平台主要用于为通用软件体系结构相关研究提供实验平台和展示工具,平台本身要求的可扩展性很强,从而可以方便的在日后的研究过程中添加新的功能。XArch基于Eclipse插件开发环境进行开发,目的是利用其强大的插件机制来提高体系结构开发平台的扩展性能。XArch系统整体由5个部分组成,如图1所示,包括核心(Core)部分用于XArch和底层Eclipse平台的通讯,以及其他部分之间的相互引用。模型(Model)部分用于维护整个XArch系统的模型。数据(Data)部分用于对软件体系结构描述语言ADL的解析以及模型和语言之间的相互生成。展示层(Presentation)部分用于软件体系结构模型的显示、自动布局和可视化编辑等操作。特定功能(Features)部分用于实现针对特定软件体系结构描述语言ADL的特定功能,以插件的形式存在。XArch系统的功能如下正确解析并显示符合FEAL规范的软件体系结构模型,体系结构模型为单(多)模型系统,即一个软件体系结构的不同侧面,如静态模型,动态模型,逻辑模型等;显示模型语言的文本描述,即基于FEAL的ADL语言文本;正确察看模型元素属性,可以对显示的软件体系结构模型元素进行属性察看;对软件体系结构模型可以进行可视化编辑,即通过可视化的方法修改模型的元素,从而修改原有ADL;实现模型元素的自动布局功能;可对模型进行语义检查和校验;模型-多视图同步。在本发明实施例1中,FEAL被用于表示WRIGHT语言。FEAL映射机制将WRIGHT变化为FEC。WRIGHT语言的基本元素总结如下配置Configuration,系统模型的封装,包含其他所有的定义。构件Component,包含一系列端口与唯一计算定义,前者定义构件的接口,后者使用CSP脚本或者子配置来定义构件的实际功能。连接器Connector,与构件相似,包含一些角色声明与粘合申明来描述所有角色的内在联系。实例Instances,声明配置中使用的构件与连接器实例。连接关系Attachments,将所有的实例绑定到一起。接口类型InterfaceType,CSP定义用于描述端口或者角色的类型。绑定Bindings,用于分层系统中描述不同层级中的共同元素。约束Constraints,形式化定义用户声明内部元素的有效情况。风格Style,拥有参数的配置模板。表1WRIHGT表义符号与FEAL描述的映射关系表。<table>tableseeoriginaldocumentpage15</column></row><table>表1修改了WRIGHT语言语法使得它与FEAL兼容。一方面,如分层配置应符合FEAL结构规范来适应视图模型ViewModel的要求;另一方面,一些表义符号在不同情况下使用不同的表达,例如构件,端口角色,需要在修订WRIGHT中特别标记来说明它究竟是什么。上表修订的WRIGHT语言能够很容易的映射到FEAL表达,且并不丧失其表达能力。在本发明实施例2中,将一个软件体系结构还原插件作为应用。软件体系结构还原插件(SoftwareArchitectureRecovery,以下简称SAR)通过读取一组以C语言编写的系统源代码来还原其体系结构信息,目的是为了方便对缺失体系结构设计文档的遗留系统进行维护或改造。为了快速构建SAR,利用本发明提出的快速构建方法为SAR定义ADL、模型、语法、可视化编辑器和支持工具。首先定义SAR中的模型,在SAR中,导入的源代码被抽象成为可聚类的实体。实体与实体之间存在使用关系。SAR可以利用聚类算法计算不同实体之间的相似度。在自动合并状态下,SAR会将相似度最大的两个实体合并;也可以采用手动的方法指定两个实体进行合并,合并过程可以进行历史回退,即可以进行回滚操作。并且,编辑器本身可以根据SAR的操作进行自动更新和自动布局,可清晰演示源代码之间的关系。可视化编辑器是XArch的基本功能,凡是采用FEAL来编写的ADL均可获得其支持。而作为插件的SAR可以对模型进行直接访问和更新,达到和XAch其他部分通讯的效果。这样使用者可快速辨识源代码的静态体系结构信息。本发明不限于上述实施例,对于本领域技术人员来说,对本发明的上述实施例所做出的任何改进或变更都不会超出仅以举例的方式示出的本发明的实施例和所附权利要求的保护范围。权利要求1.一种软件体系结构描述语言的快速构建和支持的方法,其特征在于包括以下步骤(1)构建一个可扩展体系结构语言基础FEAL(FoundationofExtensibleArchitectureLanguage),FEAL指定了一套描述性的抽象元素定义、一组元素结构规范和一套映射机制规范,提供一个来构造新ADL的各种表义符号的下层架构基础,将软件体系结构描述语言ADL的表义符号映射到FEAL的抽象元素;(2)构建一个基于FEAL的软件体系结构的具有软件体系结构开发通用的模型显示、可视化编辑、属性显示、多视图支持、软件体系结构描述语言ADL自动生成、模型结构展示功能的用于为软件体系结构相关研究提供实验平台和展示工具的开发平台系统XArch。2.如权利要求1所述的一种软件体系结构描述语言的快速构建和支持的方法,其特征在于所述的FEAL抽象元素定义包括视图模型ViewModel:—系列代表结构模型的元素,一个视图模型包含一系列FEAL的其他元素以及它们的配置,视图模型还可以有输入参数,WRIGHT中的配置以及ACME的术语风格适合被映射成视图模型;容器Container:容器就容纳其他FEC元素(包括容器元素)的器皿,特定FEC的容器写作Container{FECh实体Entity:实体是一种元素,它不需要类型/实例的支持。类型Type:类型是特殊的实体,它支持重用和一致性检测,在类型上,定义构件类型、连接器类型、端口类型、服务类型或者任意相近的元素,类型也适合于静态设计模型,该模型的元素会被运行时模型所引用,类型的许多特征与一般实体不同,例如类型的继承,导出与导入;实例Instance:实例是某些类型元素的实例化对象,是一种特殊的实体;属性类型Pr叩ertyType:属性类型是属性的集合,用于限制实例的值,可定义如整型、双精度浮点型、日期型和字符串型等基本属性类型,或者将值标记为只读或可选;属性Property:属性是一个简单键值对,记录了简单信息,其中的值可以是变量,通过对子脚本元素运行时分析计算而来,属性可以从属性类型实例化而来,或者独立存在;连接Link:连接声明元素之恋的关系,尤其是实体、类型、实例之间的关系,一系列的连接关系构成了配置,配置声明元素如何绑定在一起;脚本Script:用来表述ADL的行为、使用约束与计算规则,通常使用进程代数、逻辑或者是自定义语法的形式来书写;备注Comment:为便于阅读与学习的描述性的备注。3.如权利要求l所述的一种软件体系结构描述语言的快速构建和支持的方法,其特征在于所述的XArch系统包括核心(Core)部分用于XArch和底层Eclipse平台的通讯,以及其他部分之间的相互引用;模型(Model)部分用于维护整个XArch系统的模型;数据(Data)部分用于对软件体系结构描述语言ADL的解析以及模型和语言之间的相互生成;展示层(Presentation)部分用于软件体系结构模型的显示、自动布局和可视化编辑等操作;特定功能(Features)部分用于实现针对特定软件体系结构描述语言ADL的特定功能,以插件的形式存在。4.如权利要求l所述的一种软件体系结构描述语言的快速构建和支持的方法,其特征在于所述的FEAL元素结构规范如下正则表达式所示,<formula>formulaseeoriginaldocumentpage4</formula>5.如权利要求l所述的一种软件体系结构描述语言的快速构建和支持的方法,其特征在于所述的FEAL映射机制规范包括adl-element:使用XML定义的ADL中要映射的内容;feal-element:映射到FEC的具体类型;扁e-content:用于标定adl_element中可以被识别为名称的域;value-content:用于标定表达当前元素中可以被识别为值的域,当feal-element为Property时,name-content禾口value-content—起可以表示属性的key和value;baseon-content:用以表示实例化关系,表明表示实例化类型所用的实际属性;inherit-content:用以表示继承关系,表明继承的类型所用的实际属性;source-content禾口destination-content-同时用来表示Unk中的源和目标;visible:表示所述adl-element在开发平台上是否可见;shape:表示所述adl-element在开发平台上需要显示的形状;fill-color:表示所述adl-element在开发平台上的填充色;line-style:表示所述adl-element在开发平台上的线型;editable:表示所述adl-element在开发平台上是否可编辑;icon:表示所述adl-element在开发平台上的工具栏中的图标是什么。全文摘要本发明公开了一种软件体系结构描述语言的快速构建和支持的方法,其特征在于包括(1)构建一个可扩展体系结构语言基础FEAL,FEAL指定一套描述性的抽象元素定义、一组元素结构规范和一套映射机制规范,提供构造新ADL的各种表义符号的下层架构基础,将软件体系结构描述语言ADL的表义符号映射到FEAL内部元素;(2)构建基于FEAL的软件体系结构的具有软件体系结构开发通用的模型显示、可视化编辑、属性显示、多视图支持、ADL自动生成、模型结构展示功能的插件式开发平台XArch。本发明可实现一种形式化语法的解析器用于不同的ADL或者体系结构模型,使定义ADL的工作更加方便和快捷,极大的方便了对软件体系结构的研究和分析。有利于软件体系结构在实际工程中应用的推广。文档编号G06F9/44GK101211262SQ20071030172公开日2008年7月2日申请日期2007年12月25日优先权日2007年12月25日发明者征覃,邢剑宽申请人:征覃
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1