CN103988176A - 软件分析程序和软件分析系统 - Google Patents

软件分析程序和软件分析系统 Download PDF

Info

Publication number
CN103988176A
CN103988176A CN201180075462.4A CN201180075462A CN103988176A CN 103988176 A CN103988176 A CN 103988176A CN 201180075462 A CN201180075462 A CN 201180075462A CN 103988176 A CN103988176 A CN 103988176A
Authority
CN
China
Prior art keywords
source code
similarity
data
software analysis
analysis system
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.)
Pending
Application number
CN201180075462.4A
Other languages
English (en)
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN103988176A publication Critical patent/CN103988176A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • G06F8/751Code clone detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

即使对于嵌入式系统中比较大规模、复杂化的软件,也能够容易地确定多份源代码之间的差异部分,容易地理解差异部分造成的影响范围。在嵌入到计算机系统的嵌入式系统的软件分析系统中,具有将控制嵌入式系统的源代码中的依赖关系处理为图形结构、测定一份以上的源代码的相似度的相似度测定部(132);和显示相似度的图像显示部(14)。

Description

软件分析程序和软件分析系统
技术领域
本发明涉及适于软件的开发、验证、维护支持的软件分析程序。
背景技术
在升降机、汽车、建筑机械等技术领域中使用通过所谓嵌入式软件对控制对象进行控制的嵌入式控制装置。嵌入式软件与现有的机械结构或电路的方式相比,可以列举能够实现更灵活且先进的控制、通过软件的部分变更能够开发多种衍生产品的优点。
近年来,对嵌入式控制装置要求的控制处理逐年复杂化,并且控制变量之间的依赖关系复杂化,软件的开发变得困难。另一方面,软件开发周期要求短期化。对此,为了在短期间中开发复杂且大型的软件,尽可能高效率地再利用现有软件的衍生开发是重要的。
再利用现有软件的衍生开发中,对现有产品与新产品的差异部分进行变更开发或新开发。此时,在短期间开发复杂的软件时,高效率地理解现有产品与新产品的差异部分是不可欠缺的技术。
确定软件的差异部分的技术,已知有通过进行两份源代码的对比而确定变更部位的技术,例如在专利文献1中有记载。
此外,另一方面,已知为了高效率地理解当前的源代码的结构,对现有的源代码控制流与数据依赖关系进行分析,用由节点和链接构成的图表示应用程序结构的技术,例如在专利文献2中有记载。
现有技术文献
专利文献
专利文献1:日本特开2004-326337号公报
专利文献2:WO2009/011056
发明内容
发明要解决的课题
上述现有技术中,专利文献1中记载的技术通过抽取两份源代码的差异,而提高进一步复杂化的源代码的易理解性。但是,对于大规模、进一步复杂化的源代码,存在仅用源代码的差异难以确定实质上在变量依赖关系中发生变更的变更部位,且难以确定变更部位对前后的影响范围的课题。
此外,专利文献2中记载的技术不能够逐一理解源代码的变量依赖关系,仅基于应用程序模型的复杂度提出重构候选部分,不能够理解新旧两份源代码的不同点。
本发明的目的在于解决上述现有技术的课题,在大规模、复杂化的嵌入式系统的控制软件中,能够容易地确定一份以上的源代码的差异部分,容易地确定差异部分对周围造成的影响。
用于解决课题的方案
为了解决上述课题,本发明是软件分析系统,其对输入到计算机中的多份源代码进行分析,确定源代码的变更部位,从所述多份源代码中的至少两份源代码分别抽取变量或函数的依赖关系而生成由节点和链接构成的图形结构,测定与所述两份源代码分别对应的图形结构的相似度,向所述计算机外部输出。
发明效果
根据本发明,即使嵌入式系统是大规模、复杂化的软件(计算机程序),也能够容易地确定两个软件之间的差异部分,并且能够容易地理解差异部分造成影响的范围。
附图说明
图1是表示本发明的一个实施方式的软件分析系统的显示画面的图。
图2是表示本发明的一个实施方式的整体结构的框图。
图3是表示一个实施方式中的源代码管理部的图。
图4是表示一个实施方式中的源代码数据的图。
图5是表示一个实施方式中的源代码管理部的处理的流程图。
图6是表示一个实施方式中的源代码版本数据的图。
图7是表示一个实施方式中的数据流管理部的图。
图8是表示一个实施方式中的源代码分析部的处理的流程图。
图9是表示一个实施方式中的数据流的图。
图10是表示一个实施方式中的数据流登录部的处理的流程图。
图11是表示一个实施方式中的数据流版本数据的图。
图12是表示一个实施方式中的差异分析部的图。
图13是表示一个实施方式中的比较对象选择部的处理的流程图。
图14是表示一个实施方式中的源代码差异分析部的处理的流程图。
图15是表示一个实施方式中的源代码差异的图。
图16是表示一个实施方式中的相似度测定部的处理的流程图。
图17是表示一个实施方式中的相似度的图。
图18是表示一个实施方式中的图像显示部的图。
图19是表示一个实施方式中的分析结果输出部的处理的流程图。
图20是表示一个实施方式中的分析结果输出部中的显示的图。
图21是表示一个实施方式中的分析结果输出部中的显示的图。
图22是表示一个实施方式中的源代码版本数据的图。
图23是表示一个实施方式中的源代码差异的图。
图24是表示一个实施方式中的相似度的图。
图25是表示一个实施方式中的分析结果输出部中的显示的图。
具体实施方式
本发明涉及用于实现家用设备、工业用设备、医疗用设备等需要电子控制的产品的特定功能而嵌入了计算机系统的嵌入式系统的软件组件生成辅助装置,特别适于移动电话、数字家电、以及汽车、铁路、升降机等运输设备等需要的功能多种多样的系统、组合了多种硬件、多种软件的大规模的系统的软件开发、验证、维护支持。
实施例1
以下参考附图说明本发明的一个实施方式。
图1是表示本发明的软件分析系统的输出画面的一例。用源代码作为输入,不仅确定源代码的差异部分,还将源代码中的依赖关系解释为由链接和节点构成的图形结构,测定图的相似度,由此不仅用源代码、还用图的相似度作为指标评价一份以上的源代码的差异部分,在画面上显示如图1所示的输出。
图2是表示软件分析系统1的全貌的框图。软件分析系统具备包括源代码管理部11、数据流管理部12、差异分析部13、图像显示部14的程序;和用计算机处理该程序时用于保存输入输出的数据的结构管理DB15。源代码管理部11从结构管理DB15输入源代码数据151,输出进行源代码的版本管理的源代码版本数据152。数据流管理部12用源代码数据151中保存的源代码作为输入,生成表示源代码中使用的变量的依赖关系的数据流数据153,输出数据流版本数据154。差异分析部13用源代码版本数据152和数据流版本数据154、和用户5使用操作部3通过比较对象选择部133操作选择的信息作为输入,输出源代码之间的差异信息即源代码差异数据155、和表示数据流的相似度的指标即相似度数据156。图像显示部14用源代码差异数据155和相似度数据156作为输入,在显示部4上用图像显示输入信息。其中,软件分析系统1可以在与用户5用作终端的计算机2通过网络等连接的其他计算机上实现,也可以在计算机2内实现。
图3是表示源代码管理部11的详细结构的图。源代码管理部11具备将源代码数据151中新保存的源代码登录在源代码版本数据152中的源代码登录部111,用源代码数据151中保存的源代码作为输入,在按版本关联地保存多份输入的源代码数据的数据库即源代码版本数据152中登录源代码数据151。其中,源代码数据151中保存的源代码,不仅是用C语言等高级语言描述的源代码的文件,也可以是编译后的目标文件,也可以是编译后的程序的执行日志。
图4是表示源代码数据151的详情的图。源代码文件1511由函数func_d的处理流程构成。其中,源代码文件1511中使用的变量a、b、c、d、e定义为全局变量。函数func_d中,进行根据变量a和b的值更新变量c的处理,进行根据变量c和d的值更新变量e的处理。
图5是表示源代码登录部111的详细的执行流程的图。从步骤S1110开始处理。步骤S1111中,进行源代码数据151的输入。步骤S1112中,将输入的源代码数据151按版本关联地登录在源代码版本数据152中。该关联例如能够从源代码数据151中保存的源代码的文件名等取得源代码的版本而实现。步骤S1113中结束处理。通过这样按版本关联地登录源代码,容易用后述的比较对象选择部133选择比较对象。
图6是表示源代码版本数据152的详情的图。源代码文件1521和源代码文件1522分别表示在源代码版本数据152中同时登录的版本不同的源代码文件。可见源代码文件1522与源代码文件1521相比,较多进行使用变量d的值更新变量a的处理。
图7是表示数据流管理部12的详细结构的图。数据流管理部12具备用源代码数据151中保存的源代码作为输入、分析该源代码中的变量依赖关系并生成数据流的源代码分析部121,和将数据流图登录在数据流版本数据154中的数据流登录部122,用源代码数据151中保存的源代码作为数据,根据输入的源代码文件生成将变量依赖关系图形化后的数据流,将生成的数据流登录在按版本关联地保存的数据库即数据流版本数据154中。
图8是表示源代码分析部121的详细执行流程的图。从步骤S1210开始处理。步骤S1211中进行源代码数据1511的输入。步骤S1212中,对输入的源代码进行分析,抽取源代码中的变量依赖关系。步骤S1213中,根据步骤S1212中抽取的变量依赖关系,生成数据流。步骤S1214中,将步骤S1213中生成的数据流登录在数据流的数据库即数据流数据153中。步骤S1215中结束处理。
图9是表示数据流数据153的详情的图。矩阵1531是用表形式表达源代码1511中的变量依赖关系的图。数据流1532是用图形式表达源代码文件1511中的变量依赖关系的图。本实施方式中,数据流1532用变量作为节点,用变量间的代换关系作为由箭头表示的链接,表达变量依赖关系。例如,此处对于基于变量a和变量b运算变量c,用表示变量a、b、c的节点和在这些节点之间连接的链接表达。
图10是表示数据流登录部122的详细执行流程的图。从步骤S1220开始处理。步骤S1221中,从数据流数据153开始输入数据流。步骤S1222中,将步骤S1221中输入的数据流按源代码的版本关联地登录在数据流的版本管理数据库即数据流版本数据154中。步骤S1223中结束处理。通过这样按版本关联地登录数据流,容易用后述的比较对象选择部133选择比较对象。
图11是表示数据流版本数据154的详情的图。矩阵1541是用表形式表达某个版本的源代码文件1521中的变量依赖关系的图。数据流1542是用图形式表达源代码文件1521中的变量依赖关系的图。矩阵1543是用表形式表达其他版本的源代码文件1522中的变量依赖关系的图。数据流1544是用图形式表达源代码文件1522中的变量依赖关系的图。
图12是表示差异分析部13的详细结构的图。差异分析部13具有用户5通过操作部3选择表示比较对象的源代码的版本等数据信息的比较对象选择部133、分析源代码版本之间的差异的源代码差异分析部131、测定数据流之间的相似度的相似度测定部132。差异分析部13中,用户5通过操作部3输入表示比较对象的数据信息,基于比较对象的数据信息用源代码版本数据和数据流版本作为输入,分析源代码的差异并输出源代码差异数据,同时测定数据流的相似度并输出相似度数据。
图13是表示比较对象选择部133的详细执行流程的图。从步骤S1310开始处理。步骤S1311中,用户5通过操作部3输入比较对象的信息数据。信息数据可以列举源代码的版本信息和发布信息。步骤S1312中,判断步骤S1311中是否选择了两个输入的比较对象。已选择两个比较对象的情况下(是(YES)),前进至步骤S1313,结束处理。未选择两个比较对象的情况下(否(NO)),前进至步骤S1311继续处理。这样,通过进而实现S1312的处理,能够防止用户误输入等。
图14是表示源代码差异分析部131的详细执行流程的图。从步骤S1320开始处理。步骤S1321中,从比较对象选择部133输入比较对象信息。步骤S1322中,基于用S1321输入的比较对象信息,从源代码版本数据152输入比较对象的源代码。步骤S1323中,分析用步骤S1322输入的比较对象的源代码的差异。分析方法例如能够使用UNIX(注册商标)等中作为外壳命令提供的diff命令、和MS-DOS(注册商标)中的comp命令等方法。由此能够分析用文本等描述的源代码的差异。步骤S1324中,将用步骤S1323分析的源代码差异数据登录在源代码差异的数据库即源代码差异数据155中。差异数据例如能够用源代码的行号数据等表达。步骤S1325中结束处理。
图15是表示在新版本的源代码中表示了源代码差异数据155的例子的详情的图。可知对新旧版本的源代码文件1551和源代码文件1552进行比较的结果为源代码文件1552内的更新变量a的处理是源代码文件1551与源代码文件1552的差异。
图16是表示相似度测定部132的详细执行流程的图。从步骤S1330开始处理。步骤S1331中,从比较对象选择部133输入比较对象信息。步骤S1332中,基于用步骤S1331输入的比较对象信息,从数据流版本数据154输入比较对象的数据流。步骤S1333中,测定用步骤S1332输入的比较对象的数据流的相似度。此处,相似度可以考虑相关系数、汉明距离、中心共振分析等,此处在后文中说明使用相关系数的相似度测定。步骤S1334中,将用步骤S1333测定的相似度登录在相似度信息的数据库即相似度数据156中。步骤S1335中结束处理。
图17是表示相似度数据156的详情的图。对用表形式表达源代码版本1521内的变量依赖关系的矩阵1561和用表形式表达源代码版本1522内的变量依赖关系的矩阵1562进行比较时,可知(d,e)的值有0和1的不同。对于用图形式表达相同内容的数据流1562和数据流1565进行比较时,可知从变量d到变量a的依赖关系线不同。求数据流1562与数据流1565的相似度即相关系数,可知为0.87。此处计算的相关系数在下式中用r定义。
r = Σ i = 1 n ( x i 1 - x ‾ 1 ) ( x i 2 - x ‾ 2 ) Σ i = 1 n ( x i 1 - x ‾ 1 ) 2 Σ i = 1 n ( x i 2 - x ‾ 2 ) 2
x ‾ = 1 n Σ i = 1 n x i
此处,xi指的是从用表形式表达的矩阵1562和1564的除去对角线成分后的剩余成分。即,该情况下的xi1和xi2分别能够用以下形式表现:
xi1=(0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0)
xi2=(0,1,0,0,0,1,0,0,0,0,0,1,1,0,0,1,0,0,0,0)
图18是表示图像显示部14的详细结构的图。图像显示部14具有在显示部4中显示源代码差异数据155和相似度数据156的差异数据输出部141。图像显示部14用源代码差异数据155和相似度数据156作为输入,对显示部4输出源代码的差异信息和数据流的相似度。
图19是表示差异数据输出部141的详细执行流程的图。从步骤S1410开始处理。步骤S1411中,从源代码差异数据155输入源代码差异信息。步骤S1412中,从相似度数据156输入数据流的相似度信息。步骤S1413中,对显示部4输出用步骤S1411和步骤S1412输入的源代码差异信息和相似度信息。步骤S1414中结束处理。
其中,也可以不对显示部4输出源代码差异信息和相似度信息,而是通过网络等媒介对其他计算机或其他用户提供。
图20是表示图像显示部14的图像显示结果的一例的图。该例中,表示了对包括具有源代码a、b、c、d的文件夹A-1的目录A、和包括具有源代码a'、b'、c'、d'的文件间A'-1的目录A'进行比较的结果。显示结果412中,强调显示了源代码b与b'之间和源代码d与d'之间的差异信息。此外,可知源代码b与b'的相似度是1.00,相对地源代码d与d'的相似度是0.87。因此,用户一眼便知在源代码有变更的源代码b'、b'之间和源代码d、d'之间,源代码b、b'之间不存在变量依赖关系的变更,源代码d、d'之间存在变量依赖关系的变更。
其中,本实施方式中,差异分析部13中具备源代码差异分析部131和相似度测定部132双方,但也可以省略源代码差异分析部131。但是,本实施方式中,通过具备源代码差异分析部131,能够比较源代码的差异和数据流的相似度双方,所以能够区分了解单纯的源代码的形式描述的变更、和实际在变量依赖关系中发生了变更的源代码的描述的变更。此外,通过具备源代码差异分析部131,能够确认源代码中发生变更的具体部分,能够以比文件单位更精细的单位、例如源代码的行数信息等确定变更部位。
图21是表示图像显示部14的图像显示结果的一例的图。图像中显示了源代码d、d'之间的源代码差异、数据流的不同、相似度的值0.87。
图22是表示源代码版本数据152中的源代码b和源代码b'的详情的图。如图所示,源代码d'相对于源代码d在使用了宏H这一点上不同。
图23是表示源代码差异数据155的详情的图。源代码d'中使用了宏H的位置被作为差异强调显示。
图24是表示相似度数据156的详情的图。在源代码b与源代码b'之间,因为变量依赖关系中不存在变更,所以用表形式表达源代码中的变量依赖关系的矩阵15671和矩阵15681是完全相同的值。此外,用图形式表达变量依赖关系的数据流15672和15682也是相同的结果。因此,表示相似度的相关系数15673和相关系数15683是1.00。
图25是表示图像显示部14的图像显示结果的一例的图。该图中,在422中显示了由用户5选择的分析对象421的分析结果,在423中显示了差异结果的详情。根据该图,一眼便知虽然源代码b和b'在源代码中存在差异,但表示变量依赖关系的数据流相同,相似度是1.00。
这样,根据本实施方式,不仅比较源代码的差异,也比较数据流的相似度,所以不仅能够了解单纯的源代码描述的差异,也能够了解实际上在变量依赖关系中是否存在变更。由此,能够确定实质上的源代码的变更部位,了解变更部位实质上对周围造成的影响。
实施例2
以下对于本发明的其他实施方式,以与实施例1的不同点为中心进行说明。
本实施方式中,源代码分析部121生成以函数为节点、函数之间的调用关系为链接的数据流,作为在结构管理DB中登录的数据流数据153、数据流版本数据154。该情况下,表达由某个节点表示的函数调用由其他节点表示的函数。
根据本实施方式,在函数之间的调用复杂的源代码中,也能够容易地确定源代码的版本之间的变更部位,能够容易地确定变更部位对周围造成的影响范围。
实施例3
以下对于本发明的其他实施方式,以与以上说明的实施例的不同点为中心进行说明。
本实施方式中,根据控制升降机、汽车、建筑机械等控制对象的嵌入式装置中实现的源代码,按控制周期分割生成数据流,登录在数据流数据153、数据流版本数据154中。此外,测定按控制周期分割后的图形结构之间的相似度。按控制周期分割源代码的处理,可以在源代码分析部121中执行,也可以预先对源代码数据151输入按控制周期分割后的源代码。
嵌入式控制装置、例如升降机控制装置中,采用按一定周期或因中断起动任务,基于目标楼层指定按钮或门安全传感器等传感器的输入更新控制变量,控制门开闭用电动机和轿厢驱动用电动机等致动器的,所谓数据驱动型的计算模型。此外,与多种控制周期以及中断相应地准备多种任务。然后,各任务中执行的控制处理分别形成独自的反馈环路的情况较多。从而,各任务中进行的从传感器输入、控制变量的运算和更新等引起的数据的参考关系、函数的调用关系大多在同一任务内执行的控制处理中完结。然后,仅有与某个控制周期中执行的处理相关的源代码的变更的情况下,该变更部位对周期造成的影响的范围大多在与同一控制周期中执行的处理相关的源代码内。
本实施方式中,按控制周期或中断内容分割生成数据流,用相似度测定部132进行相似度的计测。
根据本实施方式,按控制周期分割图形结构进行相似度的计测,能够预先预测并限定变更部位对周期造成的影响的范围,所以可以减少相似度计测的运算负荷,并且实现通过显示部4对用户提示的数据的简化。特别是软件规模大的情况下,简化数据对用户提示在了解变更部位的概要上是有用的。此外,能够以比源代码的文件单位更小的任务单位确定变更部位。
其中,此处的控制周期不限于10ms间隔等一定周期,例如也可以是与汽车用发动机的转速同步执行的发动机转速同步等的周期。
实施例4
以下对于本发明的其他实施方式,以与以上说明的实施例的不同点为中心进行说明。
本实施方式中,基于变量的依赖关系的大小进行决定所有节点中的重要节点的处理。源代码分析部121在生成数据流时将数据的参考关系较多的节点决定为重要节点,将除去了重要节点以外的节点和不需要的链接后的数据流登录在数据流数据153、数据流版本数据154中。
此处,说明图1的数据流图中表示的表示变量a的节点和表示变量c的节点,作为数据的参考关系的大小的一例。变量c基于变量a和b决定,进而被变量e参考,所以变量c存在三个数据的参考关系。另一方面,变量a仅被变量c参考,所以仅存在一个数据的参考关系。这样能够判断数据的参考关系的大小。
其中,重要节点的决定,可以基于从源代码整体来看数据参考关系的大小的统计处理决定,也可以基于规定的阈值决定。
根据本实施方式,对于仅用重要节点表示的数据流,用相似度测定部132进行相似度的计测,所以可以减少相似度计测的运算负荷,并且实现通过显示部4对用户提示的数据的简化。
以上说明了本发明的实施方式,但用这些实施方式表示的发明,不应分别视为单独的发明,能够适当组合实施,这样的组合对于本行业人员而言不需要反复试验。
符号说明
1 软件分析系统
2 计算机
3 操作部
4 显示部
5 用户
11  源代码管理部
12  数据流管理部
13  差异分析部
14  图像显示部
15  结构管理DB
111 源代码登录部
121 源代码分析部
122 数据流登录部
131 源代码差异分析部
132 相似度测定部
133 比较对象选择部
141 差异数据输出部
151 源代码数据
152 源代码版本数据
153 数据流数据
154 数据流版本数据
155 源代码差异数据
156 相似度数据。
权利要求书(按照条约第19条的修改)
1.(修改后)一种软件分析系统,其对输入到计算机中的多份源代码进行分析,确定源代码的变更部位,其特征在于:
分别从所述多份源代码中的至少两份源代码中抽取全局变量的依赖关系,生成包括表示所述全局变量的节点和表示所述全局变量之间的代换关系的链接的图形结构,测定与所述两份源代码分别对应的图形结构的相似度,向所述计算机外部输出。
2.如权利要求1所述的软件分析系统,其特征在于:
所述相似度是汉明距离、相关系数或中心共振性。
3.(删除)
4.如权利要求1或2所述的软件分析系统,其特征在于:
所述节点表示函数,所述链接表示所述函数之间的调用关系。
5.如权利要求1~4中任一项所述的软件分析系统,其特征在于:
对仅由基于所述节点的参考关系的大小统计性地决定的重要节点构成的图形结构测定相似度。
6.如权利要求1~5中任一项所述的软件分析系统,其特征在于:
对按所述源代码的控制周期构成的图形结构测定相似度。
7.如权利要求1~6中任一项所述的软件分析系统,其特征在于:
以图像显示测定到的相似度。
8.如权利要求7所述的软件分析系统,其特征在于:
与测定到的相似度一起显示图形结构。
9.如权利要求1~8中任一项所述的软件分析系统,其特征在于:
分析两份源代码的差异,向所述计算机外部输出。
10.一种用于权利要求1~9中任一项所述的软件分析系统的软件分析程序,其特征在于,包括:
源代码分析部,其使所述计算机从输入的源代码中抽取变量或函数的依赖关系而生成由节点和链接构成的图形结构;和
相似度测定部,其使所述计算机测定两个图形结构的相似度。

