软件分析程序和软件分析系统的制作方法

文档序号:6485262阅读:136来源:国知局
软件分析程序和软件分析系统的制作方法
【专利摘要】即使对于嵌入式系统中比较大规模、复杂化的软件,也能够容易地确定多份源代码之间的差异部分,容易地理解差异部分造成的影响范围。在嵌入到计算机系统的嵌入式系统的软件分析系统中,具有将控制嵌入式系统的源代码中的依赖关系处理为图形结构、测定一份以上的源代码的相似度的相似度测定部(132);和显示相似度的图像显示部(14)。
【专利说明】软件分析程序和软件分析系统
【技术领域】
[0001]本发明涉及适于软件的开发、验证、维护支持的软件分析程序。
【背景技术】
[0002]在升降机、汽车、建筑机械等【技术领域】中使用通过所谓嵌入式软件对控制对象进行控制的嵌入式控制装置。嵌入式软件与现有的机械结构或电路的方式相比,可以列举能够实现更灵活且先进的控制、通过软件的部分变更能够开发多种衍生产品的优点。
[0003]近年来,对嵌入式控制装置要求的控制处理逐年复杂化,并且控制变量之间的依赖关系复杂化,软件的开发变得困难。另一方面,软件开发周期要求短期化。对此,为了在短期间中开发复杂且大型的软件,尽可能高效率地再利用现有软件的衍生开发是重要的。
[0004]再利用现有软件的衍生开发中,对现有产品与新产品的差异部分进行变更开发或新开发。此时,在短期间开发复杂的软件时,高效率地理解现有产品与新产品的差异部分是不可欠缺的技术。
[0005]确定软件的差异部分的技术,已知有通过进行两份源代码的对比而确定变更部位的技术,例如在专利文献I中有记载。
[0006]此外,另一方面,已知为了高效率地理解当前的源代码的结构,对现有的源代码控制流与数据依赖关系进行分析,用由节点和链接构成的图表示应用程序结构的技术,例如在专利文献2中有记载。
[0007]现有技术文献
[0008]专利文献
[0009]专利文献1:日本特开2004-326337号公报
[0010]专利文献2:TO2009/011056

【发明内容】

[0011]发明要解决的课题
[0012]上述现有技术中,专利文献I中记载的技术通过抽取两份源代码的差异,而提高进一步复杂化的源代码的易理解性。但是,对于大规模、进一步复杂化的源代码,存在仅用源代码的差异难以确定实质上在变量依赖关系中发生变更的变更部位,且难以确定变更部位对前后的影响范围的课题。
[0013]此外,专利文献2中记载的技术不能够逐一理解源代码的变量依赖关系,仅基于应用程序模型的复杂度提出重构候选部分,不能够理解新旧两份源代码的不同点。
[0014]本发明的目的在于解决上述现有技术的课题,在大规模、复杂化的嵌入式系统的控制软件中,能够容易地确定一份以上的源代码的差异部分,容易地确定差异部分对周围造成的影响。
[0015]用于解决课题的方案
[0016]为了解决上述课题,本发明是软件分析系统,其对输入到计算机中的多份源代码进行分析,确定源代码的变更部位,从所述多份源代码中的至少两份源代码分别抽取变量或函数的依赖关系而生成由节点和链接构成的图形结构,测定与所述两份源代码分别对应的图形结构的相似度,向所述计算机外部输出。
[0017]发明效果
[0018]根据本发明,即使嵌入式系统是大规模、复杂化的软件(计算机程序),也能够容易地确定两个软件之间的差异部分,并且能够容易地理解差异部分造成影响的范围。
【专利附图】

