CN102662661B - 一种面向嵌入式软件的软件分析集成方法 - Google Patents

一种面向嵌入式软件的软件分析集成方法 Download PDF

Info

Publication number
CN102662661B
CN102662661B CN201210081950.2A CN201210081950A CN102662661B CN 102662661 B CN102662661 B CN 102662661B CN 201210081950 A CN201210081950 A CN 201210081950A CN 102662661 B CN102662661 B CN 102662661B
Authority
CN
China
Prior art keywords
software
software analysis
analysis method
eclipse
goods
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
Application number
CN201210081950.2A
Other languages
English (en)
Other versions
CN102662661A (zh
Inventor
陈湘萍
林格
林谋广
罗笑南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Star Intelligent Technology Co Ltd
Guangzhou Xingya Gaoxin Plastic Technology Co Ltd
Lu Yang
Yuan Bo
Original Assignee
Sun Yat Sen University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sun Yat Sen University filed Critical Sun Yat Sen University
Priority to CN201210081950.2A priority Critical patent/CN102662661B/zh
Publication of CN102662661A publication Critical patent/CN102662661A/zh
Application granted granted Critical
Publication of CN102662661B publication Critical patent/CN102662661B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种面向嵌入式软件的软件分析集成方法。该方法包括软件分析方法集成模块、分析方法执行模块与软件分析方法分析结果追踪模块。该方法是采用基于Eclipse的分析方法集成机制,并在集成的过程中采用基于Eclipse的软件制品输入适配方法。通过本发明使得分析方法以插件的方式添加,软件分析方法不但能被用户直接使用,而且能够通过工具间的相互调用,实现功能组合,减少人工参与,提高软件分析效率,满足综合的软件分析需求。

Description

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

Claims (4)

1.一种面向嵌入式软件的软件分析集成方法,其特征在于,该方法通过软件分析方法集成模块、软件分析方法执行模块与软件分析方法结果追踪模块实现;采用基于Eclipse的软件分析方法集成机制,并在集成的过程中采用基于Eclipse的软件制品输入适配方法,具体的流程为:
Step1:根据软件分析方法的独一无二标识,在Eclipse平台提供的插件注册库中得到Eclipse平台对于该软件分析方法的描述,这些描述包括软件分析方法的安装地址,软件分析方法的名字,软件分析方法在Eclipse平台上的扩展点;如果该软件分析方法不存在,则返回;
Step2:根据所得到的软件分析方法扩展点的描述得到软件分析方法的扩展点集合;
Step3:利用Eclipse平台提供的ISelection,获得实际的输入制品,并根据实际的输入制品与软件分析方法所要求的制品之间的差异,调用相应的适配方法,并最终转换成软件分析方法所要求的制品的集合,提供给软件分析方法;
Step4:根据Step2得到的软件分析方法的扩展点集合,得到其中对于org.eclipse.ui.popupMenus扩展点的扩展,软件分析方法通过扩展该扩展点在Eclipse中右击相应的制品并启动软件分析方法;
Step5:对于Step4中得到的结果,获得其中的配置点的集合,每个扩展org.eclipse.ui.popupMenus的元素存在多个配置项,这些配置项声明了该扩展点的输入类型,根据该输入类型对实际的输入制品进行输入适配;
Step6:从上一步的配置点中得到相应的软件分析方法的函数集合,函数集合是指标签是由class声明的集合,由于一个软件分析方法可能有若干个不同类型的启动函数,将其列出来由分析工具集成人员来选择正确的软件分析方法启动函数;
Step7:由分析工具集成人员选出正确的启动函数后,分析工具将这些启动函数保存成为一个启动函数列表,在执行的时候供软件分析方法使用人员进行调用;
Step8:在软件分析方法真正执行时利用回调方式启动分析工具,并从Step3中得到与该软件分析方法相匹配的输入制品,软件分析方法对输入制品进行分析,得到相应的分析结果;
其中,基于Eclipse的输入适配方法的流程为:对于JAVA模型,输入制品特定于一个JAVA项目,需要从JAVA模型的根节点出发进行层层解析,得到不同的制品集合,提供给软件分析方法使用,具体的解析步骤如下所示:
Step11:由Java模型解析成为每个包路径的根节点,得到这些根节点的集合;
Step12:将上述得到的包路径根节点进一步向下转换得到包的集合;
Step13:将上述得到的包的集合再进一步转换成为编译单元的集合。
2.如权利要求1所述的方法,其特征在于,在Eclipse中分别用org.eclipse.core.resources与org.eclipse.jdt.core两种自然结构来描述相类似的制品,对于输入的IJavaProject,转换为IProject,并进一步得到其它制品的集合,这种情况下的适配方法如下:
Step21:把IJavaProject转换得到IProject;
Step22:由得到IProject得到其下的IFolder的集合;
Step23:由所得到的IFolder得到其中的IFile的集合。
3.如权利要求1所述的方法,其特征在于,Eclipse把制品类型定义成为抽象语法树上相对应的节点,根据这些节点的位置获得与该节点相对应的软件制品,从而获得实际的输入制品的集合,其具体的解析过程为:
a、把java源文件中的java源代码保存成为字符数组;
b、通过抽象语法树的解析程序解析步骤a所得到的字符数组,把字符数组解析成所对应的抽象语法树,这棵抽象语法树上的每个节点代表java语言中特定制品;
c、抽象语法树根据节点是否需要决定是否要把与该节点相关的其他信息通过捆绑的方式加载进来;
d、如果用户修改了抽象语法树上的节点,通过直接修改抽象语法树或者通过重构抽象语法树来实现;
e、如果抽象语法树有修改,则需要把修改的地方重新写回抽象语法树。
4.如权利要求1所述的方法,其特征在于,Eclipse平台对于不同软件制品已经有比较明确的分层与定义,这些分层与定义的方式也是严格按照JAVA面向对象思想来实现的,Eclipse平台下不同的软件制品在UML模型中也能找到其相对应的表示方法,不同的软件制品与UML模型元素之间是一一对应的关系,把分析结果附着到表示该软件制品的模型元素包括以下过程:
把分析工具集成人员指定分析的软件制品通过逆向工程转换到该软件制品相对应的UML模型元素;
将UML模型元素与该模型元素所代表的实际的软件制品二者建立映射关系;
把分析结果的保存路径与软件分析方法的输入制品二者建立匹配关系,建立输入适配后软件分析方法的输入制品与分析结果保存文件之间的匹配关系,保存于resultMap.xml文件中。
CN201210081950.2A 2012-03-23 2012-03-23 一种面向嵌入式软件的软件分析集成方法 Expired - Fee Related CN102662661B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210081950.2A CN102662661B (zh) 2012-03-23 2012-03-23 一种面向嵌入式软件的软件分析集成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210081950.2A CN102662661B (zh) 2012-03-23 2012-03-23 一种面向嵌入式软件的软件分析集成方法

Publications (2)

Publication Number Publication Date
CN102662661A CN102662661A (zh) 2012-09-12
CN102662661B true CN102662661B (zh) 2015-09-09

Family

ID=46772162

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210081950.2A Expired - Fee Related CN102662661B (zh) 2012-03-23 2012-03-23 一种面向嵌入式软件的软件分析集成方法

Country Status (1)

Country Link
CN (1) CN102662661B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104657162A (zh) * 2013-11-21 2015-05-27 腾讯科技(深圳)有限公司 一种服务环境修改方法和装置
CN105786553B (zh) * 2014-12-26 2019-05-17 远光软件股份有限公司 一种资源管理方法及装置
CN106528180A (zh) * 2016-12-12 2017-03-22 墨宝股份有限公司 一种面向云计算软件研发过程中的软件集成方法及系统
CN108228467B (zh) * 2018-01-30 2021-07-13 北京航天长征飞行器研究所 一种嵌入式飞控软件算法快速验证方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1900907A (zh) * 2005-07-19 2007-01-24 阿尔卡特公司 适配演进的计算机软件产品

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8504997B2 (en) * 2009-03-19 2013-08-06 Fujitsu Limited Environment data refinement based on static analysis and symbolic execution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1900907A (zh) * 2005-07-19 2007-01-24 阿尔卡特公司 适配演进的计算机软件产品

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
V. Cortellessa等.A framework for the integration of functional and non-functional analysis of software architectures.《Electronic Notes in Theoretical Computer Science》.2005,第116卷第1-12页. *

Also Published As

Publication number Publication date
CN102662661A (zh) 2012-09-12

Similar Documents

Publication Publication Date Title
US8417798B2 (en) Deploying artifacts for packaged software application in cloud computing environment
CN108388445B (zh) 一种基于“平台+应用”模式的持续集成方法
US20020091990A1 (en) System for software application development and modeling
US7546326B2 (en) System and method for generation of an information handling system MOF file from CIM metadata
Papajorgji et al. An architecture for developing service-oriented and component-based environmental models
US20070192339A1 (en) Extensible user interface framework for a componentized application environment
Hilliard et al. On the composition and reuse of viewpoints across architecture frameworks
CN102662661B (zh) 一种面向嵌入式软件的软件分析集成方法
Drath AutomationML: the industrial cookbook
US20130254757A1 (en) Nesting installations of software products
Tröls et al. Multifaceted consistency checking of collaborative engineering artifacts
US9244706B2 (en) Command line shell command generation based on schema
US20100037201A1 (en) Separation Of Concerns Between Information Technology Services Models
Grambow et al. Semantic workflow adaption in support of workflow diversity
Wenger et al. Transformation of IEC 61131-3 to IEC 61499 based on a model driven development approach
Graham et al. McRunjob: A high energy physics workflow planner for Grid production processing
Anagnostopoulos et al. REFiLL: A lightweight programmable middleware platform for cost effective RFID application development
Guth et al. Towards pattern-based rewrite and refinement of application architectures
Mustafiz et al. Model-driven process enactment for NFV systems with MAPLE
Asadi et al. Developing families of method-oriented architecture
US20150046905A1 (en) Subprocess definition and visualization in bpel
Pradhan et al. Towards a product line of heterogeneous distributed applications
Wipp Workflows on Android: A framework supporting business process execution and rule-based analysis
Wolfenstetter et al. Supporting the cross-disciplinary development of product-service systems through model transformations
Essadi et al. Towards A Language Interface Design to Coordinate Between Heterogeneous DSMLs

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Chen Xiangping

Inventor after: Lin Ge

Inventor after: Lin Mouguang

Inventor after: Luo Xiaonan

Inventor before: Chen Jiaxi

Inventor before: Luo Xiaonan

Inventor before: Meng Siming

Inventor before: Luo Yuze

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: CHEN JIAXI LUO XIAONAN MENG SIMING LUO YUZE TO: CHEN XIANGPING LIN GE LIN MOUGUANG LUO XIAONAN

C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20161214

Address after: 510925 Guangdong city of Guangzhou province Conghua River Po Street from camphor Road No. 1088

Patentee after: GUANGZHOU XINGYA GAOXIN PLASTIC TECHNOLOGY CO., LTD.

Patentee after: Guangdong star Intelligent Technology Co., Ltd.

Patentee after: Yuan Bo

Patentee after: Lu Yang

Address before: 510006 teaching experiment center, east campus, Zhongshan University, Panyu District, Guangdong, C401, China

Patentee before: Zhongshan Univ.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150909

Termination date: 20190323