专利名称:一种面向嵌入式软件的软件分析集成方法
技术领域:
本发明涉及嵌入式技术领域,尤其涉及一种面向嵌入式软件的软件分析集成方法。
背景技术:
目前已经有很多软件分析方法的集成框架,这些集成框架所针对的分析方法有的是基于模型的分析方法,有的是基于源代码的分析方法;有的分析框架所集成的是动态的分析方法,有的集成的是静态的分析方法;有的是基于web的分析方法集成框架,有的则非基于web的分析方法集成框架。比较典型的工作有以下几项基于模型转换的软件分析方法集成框架DUALLY[Malavolta 09]是意大利拉奎拉大学(Universit'a dell’Aquila, Italy)提出的一个提供软件体系结构语言和工具进行交互的自动框架。DUALLY框架的方法总览如图I所示。DUALLY的基于模型转换技术,为不同ADL之间的转换提供了简单且可复用的描述方式,并且为自动转换提供了工具支持。除此之外,DUALLY有着良好的扩展性。由于框架中集成的ADL与AO之间的星形关系,新加入到DUALLY框架的ADL能够获得与框架中所有已集成的ADL之间进行互操作的能力。运行时刻的分析方法集成框架KAMI (Keep Alive Models with Implementations) [Epifani 09]是意大利米兰理工大学(Politecnico di Milano, Italy)提出的一个运行时刻系统分析框架。KAMI为分析方法的集成提供了一个基于插件的框架,如图2所示。模型插件(Model plugin)支持KAMI通过解析模型文件来获得不同的模型。在此基础上,模型插件还负责基于需求对模型进行分析。当需求不能满足时,则调用在系统模型中定义好的异常处理。输入插件(input plugin)负责在模型与运行系统之间建立联系。运行系统通过监控获得数据,并将数据反馈给模型。输入插件的目标是处理运行时刻系统提供的使用不同输入格式和协议的数据。运行系统模型不停地被更新,模型插件以模型为输入,进行持续的分析,以验证需求是否得到满足。当出现需求违背的情况,KAMI抛出异常,记录事件,并调用相关的异常处理程序。异常处理程序是用户提供的Java代码。使用这种方法,模型插件可以将异常的约束作为警告或者根据异常对系统进行重配置,从而支持自适应过程。基于web的分析方法集成框架 SOFAS是一个基于web的轻量级软件分析方法集成框架,该框架基于目前软件分析方法无论从种类还是从数量上都变得越来越多,但分析方法与分析方法之间很少存在协同作用的现实情况,提出了一种轻量级的框架一 S0FAS,一个分布式的软件分析工具集成平台,该平台使得分析方法之间能够无缝协同作用。软件分析方法作为一种web Service的形式被组装进该平台。此外,软件分析人员能够根据自身需要选择、组装、调用已被集成于平台中的分析方法,分析能够独立地执行,分析人员从中提取分析结果。这样,软件开发人员,软件测试人员以及QA就能够对该软件系统的质量属性有一个充分的了解。不同的分析方法集成框架所针对集成的分析方法各不相同,一方面,分析方法由于设计与实现的独立性其分析目的各不相同,有些分析方法针对的是运行时的软件系统,而有些分析方法针对的是代码,而代码又可以分为源代码与目标代码两种,有些分析方法分析的是源代码,有些分析方法分析的是目标代码。因此由于分析方法设计与实现的独立性,分析方法集成框架的设计与实现也各不相同。因此分析方法集成框架中有些分析方法所针对的是运行时的软件系统,所集成的运行时候软件分析工具,而且的分析方法所针对的软件系统软件架构方法的属性,所以所针对分析的是软件架构方面的属性。不同的分析方法集成框架的要求各不相同,由于目前基于Eclipse存在很多开源并且可用的分析方法,这种分析方法以插件的形式体现。本发明为了克服现有技术的缺陷,提供了一种基于Eclipse的分析方法集成工具。
发明内容
本发明的目的是为了克服现有技术的缺陷,提供一种面向嵌入式软件的软件分析集成方法,通过本发明使得分析方法以插件的形式体现,软件分析方法不但能被用户直接使用,而且能够通过工具间的相互调用,实现功能组合,减少人工参与,提高软件分析效率。一种面向嵌入式软件的软件分析集成方法,该方法包括软件分析方法集成模块、分析方法执行模块与分析方法结果追踪模块;采用基于Eclipse的分析方法集成机制,并在集成的过程中采用基于Eclipse的输入适配方法,具体的流程为Stepl :根据分析方法独一无二标识,在Eclipse平台提供的插件注册库中得到平台对于该分析方法的描述(IPluginDescripter),这些描述包括分析方法的安装地址,分析方法的名字,分析方法在平台上的扩展点等;如果该分析方法不存在,则返回;Step2 :根据所得到的分析方法扩展点的描述(IPluginDescripter)得到分析方法的扩展点集合;Step3 :利用Eclipse平台提供的ISelection,获得实际的输入制品,并根据实际的输入制品与分析方法所要求的制品之间的差异,调用相应的适配方法,并最终转换成分析方法所要求的制品的集合,提供给分析方法;Step4 :根据Step2得到的分析方法的扩展点的集合,得到其中对于org. eclipse,ui. popupMenus扩展点的扩展,因为分析方法只有通过扩展该扩展点才能在Eclipse中右击相应的制品并启动分析方法;Step5 对于St印4中得到的结果,获得其中的配置点的集合(IConfigurationElement []),因为对于每个扩展 org. eclipse, ui. popupMenus 的兀素来说,可以存在多个配置项,这些配置项声明了该扩展点的输入类型,可以根据该输入类型对软件制品进行输入适配; Step6 :从上一步的配置点中得到相应的分析方法的函数集合,函数集合是指标签是由class声明的集合,由于一个分析方法可能有若干个不同类型的启动函数,因此本工具需要将其列出来由分析工具集成人员来选择正确的分析方法启动函数;Step7 :由集成人员选出正确的启动函数后,本集成工具会将这些启动函数保存成为一个启动函数列表,在真正执行的时候供分析方法使用人员进行调用;StepS :在分析方法真正执行时利用回调方式启动该分析工具,并从Step3中得到与该分析方法相匹配的输入制品,分析方法对该制品进行分析,得到相应的分析结果。基于Eclipse的输入适配方法的流程为对于JAVA模型,输入制品特定于一个JAVA项目,需要从JAVA模型的根节点出发进行层层解析,得到不同的制品集合,提供给分析方法使用,具体的解析步骤如下所示Stepll :由Java模型解析成为每个包路径的根节点,得到这些根节点的集合;Stepl2 :将上述得到的包路径根节点进一步向下转换得到包的集合;Stepl3 :将上述得到的包的集合再进一步转换成为编译单元的集合;而由于在 Eclipse 中是分别在 org. eclipse, core, resources 与 org. eclipse,jdt. core两种自然结构来描述相类似的制品的,因此对于输入的IJavaProject,转换为IProject,并进一步得到其它制品的集合,这种情况下的适配方法如下Step21 :把 IJavaProject 转换得到 IProject ;Step22 :由得到IProject得到其下的IFolder的集合;Step23 :由所得到的IFolder得到其中的IFile的集合。Eclipse把制品类型定义成为抽象语法树上相对应的节点,根据这些节点的位置获得与该节点相对应的软件制品,从而获得该制品的集合,其具体的解析过程为a、把java源文件中的java源代码保存成为字符数组;b、通过抽象语法树的解析程序解析第I步所得到的字符数组,把字符数组解析成所对应的抽象语法树,而这棵抽象语法树上的每个节点代表java语言中特定制品;C、抽象语法树根据节点是否需要决定是否要把与该节点相关的其他信息通过捆绑(binding)的方式加载进来;d、如果用户修改了语法树上的节点,可以通过直接修改语法树或者通过重构语法树来实现;e、如果语法树有修改,则需要把修改的地方重新写回语法树。Eclipse平台对于不同软件制品已经有比较明确的分层与定义,这些分层与定义的方式也是严格按照JAVA面向对象思想来实现的,所以Eclipse平台下不同的软件制品在UML模型中也能找到其所相对应的表示方法,不同的软件制品与UML模型元素之间是一一对应的关系,把分析结果附着到表示该制品的模型元素需要以下过程Stepl :把分析人员指定分析的软件制品通过逆向工程转换到该制品相对应的UML模型元素;Step2 :将UML模型元素与该模型元素所代表的实际的软件制品二者建立映射关系;Step3 :把分析结果的保存路径与分析方法的输入制品二者的建立匹配关系,建立输入适配后分析方法的输入制品与分析结果保存文件之间的匹配关系,保存于resultMap.xml文件中。本发明技术方案带来的有益效果通过本发明使得分析方法以插件的方式添加,软件分析方法不但能被用户直接使用,而且能够通过工具间的相互调用,实现功能组合,减少人工参与,提高软件分析效率,满足综合的软件分析需求。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图I是现有技术中DUALLY框架的结构图;图2是现有技术中KAMI框架的结构图;图3是本发明面向嵌入式软件的软件分析集成方法结构图;图4是本发明中Eclipse对于软件制品的定义框架;图5是本发明中基于Eclipse的软件制品输入适配方法的流程图;图6是本发明中Eclipse对于java文件的解析过程图;图7是本发明中基于Eclipse的插件的分析集成方法启动方式图;图8是本发明面向嵌入式软件的软件分析集成方法的流程图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。软件分析方法集成工具是一种集成化、可扩展、协同化的软件分析环境,它将软件分析过程中涉及的人、工具、制品等要素,按照一定的软件分析顺序,有序组织起来,并使其相互协作。软件分析方法集成能够提供成套的软件分析方法的支撑,其内在驱动是软件生产过程,目的是生产软件制品。分析方法集成工具不仅是分析方法集成人员、工具、制品的静态集合,更是一种动态的、能够反映软件分析方法学特征的软件环境。这种动态特性通过软件分析工具集成的过程模型表达。过程模型是对软件分析方法集成的过程抽象,基于过程模型表达机制,将分析方法集成刻画为由一系列制品加工步骤组成的加工工序。软件分析中的开发者、工具、制品通过加工步骤实现关联,集成在一套集成的软件分析工具中。基于上述针对软件分析方法集成的研究现状的分析,本发明提供一种面向嵌入式软件的软件分析集成方法框架,框架主要包含三大部份软件分析方法集成模块、分析方法执行模块与分析方法结果追踪模块,该集成框架的结构图如图3所示。软件分析方法是软件分析方法集成工具中用以辅助完成软件分析活动的各类分析方法。在集成的软件分析方法中,软件分析方法不但能被用户直接使用,而且能够通过工具间的相互调用,实现功能组合,减少人工参与,提高软件分析效率。软件分析方法由于设计与实现的独立性,不同的分析方法对于输入制品有不同的要求。而对于整个集成工具的输入制品又是统一确定的,在本发明中特定为一个软件系统,因此在分析方法输入的过程中需要对分析方法进行输入适配,把实际输入的软件制品转换为符合分析方法要求的软件制品。本发明特定于Eclipse平台设计与实现,因此所做的输入适配工具也基于Eclipse对于制品的定义。分析方法对于输入制品的要求受限制于分析方法所基于平台对于软件制品结构的定义方式。特定平台下的分析方法的输入制品为平台所定义的某个软件制品。在本发明中,集成工具基于Eclipse设计与实现,集成的分析方法包含两种运行方式Eclipse插件方式与Java命令行方式。需要说明的是,这两种运行方式并不是互斥存在的。
由于分析方法基于Eclipse平台设计与实现,因此分析方法的输入制品也是Eclipse平台上某个特定的软件制品。分析方法的输入制品分为以下几类表I :制品分类列表
IJavaProject代表一个完整的Java软件项目,是一个项目结构的根节
点,它包含IPackageFragmentRoot作为它的子节点。
IPackageFragmentRoot 代表若千个包(IPackageFragment)的根节点。在具体表现
形式上可能是一个目录或者是一个库文件(zip文件/jar文 件)。
IPackageFragment代表一个独立的包,包中所包含的文件可能是源代码文
件或者是字节码文件。注意包与包之间的组织方式并不是以 父亲-孩子的组织方式,包与包之间的关系是相对独立的。
ICompilationUnit代表源代码文件(.java文件)。
IClassFile代表字节码文件(.class文件)。
IType代表文件中的某个类。上述制品类型在Eclipse中组织成为树状结构,由于上一级制品可以得到下一级制品结构的一个集合,例如由IPackageFragmentRoot可以得到位于IPackageFragmentRoot下所有IPackageFragment的集合。基于Eclipse的分析方法的输入对应于上述制品结构中的某项制品或者是该项制品的集合。由上表可以看到,每个java项目包括若干个根包片段,每个根包片段又包含若干个包片段,在每个包中又包含了若干各种类型的制品,这些制品可以是java源文件,也可以是一些其他类型的文件,而JDT对他们的定义则如图4所示由图4可以知道每种制品都是属于一种特定的java元素,它们都继承于java元素,因此在他们之间可以通过适配实现彼此的转换。基于Eclipse的分析方法集成机制
由于分析方法自身所基于实现的平台各不相同,因此不同的平台有不同的集成方法,因此本发明所实现的分析方法集成工具是基于Eclipse平台实现的,基于Eclipse的分析方法的集成方法,主要有两种集成方式(I)由分析方法集成人员向集成工具提供jar包,由分析方法集成工具自动对该分析方法的jar包进行解析,得出分析方法的唯一标识id、分析方法的输入要求等等分析方法的属性;(2)由分析方法集成人员向集成工具提供分析方法的上述各种属性信息,然后由集成工具把分析方法集成到集成具中;这两种方式的同一个前提条件是分析方法已经在Eclipse平台下正确安装。下面详细阐述两种集成方法Jar包集成方法为了对集成人员提供友好的分析方法集成方式以及满足工具可扩展的需求,因此本工具提供了对于Eclipse插件jar包的集成方式。由于一个分析插件的jar包中可能包含有若干个分析方法,因此不仅需要提取jar包中的内容,获得其中对于分析方法扩展点的描述,而且根据这些描述还需要列出可能的分析方法以及这些方法对于输入制品的要求,以供集成人员选出正确的分析方法,当集成人员选出分析方法后,工具将选中后的分析方法以及分析方法的输入要求等一些信息保存在一个独立的XML文件中。表单集成方法分析方法除了有第一种集成方式之外,集成工具还为无法提供插件jar包的分析方法提供表单集成的方法,在此表单中集成人员只需要提供插件在Eclipse平台上的唯一标识、插件的名称以及插件的地址,集成工具会通过这些信息在Eclipse平台上找到该插件,并从中读出该插件中的所有方法以及方法对于输入制品的要求。同理,集成工具将列出这些方法供集成人员选出可能的分析方法,并把选出的分析方法存储在一个独立的XML文档中。对于上述JAVA模型,输入制品特定于一个JAVA项目,因此需要从JAVA模型的根节点出发进行层层解析,得到不同的制品集合,提供给分析方法使用。具体的解析步骤如下所示Stepl :由Java模型解析成为每个包路径的根节点,得到这些根节点的集合;Step2 :将上述得到的包路径根节点进一步向下转换得到包的集合;Step3 :将上述得到的包的集合再进一步转换成为编译单元的集合;而由于在 Eclipse 中是分别在 org. eclipse, core, resources 与 org. eclipse,jdt. core两种自然结构来描述相类似的制品的,所以我们的适配方法也有所不同,因此对于输入的IJavaProject,可以转换为IProject,并进一步得到其它制品的集合。这种情况下的适配方法如下Stepl :把 IJavaProject 转换得到 IProject ;Step2 :由得到IProject得到其下的IFolder的集合;Step3 :由所得到的IFolder得到其中的IFile的集合;
基于Eclipse的输入适配方法的流程如图5所示。对于有些分析方法所分析的是编译单元或者文件类的制品,这些分析方法的目的在于得到这些制品中所定义的变量、方法或者类等元素,而在Eclipse中,Eclipse把这些制品类型定义成为抽象语法树上相对应的节点,根据这些节点的位置我们可以获得与该节点相对应的软件制品,从而获得该制品的集合。其具体的解析过程如图6所示a、把java源文件中的java源代码保存成为字符数组;b、通过抽象语法树的解析程序解析第I步所得到的字符数组,把字符数组解析成所对应的抽象语法树,而这棵抽象语法树上的每个节点代表java语言中特定制品;C、抽象语法树根据节点是否需要决定是否要把与该节点相关的其他信息通过捆 绑(binding)的方式加载进来;d、如果用户修改了语法树上的节点,可以通过直接修改语法树或者通过重构语法树来实现;e、如果语法树有修改,则需要把修改的地方重新写回语法树;以Eclipse插件方式运行分析工具的目的在于把分析结果通过用户界面展现给分析人员,使分析人员理解明白被分析对象的软件质量属性。为了使得分析方法的启动具有通用性,需要研究Eclipse对于插件的启动方式,并以同样的方式加载分析方法并运行。由于分析方法在Eclipse中以popupMenu的方式提供给外界调用,popupMenu会把所分析的对象包装成为ISelection结构,因此集成工具需要把适配完成的输入制品封装成ISelection结构作为Eclipse插件的输入。分析方法以插件的形式加载于Eclipse的微内核之上,启动方法以一种扩展点的形式添加到该平台上,该微内核主要具有以下四个功能(I)它提供核心插件服务,开发人员根据标准自定义插件增加原有插件的功能;(2)对于每一个扩展并不限制可以调用的启动函数的数量,一个扩展可以对应于多个启动函数,例如一个objectContribution可以对应于多个action ;(3)它要求每个插件以一种回调的方式调用自身,产生一个与action标签相对应的代理对象。因为该对象的产生与Eclipse的启动相分离,所以Eclipse启动时并不会将该action实例化,因此在Eclipse运行的过程中该对象实际上是不存在的,只有当用户要求时该对象再实例化并运行;(4)微内核为新添加的插件提供了界面支持,新添加的插件也是以扩展的方式调用微内核所提供的服务;因此根据分析方法是懒加载的方式运行,在这种方式下,代理对象是真正执行动作的实体。Eclipse定义了一个标准的接口来实例化并且初始化这个代理对象(porxyobject)。这个回调对象代表了提供服务的实体,因此,对于每个分析方法我们也设计成一种回调的对象,并通过真正调用时才实例化的方式来避免分析工具一次性实例化对内核造成不必要的压力,这样的设计也达不到分析人员对于分析工具的具体要求。基于Eclipse的插件的启动方法具体如图7所示根据上述对Eclipse平台的分析,对于集成在集成工具中的分析方法,我们的解析步骤如下,具体如图8所示。Stepl :根据分析方法独一无二标识,在Eclipse平台提供的插件注册库中得到平台对于该分析方法的描述(IPluginDescripter),这些描述包括分析方法的安装地址,分析方法的名字,分析方法在平台上的扩展点等等;如果该分析方法不存在,则返回;
Step2 :根据所得到的分析方法扩展点的描述(IPluginDescripter)得到分析方法的扩展点集合;Step3 :利用Eclipse平台提供的ISelection,获得实际的输入制品,并根据实际的输入制品与分析方法所要求的制品之间的差异,调用相应的适配方法,并最终转换成分析方法所要求的制品的集合,提供给分析方法;Step4 :根据Step2得到的分析方法的扩展点的集合,得到其中对于org. eclipse,ui. popupMenus扩展点的扩展,因为分析方法只有通过扩展该扩展点才能在Eclipse中右 击相应的制品并启动分析方法;St印5 对于St印4中得到的结果,获得其中的配置点的集合(IConfigurationElement []),因为对于每个扩展 org. eclipse, ui. popupMenus 的兀素来说,可以存在多个配置项,这些配置项声明了该扩展点的输入类型,可以根据该输入类型对软件制品进行输入适配;St印6 :从上一步的配置点中得到相应的分析方法的函数集合,函数集合是指标签是由class声明的集合,由于一个分析方法可能有若干个不同类型的启动函数,因此本工具需要将其列出来由分析工具集成人员来选择正确的分析方法启动函数;Step7 :由集成人员选出正确的启动函数后,本集成工具会将这些启动函数保存成为一个启动函数列表,在真正执行的时候供分析方法使用人员进行调用;StepS :在分析方法真正执行时利用回调方式启动该分析工具,并从Step3中得到与该分析方法相匹配的输入制品,分析方法对该制品进行分析,得到相应的分析结果;软件分析的目的是在于使分析得到的结果能够很好的显示出被分析的制品中的某种软件质量属性,从而使软件工程人员能够客观了解被分析的软件制品。对制品中存在的某方面质量属性上的不足做出适当调整。然而由于软件分析方法设计与实现的独立性,分析方法对于输入制品的平台要求、输入制品的大小以及制品的运行情况等的要求各不相同,而且软件分析方法的分析结果的保存方式也各不相同,分析方法的输入与输出之间的不能很好地保持追踪性,特别是在多个分析方法连续运行的情况下,分析方法的输入与输出间的关系的保持显得尤为重要。本文基于Eclipse平台设计与实现了一套以模型为中心的分析方法输入制品与分析结果的追踪机制。由于UML模型支持面向对象技术的主要概念,所有的UML模型中的实体都能找到面向对象技术中与其相对应的概念(例如包、类、接口、方法等等)。集成工具的输入制品根据代表原UML模型的树装结构图指定。集成工具根据树状结构指定分析方法的分析对象。Eclipse平台对于不同软件制品已经有比较明确的分层与定义,这些分层与定义的方式也是严格按照JAVA面向对象思想来实现的,所以Eclipse平台下不同的软件制品也可以在UML模型中找到其所相对应的表示方法,不同的软件制品与UML模型元素之间是
一一对应的关系。把分析结果附着到表示该制品的模型元素需要以下几个过程Stepl :把分析人员指定分析的软件制品通过逆向工程转换到该制品相对应的UML模型元素;Step2 :将UML模型元素与该模型元素所代表的实际的软件制品二者建立映射关系,具体的映射关系如表2-2所示;Step3 :把分析结果的保存路径与分析方法的输入制品二者的建立匹配关系,建立输入适配后分析方法的输入制品与分析结果保存文件之间的匹配关系,保存于resultMap.xml文件中。表2-2UML元素与Eclipse制品映射关系
权利要求
1.一种面向嵌入式软件的软件分析集成方法,其特征在于,该方法包括软件分析方法集成模块、分析方法执行模块与分析方法结果追踪模块;采用基于Eclipse的软件分析方法集成机制,并在集成的过程中采用基于Eclipse的软件制品输入适配方法,具体的流程为 Stepl :根据分析方法独一无二标识,在Eclipse平台提供的插件注册库中得到平台对于该分析方法的描述(IPluginDescripter),这些描述包括分析方法的安装地址,分析方法的名字,分析方法在平台上的扩展点等;如果该分析方法不存在,则返回; Step2 :根据所得到的分析方法扩展点的描述(IPluginDescripter)得到分析方法的扩展点集合; Step3 :利用Eclipse平台提供的ISelection,获得实际的输入制品,并根据实际的输入制品与分析方法所要求的制品之间的差异,调用相应的适配方法,并最终转换成分析方法所要求的制品的集合,提供给分析方法; Step4 :根据Step2得到的分析方法的扩展点的集合,得到其中对于org. eclipse,ui. popupMenus扩展点的扩展,因为分析方法只有通过扩展该扩展点才能在Eclipse中右击相应的制品并启动分析方法; Step5 :对于Step4中得到的结果,获得其中的配置点的集合(IConfigurationElement[]),因为对于每个扩展org. eclipse, ui. popupMenus的兀素来说,可以存在多个配置项,这些配置项声明了该扩展点的输入类型,可以根据该输入类型对实际输入的软件制品进行输入适配;Step6 :从上一步的配置点中得到相应的分析方法的函数集合,函数集合是指标签是由class声明的集合,由于一个分析方法可能有若干个不同类型的启动函数,因此本工具需要将其列出来由分析工具集成人员来选择正确的分析方法启动函数; Step7 由集成人员选出正确的启动函数后,本集成工具会将这些启动函数保存成为一个启动函数列表,在真正执行的时候供分析方法使用人员进行调用; StepS :在分析方法真正执行时利用回调方式启动该分析工具,并从Step3中得到与该分析方法相匹配的输入制品,分析方法对该制品进行分析,得到相应的分析结果。
2.如权利要求I所述的方法,其特征在于,基于Eclipse的输入适配方法的流程为对于JAVA模型,输入制品特定于一个JAVA项目,需要从JAVA模型的根节点出发进行层层解析,得到不同的制品集合,提供给分析方法使用,具体的解析步骤如下所示 Stepll :由Java模型解析成为每个包路径的根节点,得到这些根节点的集合; Stepl2 :将上述得到的包路径根节点进一步向下转换得到包的集合; Stepl3 :将上述得到的包的集合再进一步转换成为编译单元的集合; 而由于在 Eclipse 中是分别在 org. eclipse, core, resources 与 org. eclipse,jdt. core两种自然结构来描述相类似的制品的,因此对于输入的IJavaProject,转换为IProject,并进一步得到其它制品的集合,这种情况下的适配方法如下Step21 :把 IJavaProject 转换得到 IProject ; Step22 :由得至Ij IProject得到其下的IFolder的集合; St印23 :由所得到的IFolder得到其中的IFile的集合。
3.如权利要求I所述的方法,其特征在于,Eclipse把制品类型定义成为抽象语法树上相对应的节点,根据这些节点的位置获得与该节点相对应的软件制品,从而获得该制品的集合,其具体的解析过程为 a、把java源文件中的java源代码保存成为字符数组; b、通过抽象语法树的解析程序解析第I步所得到的字符数组,把字符数组解析成所对应的抽象语法树,而这棵抽象语法树上的每个节点代表java语言中特定制品; C、抽象语法树根据节点是否需要决定是否要把与该节点相关的其他信息通过捆绑(binding)的方式加载进来; d、如果用户修改了语法树上的节点,可以通过直接修改语法树或者通过重构语法树来实现; e、如果语法树有修改,则需要把修改的地方重新写回语法树。
4.如权利要求I所述的方法,其特征在于,Eclipse平台对于不同软件制品已经有比较明确的分层与定义,这些分层与定义的方式也是严格按照JAVA面向对象思想来实现的,所以Eclipse平台下不同的软件制品在UML模型中也能找到其所相对应的表示方法,不同的软件制品与UML模型元素之间是一一对应的关系,把分析结果附着到表示该制品的模型元素需要以下过程 Stepl :把分析人员指定分析的软件制品通过逆向工程转换到该制品相对应的UML模型元素; Step2 :将UML模型元素与该模型元素所代表的实际的软件制品二者建立映射关系; Step3 :把分析结果的保存路径与分析方法的输入制品二者的建立匹配关系,建立输入适配后分析方法的输入制品与分析结果保存文件之间的匹配关系,保存于resultMap. xml文件中。
全文摘要
本发明公开了一种面向嵌入式软件的软件分析集成方法。该方法包括软件分析方法集成模块、分析方法执行模块与软件分析方法分析结果追踪模块。该方法是采用基于Eclipse的分析方法集成机制,并在集成的过程中采用基于Eclipse的软件制品输入适配方法。通过本发明使得分析方法以插件的方式添加,软件分析方法不但能被用户直接使用,而且能够通过工具间的相互调用,实现功能组合,减少人工参与,提高软件分析效率,满足综合的软件分析需求。
文档编号G06F9/44GK102662661SQ201210081950
公开日2012年9月12日 申请日期2012年3月23日 优先权日2012年3月23日
发明者孟思明, 罗笑南, 罗育泽, 陈家熙 申请人:中山大学