【附图说明】
[0019]图1是表示本发明的一个实施方式的软件分析系统的显示画面的图。
[0020]图2是表示本发明的一个实施方式的整体结构的框图。
[0021]图3是表示一个实施方式中的源代码管理部的图。
[0022]图4是表示一个实施方式中的源代码数据的图。
[0023]图5是表示一个实施方式中的源代码管理部的处理的流程图。
[0024]图6是表示一个实施方式中的源代码版本数据的图。
[0025]图7是表示一个实施方式中的数据流管理部的图。
[0026]图8是表示一个实施方式中的源代码分析部的处理的流程图。
[0027]图9是表示一个实施方式中的数据流的图。
[0028]图10是表示一个实施方式中的数据流登录部的处理的流程图。
[0029]图11是表示一个实施方式中的数据流版本数据的图。
[0030]图12是表示一个实施方式中的差异分析部的图。
[0031]图13是表示一个实施方式中的比较对象选择部的处理的流程图。
[0032]图14是表示一个实施方式中的源代码差异分析部的处理的流程图。
[0033]图15是表示一个实施方式中的源代码差异的图。
[0034]图16是表示一个实施方式中的相似度测定部的处理的流程图。
[0035]图17是表示一个实施方式中的相似度的图。
[0036]图18是表示一个实施方式中的图像显示部的图。
[0037]图19是表示一个实施方式中的分析结果输出部的处理的流程图。
[0038]图20是表示一个实施方式中的分析结果输出部中的显示的图。
[0039]图21是表示一个实施方式中的分析结果输出部中的显示的图。
[0040]图22是表示一个实施方式中的源代码版本数据的图。
[0041]图23是表示一个实施方式中的源代码差异的图。
[0042]图24是表示一个实施方式中的相似度的图。
[0043]图25是表示一个实施方式中的分析结果输出部中的显示的图。
【具体实施方式】
[0044]本发明涉及用于实现家用设备、工业用设备、医疗用设备等需要电子控制的产品的特定功能而嵌入了计算机系统的嵌入式系统的软件组件生成辅助装置,特别适于移动电话、数字家电、以及汽车、铁路、升降机等运输设备等需要的功能多种多样的系统、组合了多种硬件、多种软件的大规模的系统的软件开发、验证、维护支持。[0045]实施例1
[0046]以下参考【专利附图】
附图
【附图说明】本发明的一个实施方式。
[0047]图1是表示本发明的软件分析系统的输出画面的一例。用源代码作为输入,不仅确定源代码的差异部分,还将源代码中的依赖关系解释为由链接和节点构成的图形结构,测定图的相似度,由此不仅用源代码、还用图的相似度作为指标评价一份以上的源代码的差异部分,在画面上显示如图1所示的输出。
[0048]图2是表示软件分析系统I的全貌的框图。软件分析系统具备包括源代码管理部
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上用图像显示输入信息。其中,软件分析系统I可以在与用户5用作终端的计算机2通过网络等连接的其他计算机上实现,也可以在计算机2内实现。
[0049]图3是表示源代码管理部11的详细结构的图。源代码管理部11具备将源代码数据151中新保存的源代码登录在源代码版本数据152中的源代码登录部111,用源代码数据151中保存的源代码作为输入,在按版本关联地保存多份输入的源代码数据的数据库即源代码版本数据152中登录源代码数据151。其中,源代码数据151中保存的源代码,不仅是用C语言等高级语言描述的源代码的文件,也可以是编译后的目标文件,也可以是编译后的程序的执行日志。
[0050]图4是表示源代码数据151的详情的图。源代码文件1511由函数func_d的处理流程构成。其中,源代码文件1511中使用的变量a、b、c、d、e定义为全局变量。函数func_d中,进行根据变量a和b的值更新变量c的处理,进行根据变量c和d的值更新变量e的处理。
[0051]图5是表示源代码登录部111的详细的执行流程的图。从步骤SlllO开始处理。步骤Sllll中,进行源代码数据151的输入。步骤S1112中,将输入的源代码数据151按版本关联地登录在源代码版本数据152中。该关联例如能够从源代码数据151中保存的源代码的文件名等取得源代码的版本而实现。步骤S1113中结束处理。通过这样按版本关联地登录源代码,容易用后述的比较对象选择部133选择比较对象。
[0052]图6是表示源代码版本数据152的详情的图。源代码文件1521和源代码文件1522分别表示在源代码版本数据152中同时登录的版本不同的源代码文件。可见源代码文件1522与源代码文件1521相比,较多进行使用变量d的值更新变量a的处理。
[0053]图7是表示数据流管理部12的详细结构的图。数据流管理部12具备用源代码数据151中保存的源代码作为输入、分析该源代码中的变量依赖关系并生成数据流的源代码分析部121,和将数据流图登录在数据流版本数据154中的数据流登录部122,用源代码数据151中保存的源代码作为数据,根据输入的源代码文件生成将变量依赖关系图形化后的数据流,将生成的数据流登录在按版本关联地保存的数据库即数据流版本数据154中。
[0054]图8是表示源代码分析部121的详细执行流程的图。从步骤S1210开始处理。步骤S1211中进行源代码数据1511的输入。步骤S1212中,对输入的源代码进行分析,抽取源代码中的变量依赖关系。步骤S1213中,根据步骤S1212中抽取的变量依赖关系,生成数据流。步骤S1214中,将步骤S1213中生成的数据流登录在数据流的数据库即数据流数据153中。步骤S1215中结束处理。
[0055]图9是表示数据流数据153的详情的图。矩阵1531是用表形式表达源代码1511中的变量依赖关系的图。数据流1532是用图形式表达源代码文件1511中的变量依赖关系的图。本实施方式中,数据流1532用变量作为节点,用变量间的代换关系作为由箭头表示的链接,表达变量依赖关系。例如,此处对于基于变量a和变量b运算变量C,用表示变量a、b、c的节点和在这些节点之间连接的链接表达。
[0056]图10是表示数据流登录部122的详细执行流程的图。从步骤S1220开始处理。步骤S1221中,从数据流数据153开始输入数据流。步骤S1222中,将步骤S1221中输入的数据流按源代码的版本关联地登录在数据流的版本管理数据库即数据流版本数据154中。步骤S1223中结束处理。通过这样按版本关联地登录数据流,容易用后述的比较对象选择部133选择比较对象。
[0057]图11是表示数据流版本数据154的详情的图。矩阵1541是用表形式表达某个版本的源代码文件1521中的变量依赖关系的图。数据流1542是用图形式表达源代码文件1521中的变量依赖关系的图。矩阵1543是用表形式表达其他版本的源代码文件1522中的变量依赖关系的图。数据流1544是用图形式表达源代码文件1522中的变量依赖关系的图。
[0058]图12是表示差异分析部13的详细结构的图。差异分析部13具有用户5通过操作部3选择表示比较对象的源代码的版本等数据信息的比较对象选择部133、分析源代码版本之间的差异的源代码差异分析部131、测定数据流之间的相似度的相似度测定部132。差异分析部13中,用户5通过操作部3输入表示比较对象的数据信息,基于比较对象的数据信息用源代码版本数据和数据流版本作为输入,分析源代码的差异并输出源代码差异数据,同时测定数据流的相似度并输出相似度数据。
[0059]图13是表示比较对象选择部133的详细执行流程的图。从步骤S1310开始处理。步骤S1311中,用户5通过操作部3输入比较对象的信息数据。信息数据可以列举源代码的版本信息和发布信息。步骤S1312中,判断步骤S1311中是否选择了两个输入的比较对象。已选择两个比较对象的情况下(是(YES)),前进至步骤S1313,结束处理。未选择两个比较对象的情况下(否(NO)),前进至步骤S1311继续处理。这样,通过进而实现S1312的处理,能够防止用户误输入等。
[0060]图14是表示源代码差异分析部131的详细执行流程的图。从步骤S1320开始处理。步骤S1321中,从比较对象选择部133输入比较对象信息。步骤S1322中,基于用S1321输入的比较对象信息,从源代码版本数据152输入比较对象的源代码。步骤S1323中,分析用步骤S1322输入的比较对象的源代码的差异。分析方法例如能够使用UNIX(注册商标)等中作为外壳命令提供的diff命令、和MS-DOS(注册商标)中的comp命令等方法。由此能够分析用文本等描述的源代码的差异。步骤S1324中,将用步骤S1323分析的源代码差异数据登录在源代码差异的数据库即源代码差异数据155中。差异数据例如能够用源代码的行号数据等表达。步骤S1325中结束处理。
[0061]图15是表示在新版本的源代码中表示了源代码差异数据155的例子的详情的图。可知对新旧版本的源代码文件1551和源代码文件1552进行比较的结果为源代码文件1552内的更新变量a的处理是源代码文件1551与源代码文件1552的差异。
[0062]图16是表示相似度测定部132的详细执行流程的图。从步骤S1330开始处理。步骤S1331中,从比较对象选择部133输入比较对象信息。步骤S1332中,基于用步骤S1331输入的比较对象信息,从数据流版本数据154输入比较对象的数据流。步骤S1333中,测定用步骤S1332输入的比较对象的数据流的相似度。此处,相似度可以考虑相关系数、汉明距离、中心共振分析等,此处在后文中说明使用相关系数的相似度测定。步骤S1334中,将用步骤S1333测定的相似度登录在相似度信息的数据库即相似度数据156中。步骤S1335中结束处理。
[0063]图17是表示相似度数据156的详情的图。对用表形式表达源代码版本1521内的变量依赖关系的矩阵1561和用表形式表达源代码版本1522内的变量依赖关系的矩阵1562进行比较时,可知(d,e)的值有O和I的不同。对于用图形式表达相同内容的数据流1562和数据流1565进行比较时,可知从变量d到变量a的依赖关系线不同。求数据流1562与数据流1565的相似度即相关系数,可知为0.87。此处计算的相关系数在下式中用r定义。
【权利要求】
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中任一项所述的软件分析系统的软件分析程序,其特征在于,包括: 源代码分析部,其使所述计算机从输入的源代码中抽取变量或函数的依赖关系而生成由节点和链接构成的图形结构;和 相似度测定部,其使所述计算机测定两个图形结构的相似度。
【文档编号】G06F9/44GK103988176SQ201180075462
【公开日】2014年8月13日 申请日期:2011年12月12日 优先权日:2011年12月12日
【发明者】福田毅, 新吉高, 吉村健太郎, 会田敬一, 杉山洋平 申请人:株式会社日立制作所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1