Claims (10)

1.一种软件分析系统,其对输入到计算机中的多份源代码进行分析,确定源代码的变更部位,其特征在于:
分别从所述多份源代码中的至少两份源代码中抽取变量或函数的依赖关系而生成由节点和链接构成的图形结构,测定与所述两份源代码分别对应的图形结构的相似度,向所述计算机外部输出。
2.如权利要求1所述的软件分析系统,其特征在于:
所述相似度是汉明距离、相关系数或中心共振性。
3.如权利要求1或2所述的软件分析系统,其特征在于:
所述节点表示变量,所述链接表示所述变量之间的代换关系。
4.如权利要求1或2所述的软件分析系统,其特征在于:
所述节点表示函数,所述链接表示所述函数之间的调用关系。
5.如权利要求1~4中任一项所述的软件分析系统,其特征在于:
对仅由基于所述节点的参考关系的大小统计性地决定的重要节点构成的图形结构测定相似度。
6.如权利要求1~5中任一项所述的软件分析系统,其特征在于:
对按所述源代码的控制周期构成的图形结构测定相似度。
7.如权利要求1~6中任一项所述的软件分析系统,其特征在于:
以图像显示测定到的相似度。
8.如权利要求7所述的软件分析系统,其特征在于:
与测定到的相似度一起显示图形结构。
9.如权利要求1~8中任一项所述的软件分析系统,其特征在于:
分析两份源代码的差异,向所述计算机外部输出。
10.一种用于权利要求1~9中任一项所述的软件分析系统的软件分析程序,其特征在于,包括:
源代码分析部,其使所述计算机从输入的源代码中抽取变量或函数的依赖关系而生成由节点和链接构成的图形结构;和
相似度测定部,其使所述计算机测定两个图形结构的相似度。
CN201180075462.4A 2011-12-12 2011-12-12 软件分析程序和软件分析系统 Pending CN103988176A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/006908 WO2013088461A1 (ja) 2011-12-12 2011-12-12 ソフトウェア解析プログラム、および、ソフトウェア解析システム

