源代码等价性验证装置以及源代码等价性验证方法_2

文档序号:9650596阅读:来源:国知局
化单元还具备:变更位置确定单元,其参照对所述重构模式信息定义的变更位置确定信息,比较所述重构前源代码信息和所述重构后源代码信息,生成用于确定源代码的结构上的变更位置的变更位置信息;所述符号执行单元还具备:抽象化单元,其参照通过所述变更位置确定单元提取的所述重构前源代码信息与所述重构后源代码信息的变更位置信息以及对所述重构模式信息定义的抽象化信息,对所述重构前正规化源代码信息和所述重构后正规化源代码信息进行抽象化,对所述抽象化单元生成的重构前抽象化源代码信息和重构后抽象化源代码信息进行符号执行。
[0043]此外,为了解决上述课题,在本发明中,在验证最初的源代码和重构实施后的源代码的等价性的源代码等价性验证方法中,具有如下步骤:源代码输入步骤,输入重构前的源代码和重构后的源代码;重构模式输入步骤,输入所述源代码的重构模式信息;源代码信息生成步骤,进行所述重构前的源代码和所述重构后的源代码各自的字句解析/句法解析,并变换为结构图,生成重构前源代码信息和重构后源代码信息;正规化步骤,参照对重构模式信息定义的正规化信息,对所述重构前源代码信息和所述重构后源代码信息进行正规化,分别生成重构前正规化源代码信息和重构后正规化源代码信息;结构比较步骤,比较所述重构前正规化源代码信息和所述重构后正规化源代码信息的结构;符号执行步骤,对所述重构前正规化源代码信息和所述重构后正规化源代码信息进行符号执行;以及等价性判定步骤,比较基于所述符号执行步骤的符号执行的结果,来判定所述重构前源代码和所述重构后源代码的等价性。
[0044]发明效果
[0045]根据本发明,能够提供一种通过符号执行进行针对由人工实施的重构的等价性验证时,能够不使计算量爆发,而迅速地进行的源代码等价性验证方法。
【附图说明】
[0046]图1是本发明一实施方式的源代码等价性验证装置的硬件结构图。
[0047]图2是本发明一实施方式的源代码等价性验证装置的软件结构图。
[0048]图3是本发明一实施方式的源代码等价性验证装置的功能结构图。
[0049]图4是表示本发明一实施方式的源代码等价性验证装置整体的功能和数据流程的图。
[0050]图5是表示本发明一实施方式的源代码等价性验证装置的处理的流程图。
[0051 ]图6是表示输入部1100的功能的细节和数据流程的图。
[0052]图7是表示正规化部1200的功能的细节和数据流程的图。
[0053]图8是表示结构比较验证处理部1300的功能的细节和数据流程的图。
[0054]图9是表示符号执行实施判定部1700的功能的细节和数据流程的图。
[0055]图10是表示符号执行验证处理部1400的功能的细节和数据流程的图。
[0056]图11是表示重构前后的源代码的例子的图(之一)。
[0057]图12是表示与重构前后的源代码对应的源代码信息的例子的图(之一)。
[0058]图13是表示针对源代码信息进行的正规化的例子的图。
[0059]图14是表示用于显示通过结构比较对正规化后的结构图进行了等价性验证而得的结果的输出部的显示例的图。
[0060]图15是表示重构前后的源代码的例子的图(之二)。
[0061]图16是表示与重构前后的源代码对应的源代码信息的例子的图(之二)。
[0062]图17是表示抽象化后的源代码信息的例子的图。
[0063]图18是表示针对重构前源代码和重构后源代码进行了符号执行时的执行树的例子。
[0064]图19是为了说明符号执行的一例,表示源代码和由其派生的数据结构的图。
[0065]图20是表示用于显示通过符号执行验证处理部进行了等价性验证而得的结果的显示部的显示例的图。
[0066]图21是表示重构前后的源代码的例子的图(之三)。
[0067]图22是表示与重构前的源代码对应的源代码信息的例子的图(之三)。
[0068]图23是表示与重构后的源代码对应的源代码信息的例子的图(之三)。
[0069]图24是表示正规化后的重构后的源代码信息的例子的图。
[0070]图25是表示抽象化后的源代码信息的例子的图。
[0071]图26是表示被抽象化时的、针对重构前源代码和重构后源代码进行了符号执行时的执行树的例子。
[0072]图27是表示被抽象化时的、基于显示部的等价性验证结果的显示例的图。
【具体实施方式】
[0073]以下,使用附图对本发明的实施方式进行说明。
[0074]实施例1
[0075]以下,使用图1至图10,对本发明一实施方式的源代码等价性验证装置1000的结构和处理进行说明。
[0076]首先,使用图1对本发明一实施方式的源代码等价性验证装置的硬件结构进行说明。
[0077]作为本发明一实施方式的源代码等价性验证装置的硬件结构,例如通过图1所示的一般的个人计算机来实现。
[0078]源代码等价性验证装置1000是将CPU (Central Processing Unit,中央处理单元)101、主存储装置102、网络I/F103、图形I/F104、输入输出I/F105、辅助存储装置1/F106通过总线而结合的方式。
[0079]CPU101控制源代码等价性验证装置100的各部,将源代码等价性验证程序200加载到主存储装置102来执行。
[0080]通常,主存储装置102由RAM等易失性存储器构成,从辅助存储装置等加载CPU101执行的程序、参照的数据并存储。
[0081]网络I/F103是用于与外部网络150连接的接口。
[0082]图形I/F104是用于与IXD(Liquid Crystal Display,液晶显示器)等显示装置120连接的接口。
[0083]输入输出I/F105是用于与输入输出装置连接的接口。在图1的例子中,连接有键盘131和作为指示设备的鼠标132。
[0084]辅助存储装置I/F106是用于连接HDD (Hard Disk Drive,硬盘驱动器)、DVD (Digital Versatile Disk,数字通用光盘)驱动装置142等辅助存储装置的接口。
[0085]HDD141具有大容量的存储容量,存储用于执行本实施方式的源代码等价性验证程序 200。
[0086]DVD驱动装置142是向DVD或⑶等光盘写入数据或从光盘读入数据的装置,源代码等价性验证程序200例如能够安装由CD - ROM提供的程序。
[0087]本实施方式的源代码等价性验证装置1000在上述那样的个人计算机上安装源代码等价性验证程序200来执行各功能。
[0088]接着,使用图2对本发明一实施方式的源代码等价性验证装置的软件结构进行说明。
[0089]在源代码等价性验证装置1000中执行的程序等价性验证程序200的模块结构由子程序即源代码解析模块201、结构图生成/更新模块202、结构图解析模块203、执行树生成模块204、符号执行执行模块205、输入输出模块206和数据库模块207构成。
[0090]另外,程序等价性验证程序200是在OS (Operating System,操作系统)上运行的应用软件,作为源代码等价性验证装置的软件结构,还包含0S、库程序,但在的图中被省略。
[0091]源代码解析模块201是进行源代码的字句解析/句法解析,取出为了结构图生成所需要的信息的模块。
[0092]结构图生成/更新模块202是根据源代码解析模块201的解析结果生成或更新结构图的模块。
[0093]结构图解析模块203是解析结构图的图结构的模块。
[0094]执行树生成模块204是根据结构图解析模块203的解析结果生成执行树的模块。
[0095]符号执行执行模块205是进行针对执行树生成模块204生成的执行树的符号执行的模块。
[0096]输入输出模块206是从外部输入输出必要的数据的模块。
[0097]数据库模块207是用于访问各种数据库的模块。
[0098]图3是表示源代码等价性验证装置1000的功能结构图。控制部110由图1的CPU101、主存储装置102构成,存储部1600由图1的HDD141构成,但有时也包含主存储装置102。输入装置130包括图1的输入输出I/F105、键盘131、鼠标132等,还可以包括经由辅助存储装置I/F106从DVD驱动装置142读入的结构。输出装置120包括图形I/F104、显示装置120等,还可以包括经由辅助存储装置I/F106向DVD驱动装置142写入的结构。通信部103表示图1的网络I/F103,经由网络150例如与外部计算机160连接。
[0099]存储部1600预先具备源代码等价性验证程序200、在本装置中预先登录有对应的重构的种类的重构模式登录信息1120、针对每个上述重构模式预先登录有对重构前/后源代码信息实施的正规化处理的正规化数据库1601以及针对每个上述重构模式预先登录有对重构前/后源代码信息实施的抽象化处理的抽象化数据库1602。
[0100]存储部1600还具有在实施源代码等价性验证处理时要确保的重构前/后源代码存储区域1603、重构前/后源代码信息存储区域1604、重构前/后符号执行结果存储区域1605以及验证结果存储区域1606。
[0101]控制部110从存储部1600加载源代码等价性验证程序200并通过CPU101执行,由此实现输入部1100、正规化部1200、结构比较验证处理部1300、符号执行实施判定部1700、符号执行验证处理部1400、输出部1500的各功能。
[0102]接着,使用图4至图10,对本发明一实施方式的源代码等价性验证装置的各功能和它们的处理进行说明。
[0103]图4是表示本发明一实施方式的源代码等价性验证装置整体的功能和数据流程的图。
[0104]图5是表示本发明一实施方式的源代码等价性验证装置的处理的流程图。
[0105]图6是表示输入部1100的功能的细节和数据流程的图。
[0106]图7是表示正规化部1200的功能的细节和数据流程的图。
[0107]图8是表示结构比较验证处理部1300的功能的细节和数据流程的图。
[0108]图9是表示符号执行实施判定部1700的功能的细节和数据流程的图。
[0109]图10是表示符号执行验证处理部1400的功能的细节和数据流程的图。
[0110]软件开发者为了对通过安装在外部计算机160上的软件开发装置生成的软件实施重构来验证重构实施后的源代码是否与重构实施前的源代码等价,将重构前/后源代码经由网络150发送给源代码等价性验证装置1000,委托验证。所委托的重构前/后源代码被存储在存储部1600的重构前/后源代码存储区域1603中,进行等价性验证处理。
[0111]或者,当软件开发装置被安装在与本实施方式的源代码等价性验证装置1000相同的个人计算机上的情况下,软件开发者通过图3的输入装置130等输入重构前/后源代码,将这些数据存储在重构前/后源代码存储区域1603中并执行等价性验证处理。
[0112]当软件开发者输入重构前/后源代码来委托等价性验证处理时,附加输入表示实施了什么种类的重构的重构模式输入信息0003。
[0113]如图4所示,本实施方式的源代码等价性验证装置1000通过输入重构前源代码
0001、重构后源代码0002两个源代码和针对重构前源代码0001应用的与重构模式相关的输入信息即重构模式输入信息0003,来验证重构前源代码0001和重构后源代码0002的源代码的等价性。
[0114]首先,在输入部1100接受输入的或已存储在存储部1603中的重构前源代码
0001(图5的S101)。在重构后源代码输入步骤S102中,在输入部1100接受重构后源代码
0002(S102)。此外,在输入部1100接受重构模式输入信息0003的输入(S103)。
[0115]以下,使用图6说明上述输入部1100的功能的细节及其处理。
[0116]如图6所示,重构前源代码0001通过输入部1100中的源代码输入部1101被接受,进行源代码的字句解析和句法解析,变换为重构前源代码信息1001。重构后源代码0002也通过输入部1100中的源代码输入部1101被接受,进行源代码的字句解析和句法解析,变换为重构后源代码信息1002,存储在存储部1600中。此外,重构模式输入信息0003通过输入部1100中的重构模式输入部1102被接受,变换为表示重构模式种类的重构模式信息1003,存储在存储部1600中。
[0117]接着,比较重构前源代码信息1001和重构后源代码信息1002,确定源代码的结构上的变更位置(S1041)。
[0118]然后,正规化部1200使用存储在存储部1600中的信息,进行重构前源代码信息1001和重构后源代码信息1002的正规化(S1042)。
[0119]在此,正规化表示将进行了重构的源代码的源代码信息变换为与该源代码等价的源代码所对应的源代码信息。以适于之后接下来的结构比较步骤S1043和符号执行步骤S1045的形式进行该正规化。
[0120]以下,使用图7说明上述正规化部1200的功能的细节及其处理。
[0121]向正规化部1200的变更位置确定部1201输入重构前源代码信息1001和重构后源代码信息1002。另一方面,读出与存储在正规化DB1601中的重构模式信息1003对应的变更位置确定信息1007b。然后,变更位置确定部1201比较源代码信息,参照与重构模式信息1003对应的变更位置确定信息1007b,确定源代码的构造上的变更位置,生成变更位置信息 1004(S1041)。
[0122]接着,从存储部1600的正规化DB1601取得与重构模式输入信息1003对应的表示正规化方法的正规化信息1007a (S1042)。在正规化DB1601中存储与每个重构模式对应的正规化信息1007a。在正规化部1200的源代码正规化部1202中,根据所取得的正规化信息1007a针对重构前源代码信息1001进行正规化,生成重构前正规化源代码信息1005。此夕卜,在正规化部1200的源代码正规化部1202中,根据正规化信息1007a针对重构后源代码信息1002进行正规化,生成重构后正规化源代码信息1006。
[0123]接着,结构比较验证处理部1300比较重构前正规化源代码信息1005和重构后正规化源代码信息1006的结构,验证是否是相同结构(步骤S1043)。
[0124]以下,使用图8说明结构比较验证处理部1300的功能的细节及其处理。
[0125]结构比较验证处理部1300接受重构前正规化源代码信息1005和重构后正规化源代码信息1006,进行两个正规化后的源代码信息的结构是否一致的比较,在一致的情况下,作为结构比较结果1008而生成一致这样的信息,在不一致的情况下,作为结构比较结果1008而生成不一致这样的信息(S1043)。
[0126]接着,在符号执行实施判定部1700中判定是否应进行符号执行(S1047)。在此,在上述的结构比较步骤S1043的结果中,若判定为结构一致,则向等价非等价输出步骤S105前进,若判定为结构不一致,则向源代码信息抽象化步骤S1044前进。
[0127]以下,使用图9说明符号执行实施判定部1700的功能的细节及其处理。
[0128]符
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1