使用信息检索进行源代码流分析制造技术

技术编号:10641500 阅读:145 留言:0更新日期:2014-11-12 16:11
根据示例,源代码流分析可以包括:接收用于应用的源代码;以及从源代码中识别出用于应用的虚拟流文档。该虚拟流文档可以表示用于应用的方法调用的有序序列。源代码流分析还可以包括:提取虚拟流文档的特征;通过估计用于所提取的特征的相似性来确定虚拟流文档之间的相似性以确定流-流相似性;以及基于流-流相似性对虚拟流文档进行聚类。流-流相似性还可以用于例如生成用于源代码的最高优先权虚拟流文档和方法。源代码流分析还可以包括:确定流-维护活动描述(MAD)相似性,例如以基于流-MAD相似性从虚拟流文档中识别出相关虚拟流文档以生成有序相关虚拟流文档。

【技术实现步骤摘要】
使用信息检索进行源代码流分析相关申请的交叉引用本申请要求2013年5月8日提交的、印度专利申请号2053/CHE/2013的权益,通过引用将该申请完全并入于此。
技术介绍
在从事用于应用的软件维护活动时,用户可以识别该应用源代码的一部分并且研究源代码例如以修改源代码从而增加新的特征或者识别软件缺陷的原因。例如,用户可以尝试通过在该应用的类方面了解应用的结构来理解该应用。类可以表示如下数据类型:该数据类型包括具有相同的属性和行为的一组对象,并且该数据类型与其他这样的数据类型一起布置成层级。然而,取决于用户的知识,对应用的理解可能基于限于该应用类的分析而具有挑战性。附图说明通过附图中所示的示例来图示本公开内容的特征。在以下附图中,相似的附图标记表示相似的元素,其中:图1图示了根据本公开内容的示例的源代码流分析系统的架构;图2图示了根据本公开内容的示例的源代码流分析系统的聚类模块;图3图示了根据本公开内容的示例的源代码流分析系统的流优先化模块;图4图示了根据本公开内容的示例的方法交互图;图5A图示了根据本公开内容的示例的图4的方法交互图的类和功能;图5B图示了根据本公开内容的示例的假设的源代码列表;图6图示了根据本公开内容的示例的if条件;图7图示了根据本公开内容的示例的流-流矩阵;图8图示了根据本公开内容的示例的维护活动细节(MAD)-流矩阵;图9图示了根据本公开内容的示例的用于源代码流分析的方法;图10图示了根据本公开内容的示例的用于源代码流分析的方法的进一步的细节;以及图11图示了根据本公开内容的示例的计算机系统。具体实施方式为了简化和说明目的,主要通过引用示例来描述本公开内容。在以下描述中,提出了大量具体细节以提供对本公开内容的透彻理解。然而,容易理解的是,可以在没有对这些具体细节的限制的情况下来实现本公开内容。在其他情况下,没有详细描述一些方法和结构以免不必要地使本公开内容混淆。贯穿本公开内容,术语“一”和“一个”意在表示特定元素中的至少一个。如本文所使用的,术语“包括(includes)”意味着包括但不限于,术语“包含(including)”意味着包括但不限于。术语“基于”意味着至少部分基于。在从事软件维护活动时,识别调用的流或序列可以有助于识别缺陷的潜在的原因。类似地,对于应用的总体理解,流可以提供该应用正在工作的上下文。关于应用,流可以表示作为用户与应用的交互的结果而执行的方法调用的序列。流识别可以是动态的(即,在运行时,使用仪器)或静态的(即,使用源代码分析)。根据一种示例,本文公开了一种源代码流分析系统和一种用于源代码流分析的方法。本文所公开的系统和方法总体上可以提供对流(即,方法调用的序列)的识别和排序(即,优先化)。开发者可以将所识别的流用于检查应用以修复缺陷或者执行维护活动。本文所公开的系统和方法还可以提供对例如用于执行维护活动的其他相关人为因素比如方法和类/文件的识别。这些类/文件也可以按照重要性的顺序进行优先化。本文所公开的系统和方法还可以使用源代码中的流的分组(即,聚类)来识别应用中的连续的源代码单元,例如以有助于程序理解和维护活动。此外,本文所公开的系统和方法还提供了对源代码中的最重要的流的识别例如以在执行源代码转换活动时进行优先化和关注。对于本文所公开的系统和方法,可以将源代码库中可用的信息的多维度视图用于对流进行确定、聚类和优先化例如用于进行应用理解和/或用于执行维护活动。例如,可以在与源代码元素及其中间依赖性有关的特征的全面的并集方面对源代码元素进行特征化。可以将语言上的特征用于捕获源代码设计者的暗示的假设和意图。此外,可以将编程特征用于捕获在标识名和条件状态中嵌入的概念。对于本文所描述的系统和方法,可以针对所提取的特征的每个类型和质量来定义相似性测量。本文所公开的系统和方法可以在有或者没有与源代码执行的运行信息有关的输入的情况下使用源代码的静态曲线。基于流的聚类可以提供源代码的运行时间观点。本文所公开的系统和方法所执行的分析可以限于源代码的静态信息的利用。根据一种示例,源代码流分析系统可以包括存储如下机器可读指令的存储器:这些机器可读指令用于接收用于应用的源代码并且从源代码中识别出用于该应用的虚拟流文档。该虚拟流文档可以表示用于该应用的方法调用的有序序列。源代码流分析系统还可以包括存储如下机器可读指令的存储器,这些机器可读指令用于提取该虚拟流文档的特征,通过估计用于所提取的特征的相似性来确定该虚拟流文档之间的相似性以确定流-流相似性,以及基于该流-流相似性对虚拟流文档进行聚类以有助于识别与该应用有关的缺陷的原因。该源代码流分析系统还可以包括用于实现这些机器可读指令的处理器。根据另一示例,源代码流分析系统可以包括存储如下机器可读指令的存储器,这些机器可读指令用于接收用于应用的源代码,接收用于要对该应用执行的维护活动的维护活动描述(MAD),以及从源代码中识别出用于该应用的虚拟流文档。源代码流分析系统还可以包括存储如下机器可读指令的存储器,这些机器可读指令用于提取虚拟流文档的特征,通过估计用于所提取的特征和MAD的相似性来确定虚拟流文档和MAD之间的相似性以确定流-MAD相似性,以及基于流-MAD相似性来从虚拟流文档中识别出相关虚拟流文档以生成有序相关虚拟流文档以有助于对该应用执行维护活动。本文所公开的系统和方法提供了一种用于例如用于应用的源代码分析的技术问题的技术解决方案。在很多情况下,在应用的类方面的对应用的结构的人工分析及其所涉及的变化可能导致对应用的有限的理解。本文所公开的系统和方法提供了从用于应用的源代码中客观地识别用于应用的虚拟流文档的技术解决方案。虚拟流文档可以表示用于该应用的方法调用的有序序列。本文所公开的系统和方法提供了以下技术解决方案:提取虚拟流文档的特征;通过估计用于所提取的特征的相似性来确定虚拟流文档之间的相似性以确定流-流相似性;基于流-流相似性对虚拟流文档进行聚类;以及使用流-流相似性来生成用于应用的源代码的最高优先权虚拟流文档和方法。此外,本文所公开的系统和方法提供了以下技术解决方案:通过估计所提取的特征和MAD之间的相似性来确定虚拟流文档和MAD之间的相似性以确定流-MAD相似性;以及基于流-MAD相似性从虚拟流文档中识别相关虚拟流文档以生成有序相关虚拟流文档。图1图示了根据本公开内容的示例的源代码流分析系统100的架构。参考图1,系统100被描绘为包括输入/输出模块101,该输入/输出模块101可以包括用户接口102。该输入/输出模块101可以接收要经由用于应用的类库105来分析的应用104的面向对象(OO)的源代码103和对应的字节码。在要对应用104执行维护活动时,可以将用户接口102用于从用户107(例如,维护工程师)接收使用自然语言的对所提议的维护活动的描述(即,维护活动描述(MAD))。虚拟流文档识别模块108可以识别用于应用104的虚拟流文档109。该虚拟流文档可以定义为静态地识别的方法调用的有序序列。该虚拟流文档识别模块108可以使用源代码103生成方法交互(即,调用流或控制流)图110。特征提取模块111可以提取虚拟流文档109的特征。该特征提取模块111可以提取例如文本特征、流中的点(即,虚拟流文档109)本文档来自技高网...
使用信息检索进行源代码流分析

【技术保护点】
一种源代码流分析系统,包括:存储器,所述存储器存储机器可读指令,所述机器可读指令用于:接收用于应用的源代码;从所述源代码中识别出用于所述应用的虚拟流文档,其中所述虚拟流文档表示用于所述应用的方法调用的有序序列;提取所述虚拟流文档的特征;通过估计用于所提取的特征的相似性来确定所述虚拟流文档之间的相似性以确定流‑流相似性;并且基于所述流‑流相似性对所述虚拟流文档进行聚类以有助于识别与所述应用有关的缺陷的原因;以及处理器,所述处理器用于实现所述机器可读指令。

【技术特征摘要】
2013.05.08 IN 2053/CHE/20131.一种源代码流分析系统,包括:存储器,所述存储器存储机器可读指令,所述机器可读指令用于:接收用于应用的源代码;从所述源代码中识别出用于所述应用的虚拟流文档,其中所述虚拟流文档表示用于所述应用的方法调用的有序序列;提取所述虚拟流文档的特征;通过估计用于所提取的特征的相似性来确定所述虚拟流文档之间的相似性以确定流-流相似性;并且基于所述流-流相似性对所述虚拟流文档进行聚类以有助于识别与所述应用有关的缺陷的原因;以及处理器,所述处理器用于实现所述机器可读指令。2.根据权利要求1所述的源代码流分析系统,其中为了从所述源代码中识别出用于所述应用的所述虚拟流文档,所述机器可读指令还用于:使用所述源代码生成方法交互图,其中所述方法交互图包括表示所述源代码中的方法的节点和表示所述源代码中的所述方法调用的边。3.根据权利要求2所述的源代码流分析系统,其中为了使用所述源代码生成方法交互图,所述机器可读指令还用于:通过if/switch条件来注释所述边。4.根据权利要求1所述的源代码流分析系统,其中为了提取所述虚拟流文档的所述特征,所述机器可读指令还用于:提取所述虚拟流文档中的文本特征、点和控制。5.根据权利要求4所述的源代码流分析系统,其中为了提取所述虚拟流文档的所述特征,所述机器可读指令还用于:从所述虚拟流文档中的方法定义中提取所述文本特征,并且将所提取的文本特征布置为同现矢量;从用于所述虚拟流文档中的方法名称的概念词中提取所述点;以及从所述虚拟流文档中的边的注释文本中的概念词中提取所述控制。6.根据权利要求1所述的源代码流分析系统,其中为了提取所述虚拟流文档的所述特征,所述机器可读指令还用于:提取用于所述虚拟流文档的流方向矢量,其中用于所述虚拟流文档的所述流方向矢量表示对所述虚拟流文档中的方法的全局枚举。7.根据权利要求1所述的源代码流分析系统,其中为了提取所述虚拟流文档的所述特征,所述机器可读指令还用于:提取用于所述虚拟流文档的方法出现矢量,其中用于所述虚拟流文档的所述方法出现矢量表示所述虚拟流文档中的方法。8.根据权利要求1所述的源代码流分析系统,其中为了通过估计用于所提取的特征的相似性来确定所述虚拟流文档之间的相似性以确定所述流-流相似性,所述机器可读指令还用于:通过确定所述虚拟流文档的词同现矢量的余弦相似性来确定文本相似性;通过确定交叉点的数目除以所述虚拟流文档的并集的长度来确定交叉相似性;通过确定所述虚拟流文档中的点之间的集合相似性来确定点相似性;以及通过确定所述虚拟流文档中的控制之间的集合相似性来确定控制相似性。9.根据权利要求1所述的源代码流分析系统,其中为了通过估计用于所提取的特征的相似性来确定所述虚拟流文档之间的相似性以确定所述流-流相似性,所述机器可读指令还用于:通过确定所述虚拟流文档的对应的流方向矢量之间的余弦相似性来确定流方向矢量相似性;以及通过确定所述虚拟流文档的对应的方法出现矢量之间的余弦相似性来确定方法出现矢量相似性。10.根据权利要求1所述的源代码流分析系统,还包括用于确定每对所述虚拟流文档之间的组合相似性的机器可读指令。11.根据权利要求1所述的源代码流分析系统,其中为了基于所述流-流相似性对所述虚拟流文档进行聚类,所述机器可读指令还用于:通过使用包括预定组合相似性评分的方法交互图的边执行连接部件处理来生成初始聚类;使用模块...

【专利技术属性】
技术研发人员:A·科姆V·S·考尔古德S·森格普塔
申请(专利权)人:埃森哲环球服务有限公司
类型:发明
国别省市:爱尔兰;IE

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1