Publications (1)

Publication Number Publication Date
CN103988176A true CN103988176A (zh) 2014-08-13

Family

ID=48611958

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075462.4A Pending CN103988176A (zh) 2011-12-12 2011-12-12 软件分析程序和软件分析系统

Country Status (3)

Country Link
US (1) US20140331202A1 (zh)
CN (1) CN103988176A (zh)
WO (1) WO2013088461A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268275A (zh) * 2017-06-12 2018-07-10 平安普惠企业管理有限公司 软件版本控制方法及软件版本控制设备
CN111474894A (zh) * 2020-03-05 2020-07-31 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块
CN113678099A (zh) * 2019-05-09 2021-11-19 株式会社日立制作所 软件分析辅助系统及其计算机程序
CN116302089A (zh) * 2023-05-23 2023-06-23 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质
US20230244467A1 (en) * 2022-02-03 2023-08-03 Red Hat, Inc. Reducing the size of image files usable for deploying software in computing environments

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038025B1 (en) * 2012-05-24 2015-05-19 Allstate Insurance Company Technical interaction model
JP5875681B2 (ja) * 2012-06-20 2016-03-02 株式会社日立製作所 制御ソフトウェアの設計支援装置
US10825565B2 (en) * 2013-06-14 2020-11-03 Syntel, Inc. System and method for validating medical claim data
CN104035772B (zh) * 2014-06-09 2017-11-14 中国科学院软件研究所 基于静态分析的源码多版本函数调用关系差异性标识方法
JP6286297B2 (ja) * 2014-06-30 2018-02-28 日立オートモティブシステムズ株式会社 プログラム開発装置
JP6507940B2 (ja) * 2015-08-28 2019-05-08 富士通株式会社 ソフトウェア開発支援プログラム、ソフトウェア開発支援装置、及びソフトウェア開発支援方法
US10127135B2 (en) * 2016-05-12 2018-11-13 Synopsys, Inc. Systems and methods for incremental analysis of software
KR20180119857A (ko) * 2017-04-26 2018-11-05 현대자동차주식회사 소프트웨어 변경 영향성 분석 방법 및 장치
JP6933012B2 (ja) * 2017-06-14 2021-09-08 富士通株式会社 解析装置、解析プログラムおよび解析方法
JP6419902B1 (ja) * 2017-06-22 2018-11-07 三菱電機インフォメーションシステムズ株式会社 プログラム比較方法、プログラム比較装置およびプログラム比較プログラム
JP2019125008A (ja) * 2018-01-12 2019-07-25 三菱電機エンジニアリング株式会社 エンジニアリングツール
US11474817B2 (en) * 2019-05-02 2022-10-18 EMC IP Holding Company LLC Provenance-based reuse of software code
US11670190B1 (en) 2020-02-03 2023-06-06 Architecture Technology Corporation Training apparatus using augmented and virtual reality
US11042369B1 (en) * 2020-02-03 2021-06-22 Architecture Technology Corporation Systems and methods for modernizing and optimizing legacy source code
JP2022023523A (ja) 2020-07-27 2022-02-08 富士通株式会社 警告マッチングプログラム、警告マッチング方法及び警告マッチング装置
US11301244B1 (en) * 2020-11-16 2022-04-12 International Business Machines Corporation Machine learning based tracking of derivaitive code
CN112328256B (zh) * 2020-11-19 2023-04-25 四川创智联恒科技有限公司 一种自动生成结构体解析器源代码的方法
CN112214419A (zh) * 2020-12-09 2021-01-12 深圳开源互联网安全技术有限公司 组件代码相似度的检测方法及设备
US11797281B2 (en) * 2021-08-05 2023-10-24 Sap Se Multi-language source code search engine

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216425A (ja) * 2002-01-24 2003-07-31 Japan Science & Technology Corp 類似度計測システム
CN101140611A (zh) * 2007-09-18 2008-03-12 北京大学 一种恶意代码自动识别方法
US20080127116A1 (en) * 2006-09-07 2008-05-29 Sun Microsystems, Inc. Method and apparatus for sorting and displaying costs in a data space profiler
CN101286119A (zh) * 2008-05-27 2008-10-15 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法
US20100146484A1 (en) * 2008-12-08 2010-06-10 International Business Machines Corporation Determining Deltas in a Spatial Locality of a Function Call Graph in a Source Controlled System

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450575A (en) * 1991-03-07 1995-09-12 Digital Equipment Corporation Use of stack depth to identify machine code mistakes
US7353427B2 (en) * 2004-04-08 2008-04-01 International Business Machines Corporation Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions
US7509632B2 (en) * 2005-03-24 2009-03-24 International Business Machines Corporation Method and apparatus for analyzing call history data derived from execution of a computer program
US8176475B2 (en) * 2006-10-31 2012-05-08 Oracle America, Inc. Method and apparatus for identifying instructions associated with execution events in a data space profiler
US8762951B1 (en) * 2007-03-21 2014-06-24 Oracle America, Inc. Apparatus and method for profiling system events in a fine grain multi-threaded multi-core processor
US8589882B2 (en) * 2010-06-22 2013-11-19 International Business Machines Corporation Analyzing computer code development actions and process
US8719799B2 (en) * 2011-03-07 2014-05-06 International Business Machines Corporation Measuring coupling between coverage tasks and use thereof

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216425A (ja) * 2002-01-24 2003-07-31 Japan Science & Technology Corp 類似度計測システム
US20080127116A1 (en) * 2006-09-07 2008-05-29 Sun Microsystems, Inc. Method and apparatus for sorting and displaying costs in a data space profiler
CN101140611A (zh) * 2007-09-18 2008-03-12 北京大学 一种恶意代码自动识别方法
CN101286119A (zh) * 2008-05-27 2008-10-15 华耀环宇科技(北京)有限公司 一种通过分析代码变化确定功能点变化的方法
US20100146484A1 (en) * 2008-12-08 2010-06-10 International Business Machines Corporation Determining Deltas in a Spatial Locality of a Function Call Graph in a Source Controlled System
CN101697121A (zh) * 2009-10-26 2010-04-21 哈尔滨工业大学 一种基于程序源代码语义分析的代码相似度检测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JORIS KINABLE ET AL.: "Malware classification based on call graph clustering", 《JOURNAL IN COMPUTER VIROLOGY》 *
LINGFEI WU ET AL.: "A Novel Malware Variants Detection Method Based On Function-call Graph", 《2011 13TH IEEE JOINT INTERNATIONAL COMPUTER SCIENCE AND INFORMATION TECHNOLOGY CONFERENCE(JICSIT 2011)》 *
彭中莲: "基于函数调用图的面向对象软件的修改影响分析研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108268275A (zh) * 2017-06-12 2018-07-10 平安普惠企业管理有限公司 软件版本控制方法及软件版本控制设备
CN113678099A (zh) * 2019-05-09 2021-11-19 株式会社日立制作所 软件分析辅助系统及其计算机程序
CN113678099B (zh) * 2019-05-09 2023-08-11 株式会社日立制作所 软件分析辅助系统及其计算机可读记录介质
CN111474894A (zh) * 2020-03-05 2020-07-31 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块
CN111474894B (zh) * 2020-03-05 2021-08-24 杭州电子科技大学 可变目标plc仿真调试方法、存储介质及功能模块
US20230244467A1 (en) * 2022-02-03 2023-08-03 Red Hat, Inc. Reducing the size of image files usable for deploying software in computing environments
US11928452B2 (en) * 2022-02-03 2024-03-12 Red Hat, Inc. Reducing the size of image files usable for deploying software in computing environments
US20240176608A1 (en) * 2022-02-03 2024-05-30 Red Hat, Inc. Reducing the size of image files usable for deploying software in computing environments
CN116302089A (zh) * 2023-05-23 2023-06-23 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质
CN116302089B (zh) * 2023-05-23 2023-08-18 华中科技大学 基于图片相似度的代码克隆检测方法、系统及存储介质

Also Published As

Publication number Publication date
WO2013088461A1 (ja) 2013-06-20
US20140331202A1 (en) 2014-11-06

Similar Documents

Publication Publication Date Title
CN103988176A (zh) 软件分析程序和软件分析系统
KR101719278B1 (ko) 비주얼 콘텐츠기반 영상 인식을 위한 딥러닝 프레임워크 및 영상 인식 방법
Chen et al. A polynomial based dynamic expansion and data consistency assessment and modification for cylindrical shell structures
ATE241828T1 (de) Rechnersystem und verfahren zur erklärung des verhaltens eines modelles das eingangsdaten auf ausgangdaten abbildet
CN108491590A (zh) 基于灰色系统模型的盾构掘进参数预测方法
Jin et al. Adaptive reference updating for vibration-based structural health monitoring under varying environmental conditions
CN108614539A (zh) 机载设备故障诊断与预测模型验证方法
Lostado-Lorza et al. Using the finite element method and data mining techniques as an alternative method to determine the maximum load capacity in tapered roller bearings
CN107180190A (zh) 一种基于混合特征的Android恶意软件检测方法及系统
CN117319223A (zh) 一种基于数字孪生技术的领导驾驶舱可视化方法及系统
CN105204993A (zh) 一种基于眼动、语音和触屏多模式交互的问卷测试系统和方法
KR20060001923A (ko) 퍼지 로직을 이용한 규칙베이스와 사례베이스를 통합한지능형 전기화재원인진단 시스템 구축 방법
KR101993087B1 (ko) 채팅 환경에서, ux 정보를 제공하는 방법 및 장치
CN113778902A (zh) 测试案例覆盖度的检测方法及装置
KR101309900B1 (ko) 설비 해석 및 제어 알고리즘 검증 기능을 구비한 철강산업용 가상설비 시스템 및 그의 구동 방법
Mercer et al. Modal and frequency domain based techniques for finite element model correlation
EP4325192A1 (en) Cable test system, analysis device, cable test method, and program
Laughery et al. Network modeling of nuclear operator procedures
CN117240554B (zh) 安全事件的治理方法及电子设备
CN113946830B (zh) 基于多模态检测的Android APP漏洞细粒度检测方法
CN115049084B (zh) 基于区块链的故障设备溯源方法、装置、设备及存储介质
CN111090858B (zh) 一种基于拓展攻击树模型的木马检测方法
US20200233783A1 (en) Test pattern generation device
JP2024075082A (ja) 検出装置、検出方法、およびプログラム
CN117035794A (zh) 非法资金转移风险交易的分析方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20140813

WD01 Invention patent application deemed withdrawn after publication