CN105431817B - 源程序比较装置以及存储装置 - Google Patents
源程序比较装置以及存储装置 Download PDFInfo
- Publication number
- CN105431817B CN105431817B CN201380078555.1A CN201380078555A CN105431817B CN 105431817 B CN105431817 B CN 105431817B CN 201380078555 A CN201380078555 A CN 201380078555A CN 105431817 B CN105431817 B CN 105431817B
- Authority
- CN
- China
- Prior art keywords
- module
- sentence
- row
- hierarchical structure
- unit
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
装置具备存储单元和比较单元。在存储单元存储2个以上的模块。比较单元从存储单元取得存储于存储单元的模块当中的第1模块和第2模块。另外,比较单元作成表示第1模块的层级结构与第2模块的层级结构是否一致的消息。
Description
技术领域
本发明涉及对由以程序语言记述的1个以上的语句分别构成的2个模块(源程序)进行比较的装置。
背景技术
一般来说,多数情况下程序是一边反复进行维护一边跨长期间使用。程序的维护在较多的情况下为了变更程序的功能而进行。但也有为了应对使用程序的环境例如作为程序的平台的硬件、OS(Operation System操作系统)、中间件的变更而对程序进行维护的情况。进而,还有为了变更记述程序的程序语言而对程序进行维护的情况。即,还有不以变更程序的功能为目的的维护(以下将这样的维护称作「转换」)。
在对程序进行转换的情况下,需要对程序的全部语句调查是否需要变更,并仅对需要变更的语句进行变更。但是,程序的合计行数超过100万行那样的大的系统也大量存在。在这样的系统中,合适地进行转换并不容易。进而,验证是否合适地进行了转换也不容易。进而,并不限于转换,且不限于系统的大小,验证是否合适地进行了程序的维护就不容易。
一般来说,为了验证是否合适地进行了程序的维护,进行比较维护前后的程序来找出不同的部位这样的作业。例如在专利文献1中公开了一种程序差分检测装置,通过比较从维护前后的程序分别提取出的令牌的排列顺序,来找出维护前后的程序的不同的部位。专利文献1的令牌由保留字或字符常数等构成。根据专利文献1,程序差分检测装置由于根据这样的令牌的排列顺序找出程序的不同的部位,因而不是找出语句的开始列的相异等的形式上的相异,而是能根据意义上的相异来找出不同的部位。
现有技术文献
专利文献
专利文献1:JP特开2009-176108号公报
发明内容
发明要解决的课题
但是,例如在变更程序语言的情况下,较多情况下还改变程序语言的保留字(即令牌)。另外,在为了应对OS或中间件的变更而变更程序的情况下,有时改变记述在程序中的函数名(即令牌)。在这样的情况下,若使用专利文献1所公开的技术,则会将意义上相同的部位作为不同的部位而找出。即,在专利文献1公开的技术难以在转换中使用。
为此,本发明的目的在于,提供比较由以程序语言记述的1个以上的语句分别构成的2个模块、并且通过在转换中也能运用的新的方法来比较2个模块的装置。
用于解决课题的手段
本发明的1个侧面提供比较由以程序语言记述的1个以上的语句分别构成的2个模块的装置。在所述模块中能记述所述语句之一的条件语句。所述条件语句包含成立时执行语句以及/或者不成立时执行语句。所述成立时执行语句是所述条件语句的条件式成立的情况下执行的所述语句。所述不成立时执行语句是所述条件式不成立的情况下执行的所述语句。所述条件语句的当中的至少一者能进一步包含所述条件语句作为所述成立时执行语句以及/或者所述不成立时执行语句,由此能进行基于所述条件语句的所述语句的层级化。另外,能确定所述语句的基于所述层级化的所述模块的层级结构。所述装置具备存储单元和比较单元。在所述存储单元存储2个以上的所述模块。所述比较单元从所述存储单元取得存储于所述存储单元的所述模块当中的第1模块和第2模块。所述比较单元作成表示所述第1模块的所述层级结构是否与所述第2模块的所述层级结构一致消息。
另外,根据本发明的其他侧面,得到用于使计算机作为所述装置发挥功能的程序。
发明的效果
根据本发明,作成表示2个模块的层级结构是否相互一致的消息。在2个模块的层级结构相互不一致的情况下,2个模块具有意义上不同的部位的可能性较高。因此,能根据消息获知2个模块是否有意义上不同的部位。
通过参考附图研讨下述的最佳的实施方式的说明,将会正确理解本发明的目的,且更完全地理解其构成。
附图说明
图1是表示本发明的第1实施方式的比较装置(装置)的方框构成图。
图2是示意地表示存储在图1的装置的存储装置中的模块的数据构成的图。
图3是示意地表示存储在图1的存储装置的层级结构的数据构成的图。
图4是表示图3的数据构成的变形例的图。
图5是表示图1的装置的比较单元的功能的流程图。
图6是表示存储在图1的存储装置的模块(第1模块)的一例、和例示的第1模块的层级结构的图。
图7是表示存储在图1的存储装置的其他模块(第2模块)的一例、和例示的第2模块的层级结构的图。
图8是表示图6所示的第1模块的变形例、和变形例的层级结构的图。
图9是表示图6以及图7各自的层级结构的变形例的图。
图10是表示本发明的第2的实施方式的比较装置(装置)的方框构成图。
图11是表示存储在图10的存储装置的模块的一例的图。
图12是示意地表示存储在图10的存储装置的二次模块的数据构成的图。
图13是表示图10的装置的变换单元的功能的流程图。
图14是更详细地表示图13的变换单元的功能的一部分的流程图。
图15是表示图10的装置的加工单元的功能的流程图。
图16是表示图10的装置的比较单元的功能的流程图。
图17是表示存储在图10的存储装置的二次模块当中的2个模块(第1模块以及第2模块)各自的示例的图。
图18是表示本发明的第3实施方式的比较装置(装置)的系统构成图。
具体实施方式
关于本发明,可由多种多样的变形、各式各样的形态来实现,作为其一例,以下详细地说明附图所示那样的特定的实施方式。附图以及实施方式并非将本发明限定于在此公开的特定形态,而将所附的权利要求所明示的范围内实现的所有变形例、等同物、代替例包含在其对象中。
(第1实施方式)
如图1所示那样,本发明的第1实施方式的比较装置(装置)10具备:装置主体20、存储装置(存储单元)30、输入装置40、和显示装置50。比较装置10对由以程序语言记述的1个以上的语句分别构成的2个模块(源程序)进行比较。
本实施方式的程序语言是COBOL。但本发明还能运用在COBOL以外的程序语言中。
本实施方式的模块能由组合了字符、数字、记号等的模块名确定。
在模块中,能记述由1个以上的语句构成的处理单位。本实施方式的处理单位是COBOL中的节。各个节能由节名(处理单位名)确定。但处理单位也可以不是节。例如在程序语言是JAVA(商标)的情况下,处理单位可以是能由函数名(处理单位名)确定的函数。
模块能调用其他模块或该模块自身。另外,模块的节能执行其他节或该节自身。更具体地,在模块中,作为语句能记述:用于用节名确定节并执行的处理单位执行语句、和用于用模块名确定模块之一并执行的模块调用语句。根据本实施方式,处理单位执行语句是PERFORM语句,模块调用语句是CALL语句。其他程序语言中的处理单位执行语句以及模块调用语句分别例如是指定函数名的语句。在模块调用语句是指定函数名的语句的情况下,由模块调用语句执行模块当中的所指定的函数部分(即模块的一部分)执行。在该情况下,能不在模块调用语句中明示地记述模块名。即,能间接地用函数名确定模块名。
进而在模块中,能记述语句之一的条件语句。条件语句具备条件式,在条件语句中能记述成立时执行语句以及/或者不成立时执行语句。换言之,条件语句能包含成立时执行语句以及/或者不成立时执行语句。成立时执行语句是在条件语句的条件式成立的情况下执行的语句。不成立时执行语句是在条件式不成立的情况下执行的语句。本实施方式的条件语句是IF语句以及EVALUATE语句。在IF语句中,成立时执行语句是记述为THEN短语的语句,不成立时执行语句是记述为ELSE短语的语句。同样地,在EVALUATE语句中,成立时执行语句是记述为WHEN短语的语句。
本实施方式的条件语句的当中的至少1个,能作为成立时执行语句以及/或者不成立时执行语句进一步包含条件语句,由此能进行基于条件语句的语句的层级化。例如,作为IF语句的成立时执行语句,能进一步记述IF语句。换言之,模块由能通过条件语句而层级化的1个以上的语句构成,由此具有给定的层级结构(即基于条件语句的层级结构)。如容易地理解的那样,能通过解析模块的语句来确定基于层级化的模块的层级结构。
如图1所示那样,存储装置30例如是磁盘装置。存储装置30例如能存储通过文件夹(未图示)层级化的各种文件。存储装置30与装置主体20能通信地连接,能按照来自装置主体20的指示进行文件的读入(取得)或写入(存储)。在本实施方式的存储装置30存储2个以上的模块31。另外,在存储装置30中能存储层级结构36。
模块31例如使用编程工具(未图示)来作成。各个模块31可以是1个文件。也可以将多个模块31存储为1个文件。层级结构36存储模块31的层级结构。根据本实施方式,对各个模块31作成层级结构36。
输入装置40例如是键盘或鼠标。输入装置40与装置主体20能通信地连接,能将从键盘输入的字符或由鼠标指示的位置通知给装置主体20。
显示装置50例如是显示器或打印机。显示装置50与装置主体20能通信地连接,能将从装置主体20转发的数据(例如字符或图形)显示或印刷。
装置主体20例如是PC(Personal Computer,个人计算机)的主体。装置主体20具备CPU(Central Processing Unit,中央处理器)、主存储装置等(未图示)。在存储装置30存储各种程序的执行格式文件(未图示)。CPU通过将执行格式文件载入到主存储装置,执行执行格式文件内的命令字,来实现各种功能。在CPU执行命令字的过程中,将存储在存储装置30的给定的文件经由主存储装置内的缓存区域读入到程序的变量区域。将读入到程序的变量区域的文件的内容根据需要经由主存储装置内的缓存区域写入到存储装置30。如从上述的说明理解的那样,存储装置30以及主存储装置分别作为能进行本实施方式中的读入以及写入的存储单元发挥功能。换言之,本实施方式的存储单元既可以是存储装置30以及主存储装置的一方,也可以是双方。在以后的说明中,作为存储单元而使用存储装置30。
在本实施方式的存储装置30中存储比较程序等各种程序(未图示)。将上述的程序载入到主存储装置,由CPU执行,由此计算机作为各种单元(即作为装置)发挥功能。例如比较程序使计算机作为对存储于存储装置30的模块31当中的第1模块31和第2模块31进行比较的比较单元23(比较装置10)发挥功能。换言之,本实施方式的装置10的装置主体20具备比较单元23。
如图2所示那样,本实施方式的模块31由n个(n≥1)行310构成。本实施方式的模块31是文本文件。但模块31例如也可以是MICROSOFT EXCEL(商标)的工作表。在模块31是工作表的情况下,比较单元23例如能由EXCEL宏来实现。本实施方式的行310由连续编号(行识别)311和语句312构成。连续编号311用于确定行310并判断行310的排列顺序。连续编号311不仅包含数字,还可以包含字符或记号。在语句312中记述了语句(例如数据定义语句、执行语句、注释语句)。在语句312可以记录1个完结的语句整体。在语句312中也可以记述1个语句的一部分。例如可以将MOVE语句分为2个行310的语句312来记述记述。
如图3所示那样,本实施方式的层级结构36由m个(m≥1)行360构成。本实施方式的层级结构36是MICROSOFT EXCEL(商标)的工作表。但层级结构36例如可以是文本文件。层级结构36通过比较单元23解析模块31的层级结构而作成,和模块31建立关联存储。具体地,例如层级结构36的文件名和对应的模块31的文件名相同。或者,相互对应的模块31以及层级结构36是同一工作簿的不同工作表。
本实施方式的行360由连续编号(行识别)361、和层级的深度362构成。在连续编号361中设定对应的模块31的行310的连续编号311。在层级的深度362中设定与连续编号361(即连续编号311)对应的语句312的层级的深度。即,层级结构36具有基于语句312的层级化的层级的深度362。
例如参考图6所例示的模块31,从连续编号311为”0001”的ACCEPT语句到连续编号311为”0004”的ACCEPT语句的语句312的层级的深度是1。连续编号311为”0005”的IF语句的层级的深度也是1。连续编号311为”0006”的THEN短语的层级的深度是2。如从以上的说明理解的那样,模块31的排头的语句312的层级的深度362是1。另外,在依次参考语句312时,每当出现THEN短语,层级的深度362就递增(+1)。另外,如从连续编号311为”0014”、”0017”、”0020”的语句312的层级的深度362理解的那样,每当出现END-IF,层级的深度362就递减(-1)。
如上述那样,根据本实施方式,层级的深度362是数值。但是,层级的深度362只要能比较层级结构中的层级的深度即可,也可以不是数值。进而,只要设计成通过THEN短语的检测而更新的层级的深度362通过对应的END-IF的检测而返回更新前的值即足够。层级深度可以仅对记述了执行语句的行赋予。进而,层级深度也可以仅对IF语句的排头行以及结束行、和记述了THEN短语或ELSE短语的行赋予。
以下参考图6到图8所示的示例并使用图5来详细说明本实施方式的装置10的功能以及动作。首先,以作为条件语句仅IF语句包含在模块31中的情况(参考图6以及图7)为例来进行说明。接下来说明在模块31包含IF语句以外的条件语句的示例(参考图8)。
如图5所示那样,本实施方式的比较单元23在通过例如从输入装置40输入的起动指示而起动后,取得用于确定模块31当中的第1模块31的第1模块名、以及用于确定第2模块31的第2模块名(S500)。例如第2模块31是对第1模块31进行维护的模块。将第1模块名以及第2模块名各自作为例如起动参数的一部分输入即可。
接下来,比较单元23从存储装置30读入由取得的第1模块名确定的第1模块31(S502)。这时,可以例如仅存储于给定的文件夹的模块31是读入对象。在第1模块31未存储在存储装置30的情况下,比较单元23结束处理(未图示)。
接下来,比较单元23得到第1模块31的各语句312的层级的深度来作成第1层级结构36(S504)。具体地,比较单元23从第1行到最终行依次取得第1模块31的行310,对各个行310赋予层级的深度。这时,比较单元23将第1行的层级的深度设为1,每当检测到IF语句的THEN短语,就使层级的深度递增。另一方面,比较单元23每当检测到IF语句的END-IF(即IF语句的结束),就使层级的深度递减。在能省略THEN短语或END-IF的记述的情况下,解析IF语句中的语句的排列等来设定层级深度即可。比较单元23将行310的连续编号311和上述那样得到的层级的深度组合来作成层级结构36。
参考图6的示例,比较单元23对第1模块31的排头的执行语句(即连续编号311为”0001”的语句312)到最后的执行语句(即连续编号311为”0020”的语句312)的语句312赋予层级的深度362。比较单元23将连续编号311和层级的深度362组合来作成第1层级结构36。
接下来如图5所示那样,和第1模块31同样,比较单元23从存储装置30读入由所取得的第2模块名确定的第2模块31(S506)。
接下来,和第1模块31同样,比较单元23得到第2模块31的各语句312的层级的深度,作成第2的层级结构36(S508)。
参考图7的示例,比较单元23对第2模块31的排头的执行语句(即连续编号311为”0001”的语句312)到最后的执行语句的语句312(即连续编号311为”0014”的语句312)赋予层级的深度362。比较单元23将连续编号311和层级的深度362组合来作成第2的层级结构36。
如图5所示那样,本实施方式的比较单元23将作成的第1层级结构36以及第2的层级结构36写入到存储装置30(S510)。但也可以将第1层级结构36以及第2的层级结构36仅存储到装置主体20的主存储装置(未图示)。换言之,层级结构36可以不存储在存储装置30而存储在主存储装置(未图示)。
接下来,比较单元23对第1层级结构36和第2的层级结构36进行比较(S512)。例如比较单元23从第1行起对第1层级结构36的层级的深度362和第2的层级结构36的层级的深度362依次进行比较,判定层级的深度362的变化是否一致。
参考图6以及图7所例示的第1层级结构36以及第2的层级结构36,第1层级结构36(参考图6)中的层级的深度362除去不变化的部位以外,按照1、2、3、4、3、2、1的顺序变化。另一方面,第2的层级结构36(参考图7)中的层级的深度362除去不变化的部位以外,按照1、2、3、2、1的顺序变化。因此,第1层级结构36的层级的深度362的变化和第2的层级结构36的层级的深度362的变化不一致。在该情况下,比较单元23作成表示第1模块31的第1层级结构36和第2模块31的第2的层级结构36不一致的消息。另一方面,在假设第2的层级结构36的层级的深度362按照1、2、3、4、3、2、1的顺序变化的情况下,第1层级结构36的层级的深度362的变化和第2的层级结构36的层级的深度362的变化一致。在该情况下,比较单元23作成表示第1模块31的第1层级结构36和第2模块31的第2的层级结构36一致的消息。
即,比较单元23作成第1层级结构36和第2的层级结构36的比较结果(消息)(图5的S512)。本实施方式的比较单元23将作成的消息显示在显示装置50(S512)。
第1层级结构36以及第2的层级结构36也可以用和本实施方式不同的方法比较。例如如从图6以及图7理解的那样,可以仅对IF语句、THEN短语、ELSE短语以及END-IF作成连续编号361以及层级的深度362(参考图6以及图7中用圆圈包围层级的深度362的部位)。在该情况下,通过将第1层级结构36的层级的深度362和第2的层级结构36的层级的深度362从第1行起依次进行比较,能对第1层级结构36和第2的层级结构36进行比较。
另外,如从图8理解的那样,也可以在第1模块31以及第2模块31当中的至少一方中包含IF语句以外的条件语句。例如在包含EVALUATE语句的情况下,比较单元23在检测到EVALUATE语句的最初的WHEN短语时更新层级的深度,在检测到与EVALUATE语句对应的END-EVALUATE时将层级的深度返回到更新前即可。对IF语句、EVALUATE语句以外的条件语句也能同样地进行处理。如容易地理解的那样,作成层级结构36(第1层级结构36以及第2的层级结构36)后的比较单元23的功能、动作和在模块31中作为条件语句仅包含IF语句的情况相同。
如前述那样,本实施方式的比较单元23不仅在第1层级结构36与第2的层级结构36不一致的情况下作成消息,在一致的情况下也作成消息。但是,比较单元23也可以仅在第1层级结构36与第2的层级结构36一致的情况以及不一致的情况当中的一方的情况下作成消息。另外,比较单元23所作成的消息也可以不仅表示第1模块31的第1层级结构36与第2模块31的第2的层级结构36是否一致,还表示第1层级结构36与第2的层级结构36的相异部位。这种情况下,也可以如以下说明的那样,比较单元23取代作成层级结构36而作成层级结构36a(图4参考)。
如图4所示那样,层级结构36a由ma个(ma≥1)的行360a构成。层级结构36a和层级结构36同样,都是通过比较单元23解析模块31的层级结构来作成,和模块31建立关联地存储。
与所对应的模块31的条件语句对应地分别作成层级结构36a的行360a。例如参考图6的示例,第1模块31的条件语句(IF语句)记述在连续编号311为”0005”、”0007”以及”0009”的3个行310。由此如图9的上段所示那样,第1模块31的第1层级结构36a具有3个行360a。另一方面,参考图7的示例,第2模块31的条件语句(IF语句)记述在连续编号311为”0004”以及”0006”的2个行310。由此如图9的下段所示那样,第2模块31的第2的层级结构36a具有2个行360a。
如图4所示那样,行360a由连续编号(行识别)361、层级型式(pattern)363、和结束行(连续编号)364构成。在连续编号361设定对应的模块31的连续编号311。在结束行364设定记载于连续编号361(连续编号311)的行310的条件语句的结束部位(例如记述了与IF语句对应的END-IF的行310)的连续编号311。在层级型式363如以下说明的那样,设定能确定针对从连续编号361到结束行364的范围的层级结构的数据。
例如参考图6的示例以及图9的上段的示例,记述在连续编号311为”0005”的行310的最初的IF语句在连续编号311为”0020”的行310结束。因此,在第1层级结构36a的第1行的连续编号361以及结束行364分别设定”0005”以及”0020”。另外在该情况下,比较单元23将记述在连续编号311为”0005”的行310到连续编号311为”0020”的行310之间的IF语句、THEN短语、ELSE短语以及END-IF的层级的深度连结,来作成压缩前的层级型式(”1 2 2 3 3 4 43 3 2 2 1”)。接下来,比较单元23将压缩前的层级型式内的连续的同一层级的深度压缩成1个来作成压缩后的层级型式363(”1 2 3 4 3 2 1”)。比较单元23对记述在连续编号311为”0007”的行310的IF语句、以及记述在连续编号311为”0009”的行310的IF语句也同样作成压缩后的层级型式363。如从以上的说明理解的那样,比较单元23得到第1模块31的条件语句的各自的连续编号361、结束行364以及层级型式363,作成第1层级结构36a(参考图5的S504)。
同样地,如从图7的示例以及图9的下段的示例理解的那样,比较单元23得到第2模块31的条件语句的各自的连续编号361、结束行364以及层级型式363,作成第2的层级结构36a(图5的S508参考)。
本变形例的比较单元23将上述那样作成的第1层级结构36a和第2的层级结构36a进行比较,显示比较结果(图5的S512)。例如,比较单元23将第1层级结构36a的层级型式363、和第2的层级结构36a的层级型式363依次进行比较。这时,比较单元23也可以仅比较层级的深度以1开头的层级型式363。例如参考图9的示例,对第1层级结构36a当中的连续编号361为”0005”的层级型式363、和第2的层级结构36a当中的连续编号361为”0004”的层级型式363进行比较即可。
根据上述的变形例,在第1层级结构36a(即第1模块31)的层级型式363与第2的层级结构36a(即第2模块31)的层级型式363不一致的情况下,能将不一致的部位和表示不一致的消息以其显示在显示装置50。具体地,例如将与不一致的层级型式363分别对应的连续编号311以及结束行364显示在显示装置50即可。
比较单元23也可以不仅比较层级的深度以1开头的层级型式363,还比较全部层级型式363。在该情况下,能在更窄的范围内确定第1模块31与第2模块31的不一致的部位。
如上述那样,本实施方式(包括变形例)的比较单元23将消息显示在显示装置50。但比较单元23也可以将消息显示在显示装置50并存储在存储单元30。进而,比较单元23也可以不使消息显示在显示装置50而将其存储在存储单元30。进而比较单元23也可以将消息发送给其他装置或单元。
本实施方式的比较单元23除了上述的变形例以外,还能如以下说明的那样进行各种变形。
例如也可以让第1模块31以及第2模块31当中的至少一方是连结多个模块31而成的模块。例如可以将多个模块31单纯地从各自的开始行到结束行为止进行连结,来做出第1模块31或第2模块31。如此一来,能汇总由多个模块31构成的1个程序整体来进行比较。多个模块31还能如以下说明的第2的实施方式那样进行连结。
(第2的实施方式)
如图10所示那样,本发明的第2的实施方式的比较装置(装置)10'具备:装置主体20'、存储装置(存储单元)30'、输入装置40、和显示装置50。装置10'和第1实施方式的装置10同样,对由以程序语言记述的1个以上的语句分别构成的2个模块(源程序)进行比较。第2的实施方式的程序语言、模块、输入装置40以及显示装置50和第1实施方式同样地分别构成。
如图10所示那样,存储装置30'是和存储装置30同样的磁盘装置。在存储装置30'和第1实施方式同样地存储2个以上的模块31。另外,在存储装置30'存储2个以上的二次模块(模块)32。本实施方式的二次模块32将1个模块31变换而作成,或者将2个以上的模块31连结并进行变换而作成。
装置主体20'和装置主体20相同,例如是PC的主体。装置主体20'具备CPU、主存储装置等(未图示)。和第1实施方式同样,存储装置30'和主存储装置作为本实施方式中的能读入以及写入的存储单元分别发挥功能。作为以后的说明中的存储单元而例示存储装置30'。
在本实施方式的存储装置30'存储变换程序、加工程序和比较程序(未图示)。将上述的程序载入到主存储装置,由CPU执行,由此计算机作为变换单元21、加工单元22、以及比较单元23'分别发挥功能。即,上述的程序使计算机作为对由以程序语言记述的1个以上的语句分别构成的2个模块进行比较的装置10'而发挥功能。换言之,本实施方式的装置10'的装置主体20'具备:变换单元21、加工单元22、和比较单元23'。
本实施方式的变换单元21将存储在存储装置30'的模块31当中的给定的模块31变换成二次模块32并存储在存储装置30'。加工单元22对存储在存储装置30'的二次模块32(第1模块32以及/或者第2模块32)进行加工。比较单元23'和第1实施方式的比较单元23同样,对存储在存储装置30'的第1模块32和第2模块32进行比较。但本实施方式的比较单元23'不是比较2个模块31,而使对从2个模块31分别作成的2个二次模块32(第1模块32以及第2模块32进行比较)。
如图11所例示的那样,在存储装置30'中例如存储模块名为XXX的模块31(XXX模块)、模块名为AAA的模块31(AAA模块)、模块名为BBB的模块31(BBB模块)、和模块名为CCC的模块31(CCC模块)。模块31分别由连续编号311和语句312所构成的多个行310构成。以下参考该示例来更具体地说明模块31的结构。
XXX模块是主模块(即成为处理的起点的模块)。XXX模块具有分别记述了用于用模块名确定并调用AAA模块和BBB模块的CALL语句的行310。AAA模块具有记述了调用CCC模块的CALL语句的行310。
图11所例示的模块31分别由1个以上的节构成。例如XXX模块具有主节(即模块中的成为处理的起点的主要的处理单位)、和从属的节(从属的处理单位)。主节由记述了”PROCEDURE DIVISION.”的行310的下一行310到记述了”STOP RUN.”的行310为止的行310构成。从属的节(子节)当中的1个由记述了”AAA-SUB SECTION.”的行310到记述了”EXIT.”的行310为止的行310构成。上述的子节的节名(处理单位名)是AAA-SUB。主节具有用节名确定并执行AAA-SUB节的行310。更具体地,主节具有记述了”PERFORM AAA-SUB.”的行310。
图11所例示的节的几个,具备记述了条件语句的行310。例如XXX模块的主节具备:记述了具有5个WHEN短语的EVALUATE语句的行310、和记述了具有THEN以及ELSE的IF语句的行310。CCC模块的主节具备在IF语句的ELSE中进一步记述了IF语句的行310,由此进行基于条件语句的语句312的层级化。
如图12所示那样,本实施方式的二次模块32由多个二次行(行)320构成。本实施方式的二次模块32是MICROSOFT EXCEL(商标)的工作表。但二次模块32例如也可以是文本文件。本实施方式的行320由模块识别321、行编号322、层级结构323、连续编号(行识别)326、和二次语句327构成。
通过从1个以上的模块31收集记述了执行语句等的行310并进行加工,来生成各个二次模块32。本实施方式的二次模块32由变换单元21生成,被加工单元22加工。加工过的二次模块32被比较单元23'参考。
如图12所例示的那样,本实施方式的二次模块32例如是收集XXX模块、AAA模块、BBB模块以及CCC模块的PROCEDURE DIVISION的行310并进行加工的产物。
如从图11以及图12理解的那样,记述在行310的语句312的PERFORM语句(例如图11的”PERFORM PGMAAAP-PROC”)在行320的二次语句327中被注释化。另外,将由PERFORM语句执行的PGMAAAP-PROC节的语句312展开为行320的二次语句327。在行320的二次语句327中,将记述于行310的语句312的CALL语句注释化(即,变更为注释语句)。将由CALL语句调用的AAA模块的PROCEDURE DIVISION的语句312展开为行320的二次语句327(即、展开、并生成行320的二次语句327)。进而,将用CALL语句从AAA模块调用的CCC模块的PROCEDURE DIVISION的语句312展开为行320的二次语句327。
另外,记述于语句312的条件语句当中的IF语句以外的条件语句(本实施方式中为EVALUATE语句)在二次语句327中被变换成IF语句。例如将分别记述了”EVALUATE WK-A-O”、”WHEN CS-1”、”MOVE CS-1TO WK-B-I”的3个语句312,变换成分别记述了”*#E EVALUATEWK-A-O”(注释语句)、”*#E WHEN CS-1”(注释语句)、”IF(WK-A-O=CS-1)”、”THEN”、”MOVECS-1TO WK-B-I”的5个二次语句327(参考被图12的虚线A包围的部位)。根据本实施方式,除了上述的变换以外,还生成用于弥补IF语句中的THEN、ELSE以及END IF的欠缺的二次语句327。另外,将否定的条件式变换成肯定的条件式。进而,将具有以AND或OR连结的条件式的IF语句分解成多个IF语句,变换成具有仅用1个逻辑运算符评价2个评价对象操作数间的关系的单纯的二次条件式的IF语句。但也可以不进行上述的变换的一部分(例如以AND或OR连结的条件式的分解)。
进而,将拆写在多个语句312的执行语句(例如MOVE语句)汇总成1个二次语句327。即,基于模块31的行310来生成二次模块32的各个行320。更具体地,通过直接复制语句312、或对语句312进行加工以及/或者展开,来生成二次语句327。
本实施方式的模块识别321表示各个行320是基于哪个模块31的行。更具体地,在模块识别321设定模块名(例如XXX)。但也可以取代模块名而设定能唯一识别模块31的编号等。
在连续编号326,在二次语句327是语句312的复制的行320中,设定复制源的行310的连续编号311。换言之,对与行310一对一对应的行320(例如将语句312注释化的二次语句327的行320),在连续编号326设定对应的行310的连续编号311。另一方面,在生成的(追加的)行320的连续编号326,设定能识别是所生成的行320的识别符(例如记号的组合)。如此一来,能任意地将行320和行310建立对应。
在本实施方式的行编号322,按照行320的排列顺序设定从1开始的从头到尾编号。但行编号322只要能比较行编号322的大小关系,则也可以不是从头到尾编号。例如行编号322可以是字符或记号的组合。
本实施方式的层级结构323由分支层级324和层级的深度325构成。分支层级324为了识别基于条件语句的层级而使用。本实施方式的分支层级324使用1作为第1行的行320中的起始值而设定。换言之,第1行的行320的分支层级324为1。分支层级324在IF语句的记述了THEN的行320被变更为1.1,在记述了ELSE的行320被变更为1.2。分支层级324从IF语句的记述了END IF的行320的下一行起回到1。若一般化,则在记述了THEN的行320,在之前紧挨的行320的分支层级324的末尾加上「.1」,在记述了ELSE的行320,在之前紧挨的行320的分支层级324的末尾将「.1」变更为「.2」,在记述了END IF的行320的下一行,删除记述了ENDIF的行320的分支层级324的末尾「.2」。除去上述的情况以外,对分支层级324设定和之前紧挨的行320同一值。
本实施方式的层级的深度325和分支层级324同样,使用1作为第1行的行320中的起始值而设定。换言之,第1行的行320的层级的深度325为1。层级的深度325在IF语句的记述了THEN的行320被变更为1.1,从记述了END IF的行320的下一行起回到1。进而,在之后的IF语句的记述了THEN的行320被变更为1.2,从记述了END IF的行320的下一行起回到1。若一般化,则层级的深度325将1作为起始值,在记述了THEN的行320在末尾加上成为「.q」(q为1个以上的整数)的位,在记述了END IF的行320的下一行删除末尾的成为「.q」的位。「.q」中的q的值关于各个位以1为起始值。详细地,第1位的「.q」(例如1.2的「.2」)中的q的值以1为起始值,每当进行附加就递增。另一方面,第2位以后的「.q」(例如1.2.1的「.1」)中的q的值在除了该位以外的层级的深度325为同一值的行320连续的范围内以1为起始值,每当在该连续的范围进行附加就递增。
行320除了以上说明的项目以外还能具备各种项目。例如,在行320具备对应的行310的节名的情况下,能更容易地掌握行320与行310的对应。
以下详细说明本实施方式的装置10'的功能以及动作。
如从图13理解的那样,本实施方式的变换单元21具有:控制参数取得功能(S1300)、读入功能(S1302、S1304)、变换功能(S1306~S1312)、和写入功能(S1314)。控制参数取得功能是取得展开控制参数的功能。读入功能是从存储装置30'读入模块31当中的设为处理对象的对象模块31的功能。变换功能是将对象模块31变换成二次模块32的功能。写入功能是将二次模块32存储在存储装置30'的功能。
更具体地,如图13所示那样,若变换单元21通过例如从输入装置40输入的起动指示而起动,则取得例如作为起动指示的一部分而输入的展开控制参数(S1300)。能使本实施方式的展开控制参数中包含展开指示。展开指示,指示将记述于执行对象的节或调用对象的模块31的语句312的语句的展开仅限制在初次。
接下来,变换单元21取得用于确定对象模块31的对象模块名(S1302)。对象模块名能用和展开控制参数同样的方法输入。变换单元21从存储装置30'读入用取得的对象模块名确定的对象模块31(S1304)。这时,例如可以仅存储于给定的文件夹的模块31是读入对象。在对象模块31未存储在存储装置30'的情况下,变换单元21结束处理(未图示)。
接下来,变换单元21取得对象模块31的处理开始部位的语句312(S1306)。本实施方式的处理开始部位是主节的排头。变换单元21对取得的语句312进行二次语句输出处理(S1308)。接下来,变换单元21判定是否将处理结束部位的语句312处理完毕(S1310)。本实施方式的处理结束部位是主节的末尾。在处理结束的情况下(S1310中“是”的情况下),变换单元21将作成的二次模块32写入到存储装置30'(S1314),结束处理。另一方面,在处理未结束的情况下(S1310中“否”的情况下),变换单元21取得接下来处理的语句312(后续的行310的语句312)(S1312),对取得的语句312进行二次语句输出处理(S1308)。
图14是更详细表示图13所示的变换单元21的处理(功能)当中的二次语句输出处理(S1308)的流程图。如图14所示那样,变换单元21在二次语句输出处理中输出语句312作为二次语句327(S1400)。更具体地,根据本实施方式,将记述于语句312的执行语句等复制在工作表的给定的行、列。这时,如前述那样,进行使PERFORM语句成为注释语句等的加工。进而,变换单元21在模块识别321、行编号322、和连续编号326设定前述那样的值。
接下来,变换单元21判定在语句312是否记述了条件语句(S1402)。在语句312中所记述的执行语句是条件语句的情况下(S1402“是”的情况下),变换单元21进行如前述那样将IF语句以外的条件语句变换成IF语句等的处理。更具体地,变换单元21基于条件语句的条件式生成二次语句之一的记述了二次条件语句(IF语句)的二次语句327,用二次条件语句将二次语句327层级化并输出到二次模块(S1404),结束二次语句输出处理。
在记述于语句312的执行语句(即对象语句)不是条件语句的情况下(在S1402“否”的情况下),变换单元21判定为对象语句是处理单位执行语句(PERFORM语句)(S1406)。在对象语句是处理单位执行语句的情况下(S1406“是”的情况下),变换单元21取得执行对象的处理单位的处理开始部位的语句312。在本实施方式中,处理单位的处理开始部位是节的排头。
在对象语句不是处理单位执行语句的情况下(S1406“否”的情况下),变换单元21判定对象语句是否是模块调用语句(根据本实施方式为CALL语句)(S1410)。在对象语句是模块调用语句的情况下(在S1410“是”的情况下),变换单元21从存储装置30'读入用CALL语句确定的调用对象的模块31(S1412),取得调用对象的模块31的处理开始部位的语句312(S1414)。根据本实施方式,调用对象的模块31的处理开始部位是该模块31的主节的排头。在对象语句不是模块调用语句的情况下(S1410“否”的情况下),变换单元21结束二次语句输出处理。
变换单元21对执行对象的节的语句312或调用对象的模块31的语句312递归地进行二次语句输出处理(S1416)。接下来,变换单元21判定是否将处理结束部位的语句312作为处理完毕(S1418)。本实施方式的处理结束部位关于执行对象的节是该节的末尾,关于调用对象的模块31是主节的末尾。在处理结束的情况下(S1418“是”的情况下),变换单元21结束二次语句输出处理。另一方面,在处理未结束的情况下(S1418“否”的情况下),变换单元21取得接下来处理的语句312(后续的行310的语句312)(S1420),对取得的语句312递归地进行二次语句输出处理(S1416)。
变换单元21对递归的(执行自己自身的)PERFORM语句,不进行执行对象的节的语句312的展开。同样地,变换单元21对递归的(调用自己自身的)CALL语句不进行调用对象的模块31的语句312的展开。进而,变换单元21在展开控制参数中指定了展开指示的情况下,对执行与已经进行了二次语句输出处理的节节名相同的节的PERFORM语句,不进行二次语句输出处理(S1406)。同样地,变换单元21在展开控制参数中指定了展开指示的情况下,对调用与已经进行了二次语句输出处理的模块31模块名相同的模块3的CALL语句,不进行二次语句输出处理(S1410)。
如从以上的说明理解的那样,变换单元21的变换功能将记述于对象模块31的给定的处理开始部位到给定的处理结束部位为止的各个语句312作为二次语句327依次输出给二次模块。进而,变换单元21的变换功能在语句312是处理单位执行语句或模块调用语句的情况下,通过将记述于执行对象的处理单位或调用对象的模块31的语句312展开来生成二次语句327,并输出给二次模块32。进而,变换单元21的变换功能,对展开的语句312中的处理单位执行语句或模块调用语句也进一步进行展开(即、递归地进行展开)。因此,能将分散在大量的处理单位或模块31的功能拉拽到对象模块31的主节而集中。换言之,能将1个程序的功能集中在1个二次模块32。
如从以上的说明理解的那样,本实施方式的变换单元21的变换功能在展开控制参数中指定了展开指示的情况下,对同一处理单位,仅进行初次的1次记述于执行对象的处理单位的语句312的展开(即,对同一处理单位仅进行1次展开),对同一模块31仅进行初次的1次记述于调用对象的模块31的语句312的展开(即,对同一模块31仅进行1次的展开)。但变换单元21的变换功能,也可以在未指定展开指示的情况下,对同一处理单位或同一模块31仅进行1次的展开。另外,变换单元21的变换功能,也可以不管是否指定了展开指示都对同一处理单位或同一模块31仅进行1次的展开。进而,变换单元21的变换功能也可以不管是否指定了展开指示,都对同一处理单位或同一模块31反复进行展开。
如以上说明的那样,通过变换单元21将由二次语句327构成的二次模块32存储在存储装置30'。
如从图15理解的那样,本实施方式的加工单元22具有:读入功能(S1500、S1502)、层级结构附加功能(S1506)、和写入功能(S1510)。读入功能是从存储装置30'读入处理对象的二次模块32的功能。层级结构附加功能是对二次模块32的二次语句327的至少一部分附加层级结构323的功能。写入功能是将由附加了层级结构323的二次语句327构成的二次模块32存储在存储装置30'的功能。
更具体地,如图15所示那样,加工单元22若例如和变换单元21同样地被起动,则取得用于确定处理对象的二次模块32的二次模块名(S1500)。加工单元22从存储装置30'读入用取得的二次模块名确定的二次模块32(S1502)。在处理对象的二次模块32未存储在存储装置30的情况下,加工单元22结束处理(未图示)。
接下来,加工单元22取得处理对象的二次模块32的处理开始部位的二次语句327(S1504)。本实施方式的处理开始部位是二次模块32的排头。
加工单元22对取得的二次语句327附加层级结构323(S1506)。更具体地,本实施方式的加工单元22,在记录了处理对象的二次模块32的工作表(即对象工作表)中,在与行320的层级结构323对应的行、列设定前述那样的分支层级324和层级的深度325。
接下来,加工单元22判定是否将处理结束部位的二次语句327作为处理完毕(S1508)。本实施方式的处理结束部位是二次模块32的末尾。在处理结束的情况(S1508“是”的情况下),加工单元22将加工过的二次模块32写入到存储装置30'(S1510),并结束处理。另一方面,在处理未结束的情况下(S1508“否”的情况下),加工单元22取得接下来处理的二次语句327(后续的行320的二次语句327)(S1512),对取得的二次语句327进行层级结构323的附加(S1506)。
如以上说明的那样,通过加工单元22将由附加了层级结构323的二次语句327构成的二次模块32存储到存储装置30'。如从以上的说明理解的那样,还能让变换单元21具备加工单元22的功能。这种情况下,装置主体20'也可以不具备加工单元22。
本实施方式的比较单元23'具备和第1实施方式的比较单元23同样的功能。以下以和比较单元23不同的功能为中心,参考图17所示的示例,使用图16来进行说明。
比较单元23'若和比较单元23同样地被起动,则取得用于确定二次模块32当中的第1模块32的第1模块名、以及用于确定第2模块32的第2模块名(S1600)。例如第1模块32是将给定程序的维护前的模块31连结的二次模块32,第2模块32是将给定程序的维护后的模块31连结的二次模块32。
接下来,比较单元23'从存储装置30读入用取得的第1模块名以及第2模块名分别确定的第1模块32以及第2模块32(S1602、S1604)。
如图12(参考被虚线A包围的部位)以及图17的上段所例示的那样,在维护前的XXX模块记述包含5个WHEN短语的EVALUATE语句。为此,维护前的第1模块32包含从该EVALUATE语句生成的4个IF语句(参考图17的上段)。
如从图17理解的那样,通过维护,删除维护前的XXX模块的5个WHEN短语当中的第5个WHEN短语。由此维护后的第2模块32包含从该EVALUATE语句生成的3个IF语句(参考图17的下段)。
如图16所示那样,比较单元23'在读入第1模块32以及第2模块32后,对第1模块32的层级结构323和第2模块32的层级结构323进行比较(S1606)。根据本实施方式,比较单元23'从第1行起对第1模块32的层级的深度325和第2模块32的层级的深度325依次进行比较,判定层级的深度325的变化是否一致。
参考图17所例示的第1模块32以及第2模块32,第2模块32中的层级的深度325直到行编号322为”60”的行320为止,都与第1模块32中的层级的深度325相同。另一方面,第2模块32的行编号322为”61”的行320的层级的深度325(”1.2.1.1”)与第1模块32的行编号322为”61”的行320的层级的深度325(”1.2.1.1.1”)不同。为此,比较单元23'生成表示第1模块32的层级结构323与第2模块32的层级结构323不一致的消息。即,比较单元23'和比较单元23同样地作成第1模块32的层级结构323和第2模块32的层级结构323的比较结果(消息)。本实施方式的比较单元23'将作成的消息显示在显示装置50。
如从以上的说明理解的那样,本实施方式的比较单元23'能和第1实施方式的比较单元23同样地比较2个模块(第1模块32以及第2模块32)的层级结构。进而,根据本实施方式,在第1模块32以及第2模块32各自按照处理顺序连结关联的多个模块31。因此能汇总比较维护前后的程序整体。
例如在伴随运行时系统等的软件的版本升级来维护模块的情况下,基本上不改变模块的层级结构。另外,在这样的转换中,有时会使用转换工具来维护模块。但是,一般来说,转换工具不能完全合适地维护模块。在这样的情况下,通过比较从维护前后的模块分别作成的第1模块32以及第2模块32的层级结构323,能获知是否合适地进行了维护。
本实施方式中的层级结构323的比较方法能和第1实施方式同样地进行各种变形。例如通过将第1模块32的层级结构323和第2模块32的层级结构323不一致的部位显示在显示装置50,能容易地获知未合适进行维护的部位。
(第3实施方式)
如图18所示那样,本发明的第3实施方式的比较装置(装置)10″具备:装置主体20″、存储装置(存储单元)30″、输入装置40、和显示装置50。本实施方式的存储装置30″是装置主体20″的主存储装置。装置主体20″和第2的实施方式的装置主体20'同样,具备变换单元21、加工单元22和比较单元23'。
装置10″经由通信线路80与文件服务器60能通信地连接。通信线路80例如可以是LAN(Local Area Network,局域网),也可以是因特网。文件服务器60可以具备变换单元21、加工单元22以及比较单元23'当中的至少一者。另外,文件服务器60具备存储装置(存储单元)70。存储装置70能存储模块31和二次模块32。因此,装置10″能从存储装置70读入模块31等,将模块31等写入到存储装置70。
如容易地理解的那样,根据本实施方式,和第1以及第2的实施方式同样地,能比较二次模块32当中的2个模块(第1模块32以及第2模块32)。另外,能由多个装置10″共享比较结果。
对本发明的最佳的实施方式进行了说明,但对本领域技术人员而言,很明显地能在不脱离本发明的精神的范围内将实施方式变形,这样的实施方式属于本发明的范围。
标号的说明
10、10'、10″ 比较装置(装置)
20、20'、20″ 装置主体
21 变换单元
22 加工单元
23、23' 比较单元
30、30'、30″ 存储装置(存储单元)
31 模块(源程序)
310 行
311 连续编号(行识别)
312 语句
32 二次模块(模块)
320 二次行(行)
321 模块识别
322 行编号
323 层级结构
324 分支层级
325 层级的深度
326 连续编号(行识别)
327 二次语句
36、36a 层级结构
360、360a 行
361 连续编号(行识别)
362 层级的深度
363 层级型式
364 结束行(连续编号)
40 输入装置
50 显示装置
60 文件服务器
70 存储装置(存储单元)
80 通信线路
Claims (5)
1.一种源程序比较装置,对由以程序语言记述的1个以上的语句分别构成的2个模块进行比较,
在所述模块中能记述所述语句之一的条件语句,
所述条件语句包含成立时执行语句以及不成立时执行语句之中的一方或双方,
所述成立时执行语句是所述条件语句的条件式成立的情况下执行的所述语句,
所述不成立时执行语句是在所述条件式不成立的情况下执行的所述语句,
所述条件语句当中的至少一者,能在所述成立时执行语句以及所述不成立时执行语句之中的一方或双方进一步包含所述条件语句,由此能进行基于所述条件语句的所述语句的层级化,能确定基于所述语句的所述层级化的所述模块的层级结构,
所述源程序比较装置具备存储单元和比较单元,
在所述存储单元存储2个以上的所述模块,
所述比较单元从所述存储单元取得存储于所述存储单元的所述模块当中的第1模块和第2模块,作成表示所述第1模块的所述层级结构与所述第2模块的所述层级结构是否一致的消息。
2.根据权利要求1所述的源程序比较装置,其中,
所述层级结构具有基于所述语句的所述层级化的层级的深度。
3.根据权利要求1所述的源程序比较装置,其中,
所述第1模块以及所述第2模块当中的至少一方是将多个所述模块连结的模块。
4.根据权利要求1所述的源程序比较装置,其中,
所述源程序比较装置还具备显示装置,
所述比较单元将所述消息显示在所述显示装置。
5.一种存储装置,存储有使计算机作为权利要求1~4的任一项所述的源程序比较装置发挥功能的程序。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/070927 WO2015015622A1 (ja) | 2013-08-01 | 2013-08-01 | 装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105431817A CN105431817A (zh) | 2016-03-23 |
CN105431817B true CN105431817B (zh) | 2019-01-04 |
Family
ID=52431194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380078555.1A Active CN105431817B (zh) | 2013-08-01 | 2013-08-01 | 源程序比较装置以及存储装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9792197B2 (zh) |
JP (1) | JP6008456B2 (zh) |
KR (1) | KR101705254B1 (zh) |
CN (1) | CN105431817B (zh) |
WO (1) | WO2015015622A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10440537B1 (en) * | 2018-12-11 | 2019-10-08 | Vmware, Inc. | Defining automations for enrolled user devices |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261602A (zh) * | 2008-04-08 | 2008-09-10 | 杭州电子科技大学 | 一种基于语法树的程序正确性验证方法 |
CN101398758A (zh) * | 2008-10-30 | 2009-04-01 | 北京航空航天大学 | 一种代码抄袭的检测方法 |
CN101894236A (zh) * | 2010-07-28 | 2010-11-24 | 北京华夏信安科技有限公司 | 基于摘要语法树和语义匹配的软件同源性检测方法及装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04165425A (ja) * | 1990-10-29 | 1992-06-11 | Nippon Telegr & Teleph Corp <Ntt> | 記号列中の入れ子関係抽出方法及びその装置 |
JPH04299459A (ja) * | 1991-03-27 | 1992-10-22 | Nec Corp | データベースアクセスシステム |
JPH05143351A (ja) * | 1991-11-22 | 1993-06-11 | Nec Corp | 原始プログラム比較方式 |
AUPM519694A0 (en) * | 1994-04-19 | 1994-05-12 | Griffith University | Method for testing and debugging computer programs |
JP3262493B2 (ja) * | 1996-04-12 | 2002-03-04 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムのデータ構造を表示する方法、及びデータ構造表示装置 |
JP2000112747A (ja) | 1998-10-01 | 2000-04-21 | Fujitsu Ltd | プログラム資産における非実行文の等価性検証装置 |
US20080320054A1 (en) * | 2003-04-09 | 2008-12-25 | Cindy Howard | Database and Software Conversion System and Method |
US7503035B2 (en) * | 2003-11-25 | 2009-03-10 | Software Analysis And Forensic Engineering Corp. | Software tool for detecting plagiarism in computer source code |
JP2005301859A (ja) | 2004-04-15 | 2005-10-27 | Fujitsu Ltd | コード検索プログラム及びコード検索装置 |
JP2006018693A (ja) * | 2004-07-02 | 2006-01-19 | Fujitsu Ltd | 類似ソースコード抽出プログラム、類似ソースコード抽出装置および類似ソースコード抽出方法 |
JP2007122207A (ja) * | 2005-10-26 | 2007-05-17 | Fujitsu Ltd | プログラム分析プログラム、プログラム分析装置、プログラム分析方法 |
US8127277B2 (en) * | 2007-05-21 | 2012-02-28 | International Business Machines Corporation | Framework for conditionally executing code in an application using conditions in the framework and in the application |
JP5542300B2 (ja) * | 2007-09-28 | 2014-07-09 | 東芝三菱電機産業システム株式会社 | プログラム編集装置 |
KR20100106409A (ko) * | 2007-11-20 | 2010-10-01 | 내셔널 아이씨티 오스트레일리아 리미티드 | 다중 언어 소프트웨어 코드 분석 |
JP2009176108A (ja) | 2008-01-25 | 2009-08-06 | Nec Corp | プログラムソース差分検出装置、プログラムソース差分検出方法及びプログラムソース差分検出プログラム |
US8307010B2 (en) * | 2008-09-26 | 2012-11-06 | Microsoft Corporation | Data feature tracking through hierarchical node sets |
JP4839424B2 (ja) * | 2008-12-15 | 2011-12-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの解析を支援するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム |
CN102292709B (zh) * | 2009-04-28 | 2014-05-21 | 国际商业机器公司 | 用于变换在多线程上工作的程序的程序代码的方法和系统 |
US8578342B2 (en) * | 2009-07-14 | 2013-11-05 | International Business Machines Corporation | Fault detection and localization in dynamic software applications requiring user inputs and persistent states |
WO2011118048A1 (ja) * | 2010-03-25 | 2011-09-29 | 株式会社日立製作所 | プログラム実行方法、計算機システム及びプログラム実行制御プログラム |
TWI467481B (zh) * | 2010-05-31 | 2015-01-01 | Ibm | 層級式程式源碼管理方法、系統及電腦程式產品 |
JP5458065B2 (ja) * | 2011-07-25 | 2014-04-02 | 伸一 石田 | モジュールの構造解析を支援する装置及びプログラム |
US9015680B1 (en) * | 2012-02-24 | 2015-04-21 | Google Inc. | Differential analysis of translation of software for the detection of flaws |
US8899343B2 (en) * | 2012-09-12 | 2014-12-02 | International Business Machines Corporation | Replacing contiguous breakpoints with control words |
US9043757B2 (en) * | 2012-12-13 | 2015-05-26 | Oracle International Corporation | Identifying differences between source codes of different versions of a software when each source code is organized using incorporated files |
-
2013
- 2013-08-01 WO PCT/JP2013/070927 patent/WO2015015622A1/ja active Application Filing
- 2013-08-01 CN CN201380078555.1A patent/CN105431817B/zh active Active
- 2013-08-01 KR KR1020167002657A patent/KR101705254B1/ko active IP Right Grant
- 2013-08-01 JP JP2015529291A patent/JP6008456B2/ja active Active
- 2013-08-01 US US14/905,444 patent/US9792197B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261602A (zh) * | 2008-04-08 | 2008-09-10 | 杭州电子科技大学 | 一种基于语法树的程序正确性验证方法 |
CN101398758A (zh) * | 2008-10-30 | 2009-04-01 | 北京航空航天大学 | 一种代码抄袭的检测方法 |
CN101894236A (zh) * | 2010-07-28 | 2010-11-24 | 北京华夏信安科技有限公司 | 基于摘要语法树和语义匹配的软件同源性检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105431817A (zh) | 2016-03-23 |
JP6008456B2 (ja) | 2016-10-19 |
KR101705254B1 (ko) | 2017-02-09 |
US9792197B2 (en) | 2017-10-17 |
JPWO2015015622A1 (ja) | 2017-03-02 |
KR20160027124A (ko) | 2016-03-09 |
US20160162384A1 (en) | 2016-06-09 |
WO2015015622A1 (ja) | 2015-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10606573B2 (en) | System and method for computer language migration using a re-architecture tool for decomposing a legacy system and recomposing a modernized system | |
CN108509185B (zh) | 用于任意软件逻辑建模的系统和方法 | |
CN101777004B (zh) | 面向服务环境中基于模板实现bpel子流程复用的方法及系统 | |
US8549353B2 (en) | Batch processing error handling modes | |
US9959098B1 (en) | Data processing systems and methods | |
CN104360859B (zh) | 一种可视化的服务开发方法和系统 | |
US8464229B2 (en) | Creation of form-based software application in a graphical user interface (GUI) environment | |
US8438534B2 (en) | Transformation of data between hierarchical data formats | |
EP2343641B1 (en) | Applying rules to data | |
EP2369502A2 (en) | SQL generation | |
US8140894B2 (en) | Transaction regions in graphical computer-implemented methods of processing data | |
CN104133588B (zh) | 一种基于脚本的继电保护装置图形开发方法 | |
EP2357554A1 (en) | Processing collections of data items | |
EP2348401A1 (en) | Transformation of hierarchical data formats using graphical rules | |
Halpin et al. | FORML 2 | |
US20110161934A1 (en) | Generating and monitoring data items | |
CN112100984A (zh) | 一种由ebom到sbom的数据转换方法及系统 | |
CN104169875B (zh) | 结构解析装置以及记录介质 | |
CN105431817B (zh) | 源程序比较装置以及存储装置 | |
Cicchetti et al. | A Solution for Concurrent Versioning of Metamodels and Models. | |
Knublauch | Case Study: Using Protege to Convert the Travel Ontology to UML and OWL. | |
JP2003280956A (ja) | データベースcase装置 | |
Angelo et al. | Rule-based Validation Module on EssenceBoard Method Editor | |
Hongjuan et al. | A framework for workflow process definition transformation based on meta-model | |
Greiner et al. | Evaluating Multi-variant Model-To-Text Transformations Realized by Generic Aspects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |