CN104169875B - 结构解析装置以及记录介质 - Google Patents

结构解析装置以及记录介质 Download PDF

Info

Publication number
CN104169875B
CN104169875B CN201380015262.9A CN201380015262A CN104169875B CN 104169875 B CN104169875 B CN 104169875B CN 201380015262 A CN201380015262 A CN 201380015262A CN 104169875 B CN104169875 B CN 104169875B
Authority
CN
China
Prior art keywords
module
sentence
object range
row
function
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
Application number
CN201380015262.9A
Other languages
English (en)
Other versions
CN104169875A (zh
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.)
I-SYSTEM Co Ltd
Song Qiwu
Original Assignee
I-SYSTEM Co Ltd
Song Qiwu
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 I-SYSTEM Co Ltd, Song Qiwu filed Critical I-SYSTEM Co Ltd
Publication of CN104169875A publication Critical patent/CN104169875A/zh
Application granted granted Critical
Publication of CN104169875B publication Critical patent/CN104169875B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

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

Abstract

结构解析装置具备:存储有模块的存储单元;和进行存储单元所存储的模块之中的给定的对象模块的结构解析的解析单元。解析单元在对象模块的第1对象范围的层级结构和第2对象范围的层级结构相同的情况下,将类似通知信息与第1对象范围以及/或者第2对象范围建立关联地创建。第1对象范围以及第2对象范围是从存储单元获取到的对象模块的对象范围之中相互不同的对象范围。类似通知信息表示在对象模块内存在相互类似的对象范围。

Description

结构解析装置以及记录介质
技术领域
本发明涉及支援由通过程序语言描述的1个以上的语句构成的模块(源程序)的结构解析的装置。
背景技术
在创建程序的情况下,强烈推荐结构化编程。具体而言,例如要求通过组合由比较少数的语句构成的处理单位来创建模块。此外,在模块内,并非使用无条件分支语句(GOTO语句),而被要求具备基于条件语句或循环语句的嵌套结构(即、层级结构)。进而,针对关于多个模块的公共处理,要求模块化。因此,例如程序的合计行数超过100万行这样的大型系统,各自具备由几十的处理单位构成的几千的模块的情形也较为多见。
上述这样的大规模系统在开发后不久,参与开发的负责人、即熟知模块间的关联以及各个模块的结构的人要进行系统的维护的情形较为多见。然而,这样的系统历经几十年一边反复维护一边被使用的情形较为多见。随着时间流逝,参与开发的负责人将不在岗位,从而不知晓模块的结构的人进行系统维护。在这种情况下,起因于已完成结构化编程,必需掌握分散在庞大模块中被描述的功能,从而维护极其困难。即,模块的结构解析变得困难。
为了理解模块整体的功能或者各处理单位的功能,必需掌握基于条件语句的层级结构(以下简单称作“层级结构”。)。然而,大规模的系统中的模块,在大多情况下具有较深的层级结构(例如10层级以上的层级结构)。在这种情况下,掌握层级结构并非易事。因而,例如有时会看漏与进行过维护的地方类似的地方(例如,具有类似的功能的地方),从而没被进行必要的维护。
如根据以上的说明可理解的那样,如果能够容易地掌握层级结构,则能够更容易且更适当地进行系统的维护。进而,通过发现层级结构相同的地方,从而能够防止遗漏对类似的地方的维护。例如,在专利文献1以及专利文献2中公开了用于支援层级结构的掌握的技术。
专利文献1所公开的程序开发支援装置,在显示程序(模块)之际,根据基于IF语句的嵌套结构(层级结构)的深度来变更语句的显示色。由此,程序开发者能够在视觉上掌握层级结构。根据专利文献2所公开的结构化程序编辑装置,在显示程序(模块)之际,能够显示包含表示层级的关键字(例如if或case)的语句,而不显示或者简易显示其他语句。由此,程序开发者能够比较容易地掌握层级结构。
在先技术文献
专利文献
专利文献1:日本特开平7-219756号公报
专利文献2:日本特开2001-154835号公报
发明内容
发明要解决的课题
然而,无论使用专利文献1以及专利文献2所公开的哪种技术,最终程序开发者均必须掌握模块的层级结构。更具体而言,必须执行掌握需要进行维护的地方的层级结构,且从庞大模块之中找到类似的地方这样的困难且费工夫的作业。
因而,本发明的目的在于提供一种在模块中检测具备同一层级结构的地方,由此来支援层级结构的掌握的结构解析装置。
用于解决课题的手段
本发明的一个侧面提供一种结构解析装置,进行由通过程序语言描述的1个以上的语句构成的模块的结构解析。在所述模块中能够描述作为所述语句之一的条件语句。所述条件语句包含成立时执行语句以及/或者不成立时执行语句。所述成立时执行语句是在所述条件语句的条件式成立的情况下被执行的所述语句。所述不成立时执行语句是在所述条件式不成立的情况下被执行的所述语句。所述条件语句之中的至少一个还能够包含所述条件语句作为所述成立时执行语句以及/或者所述不成立时执行语句,由此能够进行基于所述条件语句的所述语句的层级化。关于所述模块中的由连续的所述语句构成的多个对象范围,能够分别确定基于所述层级化的层级结构。所述结构解析装置具备存储单元和解析单元。在所述存储单元中存储有1个以上的所述模块。所述解析单元构成为进行所述存储单元所存储的所述模块之中的给定的对象模块的结构解析。所述解析单元具有获取功能和解析功能。所述获取功能是从所述存储单元获取所述对象模块的功能。所述解析功能是在第1对象范围的所述层级结构和第2对象范围的所述层级结构相同的情况下与所述第1对象范围以及/或者所述第2对象范围建立关联来创建类似通知信息的功能。所述第1对象范围以及所述第2对象范围是获取到的所述对象模块的所述对象范围之中相互不同的所述对象范围。所述类似通知信息表示在所述对象模块内存在相互类似的所述对象范围。
此外,根据本发明的其他侧面,可获得用于使计算机作为所述结构解析装置而发挥功能的程序。
发明效果
根据本发明,在模块包含相互类似的地方(对象范围)的情况下,被创建与对象范围已建立关联的类似通知信息。因此,根据类似通知信息,能够更容易发现相互类似的对象范围。
进而,在连结系统中的多个模块来解析的情况下,能够更容易掌握庞大模块中的类似的对象范围。
参照所添加的附图来研究下述最优实施方式的说明,从而可准确地理解本发明的目的,且可更完全理解其构成。
附图说明
图1是表示基于本发明的第1实施方式的结构解析装置的块构成图。
图2是示意性表示图1的结构解析装置的存储装置中所存储的模块的文件构成的图。
图3是示意性表示图1的存储装置中所存储的层级结构数据的文件构成的图。
图4是表示图1的结构解析装置的解析单元的功能的流程图。
图5是使用一例来表示图4的解析单元所进行的解析过程的前半部分的图。
图6是使用一例来表示图4的解析单元所进行的解析过程的后半部分的图。
图7是使用一例来表示基于图4的解析单元的显示结果的图。
图8是使用其他一例来表示图4的解析单元所进行的解析过程的前半部分的图。
图9是表示基于本发明的第2实施方式的结构解析装置的块构成图。
图10是表示图9的存储装置中所存储的模块的一例的图。
图11是示意性表示图9的存储装置中所存储的二次模块的文件构成的图。
图12是部分地表示图9的二次模块的一例的图。
图13是部分地表示图9的存储装置中所存储的流程图的一例的图。
图14是表示图9的结构解析装置的变换单元的功能的流程图。
图15是更详细地表示图14的变换单元的功能的一部分的流程图。
图16是表示图9的结构解析装置的加工单元的功能的流程图。
图17是部分地表示图9的二次模块的其他一例的图。
图18是表示图9的结构解析装置的流程图创建单元的功能的流程图。
图19是部分地表示根据图17的二次模块所创建的流程图的图。
图20是表示基于本发明的第3实施方式的结构解析装置的系统构成图。
具体实施方式
关于本发明,可由多种多样的变形、各式各样的形态来实现,作为其一例,以下详细地说明附图所示那样的特定的实施方式。附图以及实施方式并非将本发明限定于在此公开的特定形态,而假定将所附的权利要求所明示的范围内完成的所有变形例、均等物、代替例包含在其对象中。
(第1实施方式)
如图1所示,基于本发明的第1实施方式的结构解析装置10具备:装置主体20、存储装置(存储单元)30、输入装置40、以及显示装置50。结构解析装置10进行由通过程序语言描述的1个以上的语句构成的模块(源程序)的结构解析。
基于本实施方式的程序语言为COBOL。然而,本发明也可适用于COBOL以外的程序语言。
基于本实施方式的模块可以通过组合了字符、数字、记号等的模块名来确定。
在模块中能够描述由1个以上的语句构成的处理单位。基于本实施方式的处理单位是COBOL中的节(section)。各个节能够通过节名(处理单位名)来确定。但是,处理单位也可以不是节。例如在程序语言为JAVA(在日本的注册商标)的情况下,处理单位可以是能通过函数名(处理单位名)来确定的函数。
模块能够调用其他模块或者该模块自身。此外,模块的节能够执行其他节或者该节自身。更具体而言,在模块中,作为语句能够描述用于通过节名来确定并执行节的处理单位执行语句、和用于通过模块名来确定并执行模块之一的模块调用语句。根据本实施方式,处理单位执行语句为PERFORM语句,模块调用语句为CALL语句。其他程序语言中的处理单位执行语句以及模块调用语句分别为例如指定了函数名的语句。在模块调用语句为指定了函数名的语句的情况下,通过模块调用语句来执行模块之中的被指定的函数部分(即、模块的一部分)。在此情况下,在模块调用语句中有可能未显式地描述模块名。即,有可能通过函数名来间接性地确定模块名。
进而,在模块中能够描述作为语句之一的条件语句。条件语句具备条件式,可以在条件语句之中描述成立时执行语句以及/或者不成立时执行语句。换言之,条件语句能够包含成立时执行语句以及/或者不成立时执行语句。成立时执行语句是在条件语句的条件式成立的情况下被执行的语句。不成立时执行语句是在条件式不成立的情况下被执行的语句。基于本实施方式的条件语句为IF语句以及EVALUATE语句。在IF语句中,成立时执行语句为在THEN句中被描述的语句,不成立时执行语句为在ELSE句中被描述的语句。同样地,在EVALUATE语句中,成立时执行语句为在WHEN句中被描述的语句。
基于本实施方式的条件语句之中的至少一个还能够包含条件语句作为成立时执行语句以及/或者不成立时执行语句,由此能够进行基于条件语句的语句的层级化。例如,作为IF语句的成立时执行语句,还能够描述IF语句。换言之,模块由能通过条件语句来层级化的1个以上的语句构成,由此具有给定的层级结构(即、基于条件语句的层级结构)。为了易于理解,关于模块中的由连续的语句构成的多个地方(对象范围),能够分别确定基于层级化的层级结构。
如图1所示,存储装置30例如为磁盘装置。存储装置30能够存储例如通过文件夹(未图示)被层级化的各式各样的文件。存储装置30被连接成可与装置主体20进行通信,能够按照来自装置主体20的指示来进行文件的读入(获取)、写入(存储)。在基于本实施方式的存储装置30中存储有1个以上的模块31。此外,在存储装置30中能够存储层级结构数据36。
模块31例如使用编程工具(未图示)来创建。各个模块31可以为一个文件。多个模块31可以作为一个文件被存储。层级结构数据36分别存储模块31所含的1个以上的对象范围的层级结构。根据本实施方式,关于各个模块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之中的给定的对象模块31的结构解析的解析单元27(结构解析装置10)而发挥功能。换言之,基于本实施方式的结构解析装置10的装置主体20具备解析单元27。
如图2所示,基于本实施方式的模块31由n个(n≥1)的行310构成。基于本实施方式的模块31为文本文件。但是,模块31例如可以为MICROSOFT EXCEL(注册商标)的工作表。在模块31为工作表的情况下,解析单元27例如能够通过EXCEL宏来实现。行310至少由连续编号(行识别)311和语句312构成。连续编号311用于确定行310并且判断行310的排列顺序。连续编号311不仅是数字还可以包含字符、记号。在语句312中描述了语句(例如,数据定义语句、执行语句、注释语句)。在语句312中也可以描述一个已完结的语句整体。在语句312中也可以描述一个语句的一部分。例如,MOVE语句被分成两个的行310的语句312来描述。
如图3所示,基于本实施方式的层级结构数据36由m个(m≥1)的行360构成。基于本实施方式的层级结构数据36为MICROSOFT EXCEL(注册商标)的工作表。但是,层级结构数据36例如也可以是文本文件。层级结构数据36通过解析单元27解析模块31的层级结构而被创建的,与模块31建立关联地进行存储。具体而言,例如层级结构数据36的文件名与所对应的模块31的文件名相同。或者,相互对应的模块31以及层级结构数据36也可以是同一工作簿的不同工作表。
层级结构数据36的行360由连续编号(行识别)361、层级模式362、结束行(连续编号)363、和类似通知信息364构成。基于本实施方式的类似通知信息364具备类似行(连续编号)364n。在连续编号361中设定有所对应的模块31的连续编号311。在结束行363中设定有模块31中的自连续编号361起开始的对象范围(即、成为进行层级结构的解析的对象的范围)结束的行310的连续编号311。在层级模式362中设定有能确定关于连续编号361至结束行363的对象范围的层级结构的数据。在类似通知信息364中设定有表示在模块31内存在相互类似的对象范围的数据。更具体而言,在基于本实施方式的类似行364n中设定有具有与该行360的层级模式362相同的层级模式362的行360的连续编号361。
以下,关于基于本实施方式的结构解析装置10的功能以及动作,参照图5至图8所示的例子,使用图4来详细地说明。首先,以只有IF语句为模块31所含的条件语句的情况(参照图5以及图6)为例来进行说明。其次,关于在模块31中包含IF语句以外的条件语句的示例(参照图8)来进行说明。
如由图4可理解的那样,基于本实施方式的解析单元27具有获取功能(S400、S402)、解析功能(S404~S416)、写入功能(S418)以及显示功能(S420)。获取功能是从存储装置30(或者主存储装置)获取模块31之中设为处理对象的对象模块31的功能。解析功能是解析对象模块31的层级结构的功能。写入功能是将对象模块31和层级结构数据36(因此为类似通知信息364)建立关联而存储至存储装置30的功能。显示功能是将对象模块31和类似通知信息364建立关联而显示至显示装置50的功能。
详细而言,解析单元27通过例如从输入装置40输入的启动指示而被启动,获取用于确定对象模块31的对象模块名(S400)。对象模块名只要作为例如启动指示的一部分来输入即可。解析单元27从存储装置30读入通过获取到的对象模块名所确定的对象模块31(S402)。此时,也可以只有例如给定的文件夹所存储的模块31为读入对象。当对象模块31未存储在存储装置30中的情况下,解析单元27结束处理(未图示)。
其次,解析单元27确定对象模块31的各语句的层级等级(S404)。具体而言,解析单元27从第1行到最终行依次获取对象模块31的行310,对行310分别赋予层级等级。此时,解析单元27将第1行的层级等级设为1,每当检测到IF语句的THEN句时相加层级等级。另一方面,解析单元27每当检测到IF语句的END-IF(即、IF语句的结束)时减去层级等级。另外,在可以省略THEN句、END-IF的描述的情况下,只要解析IF语句中的语句的排列等来进行层级等级的加减法即可。
例如,参照图5所例示的对象模块31,排头的语句312(连续编号311为0001的语句312)的层级等级为1,其次的THEN句的层级等级为2。在上述的示例中,层级等级为数值,解析单元27每当检测到THEN句时使层级等级增1,每当检测到END-IF时使层级等级减1。然而,只要能够比较层级等级的深度,层级等级可以不是数值。进而,设计成通过THEN句的检测而被更新后的层级等级通过对应的END-IF的检测而返回到更新前的值即可。层级等级关于执行语句进行赋予即可。进而,层级等级赋予给IF语句的排头行以及结束行、和描述了THEN句或者ELSE句的行即可。因此,解析单元27关于对象模块31的排头的执行语句至最后的执行语句的范围赋予层级等级即可。
其次,解析单元27提取对象范围(即、设为进行层级结构的解析的对象的范围)(S406)。详细而言,解析单元27关于对象模块31所含的条件语句的每一个来检测开始行以及结束行。解析单元27将检测到的开始行与结束行之间的范围作为对象范围来使用。另一方面,解析单元27在对象模块31中未包含条件语句的情况下、或者在对象模块31中所含的条件语句只有一个的情况下,结束处理(未图示)。如根据以上的说明可理解的那样,根据本实施方式,在对象范围中包含至少一个条件语句。进而,在对象范围中包含对象范围所含的条件语句的各自的开始至结束的整体。但是,对象范围也可以从条件语句之前开始或者从条件语句的中途开始。
参照图5所例示的对象模块31,IF语句(条件语句)从连续编号311为0001、0003、0005、0011以及0014的行310分别开始。此外,IF语句在连续编号311为0020、0010、0008、0018以及0017的行310分别结束。如图6的上部所示的那样,如以上检测到的开始行以及结束行作为对象范围的开始行以及结束行分别被使用。
解析单元27针对提取出的对象范围分别创建层级模式(S406)。具体而言,解析单元27关于条件语句分别连结开始行至结束行的层级等级,来创建层级模式(压缩前)。进而,解析单元27压缩在层级模式(压缩前)中连续的同一层级等级来创建层级模式(压缩后)。
参照图5的对象模块31,如图6的上部所示那样,针对例如开始行为0001、结束行为0020的IF语句,依次连结层级等级:1、2、2、3…3、2、2、1(参照图5的层级等级),来创建层级模式(压缩前)。进而,在层级模式(压缩前)中连续的同一层级等级被压缩成一个层级等级,由此来创建层级模式(压缩后)。
如根据以上的说明可理解的那样,本实施方式中的层级等级表示以对象范围的排头的语句作为基准而确定的层级的深度。此外,对象范围中的层级结构能够通过连结了对象范围所含的层级等级的层级模式来识别。
如图6的下部所示,解析单元27将如上述那样检测到的对象范围的开始行、层级模式(压缩后)以及结束行分别设定为层级结构数据36的连续编号361、层级模式362以及结束行363(S406的处理的一部分)。换言之,通过连续编号361、层级模式362以及结束行363而分别确定的1个以上的对象范围被设定为层级结构数据36。此时,层级模式362被变换成表示以对象范围的排头的语句(即、IF语句)作为基准而确定的层级的深度。具体而言,例如”2 34 3 2”被变换成”1 2 3 2 1”。如根据图6的右下部的示意图可理解的那样,如上述那样创建出的层级模式362能够比作山岳地形。在该情况下,被连结成层级模式362的层级等级分别表示将山岳的山脚设为基准的相对高度。
其次,解析单元27将创建出的层级结构数据36的行360按照层级模式362的长度(即、被连结成层级模式362的层级等级的数目)的降序进行排序(S408)。在层级模式362的长度相同的情况下,解析单元27例如按照连续编号361的升序进行排序。在图6的下部例示出排序后的层级结构数据36。参照图6的下部的示例,例如”1 2 3 4 3 2 3 4 3 2 1”的层级模式362的长度为11。由于该层级模式362具有5个层级模式362之中的最大的长度,因此通过排序而配置在层级结构数据36的第1行。
其次,解析单元27选择创建出的层级结构数据36的对象范围(即、对象模块31的对象范围)之中相互不同的两个对象范围(即、第1对象范围和第2对象范围)。解析单元27在第1对象范围的层级结构和第2对象范围的层级结构相同的情况下,将类似通知信息364与第2对象范围建立关联地创建(S410~S416)。更具体而言,解析单元27针对创建出的层级结构数据36的行360,分别判定有无同一层级模式362(S410~S416)。
详细而言,解析单元27首先获取排序后的排头的(第1行的行360的)层级模式362作为第1对象范围的层级模式(S410)。参照图6的下部的示例,获取”1 2 3 4 3 2 3 4 3 21”。
其次,解析单元27判定在层级结构数据36中是否存在与获取到的层级模式362相同的层级模式362(S412)。换言之,解析单元27搜索不同于第1对象范围、且具有与第1对象范围相同的层级模式的第2对象范围。当存在第2对象范围的情况下,解析单元27在第2对象范围的类似通知信息364的类似行364n中设定第1对象范围的连续编号361(S412)。参照图6的下部的示例,由于不存在与”1 2 3 4 3 2 3 4 3 2 1”相同的层级模式362,因此任何行360的类似行364n均未被设定(即、保持初始值不变)。
其次,解析单元27判定是否处理了所有的层级模式362(S414),在处理结束的情况下(S414中“是”的情况下),进行S418的处理。另一方面,当存在未处理的层级模式362的情况下(S414中“否”的情况下),解析单元27获取层级结构数据36中的下一行360的层级模式362。参照图6的下部的示例,如根据以上的说明可理解的那样,获取”1 2 3 2 1”。在该情况下,由于连续编号361为0011的行360的层级模式362也为”1 2 3 2 1”、即一致,因此在连续编号361为0011的行360的类似行364n中设定”0003”(S412)。
如以上所说明过的那样,基于本实施方式的解析单元27在解析功能中将层级模式362按照长度的降序进行排序,由此将多个对象范围按照被连结成层级模式362的层级等级的数目的降序作为第1对象范围来使用。然而,也可以不排序而比较层级结构。进而,不创建层级模式362,也能够使对象模块31的行310各错开1行地比较层级等级。但是,在考虑性能的情况下,优选如本实施方式那样进行设计。
如根据以上的说明可理解的那样,基于本实施方式的解析单元27的解析功能,在第1对象范围的层级模式362和第2对象范围的层级模式362相同的情况下,判定为第1对象范围的层级结构和第2对象范围的层级结构相同(即、第1对象范围和第2对象范围相类似)。但是,层级结构能够通过与上述的方法不同的方法来进行比较。例如,也可以通过图6所示的层级模式(压缩前)来比较层级结构。这样一来,能够更严格地比较层级结构。此外,在创建层级模式(压缩前)之际,也可以还对IF语句、THEN句、ELSE句、END-IF以外的语句(例如,MOVE语句)赋予层级等级,连结成层级模式(压缩前)。这样一来,能够进一步严格地比较两个对象范围的类似性。
两个对象范围的类似性还能够通过层级模式以外的方式进行比较。例如,还能够根据在两个对象范围中所使用的执行语句的种类或数目、所使用的函数的种类或数目、所使用的项目名称的种类或数目来计算评价点。在该情况下,当层级模式相同、且所计算出的评价点为给定点数以上时,判定为两个对象范围相类似即可。
当结束解析处理(S404~S416)时,解析单元27将类似通知信息364写入至存储装置30(S418)。更具体而言,解析单元27将创建出的层级结构数据36写入至存储装置30。如前所述,层级结构数据36与对象模块31建立关联地被存储。因此,通过参照层级结构数据36的类似行364n(即、与对象范围已建立关联的类似通知信息364),从而能够容易地发现对象模块31中的相互类似的对象范围。
其次,解析单元27将对象模块31显示于显示装置50以使得能够识别类似的地方(S420),然后结束处理。更具体而言,解析单元27例如像图7所示那样显示对象模块31。如图7所示,对象模块31之中相互类似的对象范围分别被框包围来显示。进而,在框的内侧显示表示与哪个对象范围相类似的类似识别代码(在图7中用圆包围的数字)。但是,也可以不显示类似识别代码,通过改变框的属性(颜色或粗细等)来表示对象范围与哪个对象范围相类似。此外,在对象模块31内,当相互类似的对象范围远离的情况下,例如只要显示与对象模块31的排头最近的对象范围即可。通过按照在视觉上可容易地掌握的方式显示相互类似的地方,从而能够容易地检测需要维护的地方。进而,也能够检测要设为共同的处理单位的地方。
在显示处理(S420)中,解析单元27也可以不显示对象模块31,而显示创建出的层级结构数据36。换言之,解析单元27将对象模块31和类似通知信息364建立关联地显示于显示装置50即可。
基于本实施方式的解析单元27具有写入功能(S418)和显示功能(S420),但解析单元27只要具有写入功能(S418)以及显示功能(S420)的一者即可。进而,也可以不具有上述的两个功能的任何功能,取而代之具有将对象模块31和类似通知信息364建立关联地发送至其他装置或单元的功能。
如图8所示,也可以在对象模块31中包含IF语句以外的条件语句。例如,关于EVALUATE语句,解析单元27只要每当检测到WHEN句时更新层级等级,每当检测到对应的END-EVALUATE时将层级等级返回到更新前即可。关于IF语句、EVALUATE语句以外的条件语句,也能够同样地进行处理。为了容易理解,赋予了层级等级后的解析单元27的功能·动作与在对象模块31中仅包含IF语句作为条件语句的情况相同。
基于本实施方式的解析单元27,如以下所说明的那样可以各式各样地变形。
例如,解析单元27也可以并非在第2对象范围(即、被比较的一侧的对象范围)的类似行364n中设定第1对象范围(即、进行比较的一侧的对象范围)的连续编号361,而在第1对象范围的类似行364n中设定第2对象范围的连续编号361。此外,也可以在第1对象范围以及第2对象范围的类似行364n中分别设定第2对象范围以及第1对象范围的连续编号361。换言之,解析单元27只要将类似通知信息364与第1对象范围以及/或者第2对象范围建立关联地进行创建即可。
此外,解析单元27也可以在第1对象范围(或者第2对象范围)与多个第2对象范围(或者第1对象范围)类似的情况下,在类似行364n中设定最初检测到相类似的第2对象范围(或者第1对象范围)的连续编号361。另一方面,解析单元27也可以在类似行364n中设定检测到相类似的所有的第2对象范围(或者第1对象范围)的连续编号361。
但是,如根据图7可理解的那样,如果类似的对象范围的检测数变大(即、如果类似的对象范围的检测精度高),则与对象模块31建立关联地进行显示变得困难。此外,在大多数的情况下,在相互类似的对象范围中还包含相互类似的对象范围。在这种情况下,如果将类似的所有对象范围存储至层级结构数据36,则设定有类似行364n的行360的数目不必要地变大,有可能导致关于是否需要维护的调查·研究工时增加。另一方面,如果缩减进行类似判断的对象范围,则有可能导致遗漏关于是否需要维护的调查·研究。因此,类似的对象范围的检测精度最好与维护的内容等相匹配地进行调整。
例如,在检测到类似的地方后的维护效率较为重要的情况下,解析单元27只要在解析功能(图4的S404~S416)中不将满足给定的条件的对象范围(行360)作为第1对象范围来使用即可。作为给定的条件,例如只要采用将行360的被连结成层级模式362的层级等级的数目设为基准的条件即可。更具体而言,在被连结成层级模式362的层级等级的数目小于给定的数目(例如10)的情况下,只要不将该对象范围作为第1对象范围来使用即可。或者,在对象范围中的层级等级的最大值小于给定的数目(例如4)的情况下,也可以不将该对象范围作为第1对象范围来使用。
作为对象模块31,也可以使用连结了多个模块31的对象模块。例如,也可以将多个模块31从各自的开始行至结束行单纯地依序连结来作为对象模块31。这样一来,能够一并检测系统整体中的类似的对象范围。此外,也可将多个模块31如以下所说明的第2实施方式那样进行连结。
(第2实施方式)
如图9所示,基于本发明的第2实施方式的结构解析装置10′具备:装置主体20′、存储装置(存储单元)30′、输入装置40、以及显示装置50。结构解析装置10′与基于第1实施方式的结构解析装置10同样地,进行由通过程序语言描述的1个以上的语句构成的模块(源程序)的结构解析。基于第2实施方式的程序语言、模块、输入装置40以及显示装置50与第1实施方式同样地分别构成。
如图9所示,存储装置30′是与存储装置30同样的磁盘装置。在存储装置30′中,与第1实施方式同样地存储有1个以上的模块31。此外,在存储装置30′中存储有二次模块(模块)32和流程图33。基于本实施方式的二次模块32连结模块31进行变换而被创建。此外,流程图33是根据二次模块32创建的。
装置主体20′与装置主体20相同,例如是PC的主体。装置主体20′具备CPU、主存储装置等(未图示)。与第1实施方式同样地,存储装置30′和主存储装置作为本实施方式中的可读入以及写入的存储单元而分别发挥功能。作为以后说明中的存储单元而例示存储装置30′。
在基于本实施方式的存储装置30′中存储有变换程序、加工程序、流程图创建程序、和解析程序(未图示)。上述的程序被加载至主存储装置中,通过CPU来执行,由此计算机作为变换单元21、加工单元22、流程图创建单元25、以及解析单元27′而分别发挥功能。即、上述的程序用于使计算机作为支援模块的结构解析的结构解析装置10′而发挥功能。换言之,基于本实施方式的结构解析装置10′的装置主体20′具备:变换单元21、加工单元22、流程图创建单元25、以及解析单元27′。
基于本实施方式的变换单元21将存储装置30′所存储的模块31之中的给定的对象模块31变换成二次模块32而存储至存储装置30′。加工单元22对存储装置30′所存储的二次模块32进行加工。流程图创建单元25根据存储装置30′所存储的二次模块32来创建表格式的流程图33。解析单元27′与第1实施方式的解析单元27同样地进行存储装置30′所存储的模块31的结构解析。但是,基于本实施方式的解析单元27′并非直接解析模块31,而进行二次模块32之中的给定的对象模块32的结构解析。
如图10所示,在存储装置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。
图10所例示的模块31分别由1个以上的节构成。例如,XXX模块具有主要节(即、成为模块中的处理的起点的主要的处理单位)、和从属的节(从属的处理单位)。主要节由从描述了”PROCEDURE DIVISION.”的行310的下一行310至描述了”STOP RUN.”的行310为止的行310构成。从属的节(子节)由从描述了”AAA-SUB SECTION.”的行310至描述了”EXIT.”的行310为止的行310构成。上述的子节的节名(处理单位名)为AAA-SUB。主要节具备通过节名来确定并执行AAA-SUB节的行310。更具体而言,主要节具备描述了”PERFORM AAA-SUB.”的行310。
图10所例示的节的一部分具备描述了条件语句的行310。例如,XXX模块的主要节具备:描述了具有5个WHEN句的EVALUATE语句的行310、和描述了具有THEN以及ELSE的IF语句的行310。CCC模块的主要节在IF语句的ELSE中还具备描述了IF语句的行310,由此来进行基于条件语句的语句312的层级化。
如图11所示,基于本实施方式的二次模块32由p个(m≥1)的二次行(行)320构成。基于本实施方式的二次模块32为MICROSOFT EXCEL(在日本的注册商标)的工作表。但是,二次模块32例如可以是文本文件。基于本实施方式的行320至少由模块识别321、行编号322、层级识别323、命令识别324、连续编号(行识别)326、二次语句327、以及层级结构329构成。层级结构329具备层级模式329p、以及类似通知信息329r。基于本实施方式的类似通知信息329r具备类似有无329f。
二次模块32从1个以上的模块31之中收集描述了执行语句等的行310来进行加工,由此生成。基于本实施方式的二次模块32由变换单元21来生成,由加工单元22以及解析单元27′来加工。尤其是,二次模块32的层级结构329与第1实施方式中的层级结构数据36同样地,由解析单元27′来设定。
如图12所示,基于本实施方式的二次模块32例如收集XXX模块、AAA模块、BBB模块以及CCC模块的PROCEDURE DIVISION的行310来进行加工后的模块。
如根据图10以及图12可理解的那样,在行320的二次语句327中行310的语句312所描述的CALL语句被注释化(即、被变更成注释语句)。通过CALL语句而调用的AAA模块的PROCEDURE DIVISION的语句312作为行320的二次语句327被展开(即、被展开而生成行320的二次语句327)。进而,通过CALL语句被AAA模块调用的CCC模块的PROCEDURE DIVISION的语句312,作为行320的二次语句327被展开。同样地,行310的语句312所描述的PERFORM语句,在行320的二次语句327中被注释化。此外,通过PERFORM语句执行的AAA-SUB节的语句312,作为行320的二次语句327被展开。
此外,语句312所描述的条件语句之中IF语句以外的条件语句(在本实施方式中是指EVALUATE语句),在二次语句327中被变换成IF语句。例如,分别描述了”EVALUATE WK-A-O”、”WHEN CS-1”、”MOVE CS-1 TO WK-B-I”的3个语句312被变换成分别描述了”*#EEVALUATE WK-A-O”(注释语句)、”*#E WHEN CS-1”(注释语句)、”IF(WK-A-O=CS-1)”、”THEN”、”MOVE CS-1 TO WK-B-I”的5个二次语句327。根据本实施方式,除了上述的变换之外,还生成用于补足IF语句中的THEN、ELSE以及END IF的遗漏的二次语句327。此外,否定的条件式被变换成肯定的条件式。进而,具有由AND、OR结合的条件式的IF语句被分解成多个IF语句,从而被变换成具有仅通过一个逻辑运算符来评价两个评价对象操作数之间的关系的单纯的二次条件式的IF语句。但是,也可以不进行上述的变换的一部分(例如,由AND、OR结合的条件式的分解)。
除了上述之外,被多个语句312分写的MOVE语句等汇集成一个二次语句327。即、二次模块32的行320分别基于模块31的行310来生成。更具体而言,二次语句327是原封不动地拷贝语句312的语句,或者是通过加工·展开语句312而生成的语句。
基于本实施方式的模块识别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中,从1开始的序列号沿着行320的排列顺序进行设定。但是,行编号322只要可以比较行编号322的大小关系,则也可以不是序列号。例如,行编号322可以是字符、记号的组合。
基于本实施方式的层级识别323由分支层级和分支的深度构成。分支层级为了识别基于条件语句的层级而被使用。基于本实施方式的分支层级通过使用1作为第1行的行320中的起点值,由此来设定。换言之,第1行的行320的分支层级为1。分支层级,在IF语句的描述了THEN的行320中被变更为1.1,在描述了ELSE的行320中被变更为1.2。分支层级,从IF语句的描述了END IF的行320的下一行起返回至1。一般而言,在描述了THEN的行320中,在紧前面的行320的分支层级的末尾添加“.1”,在描述了ELSE的行320中,紧前面的行320的分支层级的末尾“.1”被变更为“.2”,在描述了END IF的行320的下一行中,描述了END IF的行320的分支层级的末尾“.2”被删除。除了上述的情况,在分支层级中设定与前面紧挨的行320相同的值。
基于本实施方式的分支的深度与分支层级同样地,通过使用1作为第1行的行320中的起点值,由此来设定。换言之,第1行的行320的分支的深度为1。分支的深度,在IF语句的描述了THEN的行320中被变更为1.1,从描述了END IF的行320的下一行起返回至1。进而,在其后的IF语句的描述了THEN的行320中被变更为1.2,从描述了END IF的行320的下一行起返回至1。一般而言,分支的深度将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的值在除了该位之外的分支的深度为相同值的行320连续的范围中将1作为起点值,在该连续的范围中每当被附加时进行增量。
命令识别324表示在二次语句327中描述的语句的类别。基于本实施方式的命令识别324由命令名、表示是否为条件命令的分类(条件命令恰当与否:在图12中简单记载为“条件命令”)、和表示是否为处理命令的分类(处理命令恰当与否:在图12中简单记载为“处理命令”)构成。当在二次语句327中描述了IF语句的要素的一部分的情况下(即、描述了IF、THEN、ELSE或者END-IF的情况下),对于条件命令恰当与否而设定了O。当在二次语句327中描述了IF语句以外的执行语句的情况下(例如,描述了MOVE语句、COMPUTE语句的情况下),对于处理命令恰当与否而设定了O。当对于条件命令恰当与否、或者处理命令恰当与否而设定了O的情况下,对于命令名而设定在二次语句327中描述的命令名(IF、THEN、END-IF、MOVE等)。
层级模式329p与第1实施方式同样用于确定对象范围的层级结构。详细而言,与第1实施方式同样地,在IF语句开始的(即、对象范围开始的)行320的层级模式329p中设定连结了层级等级的层级模式。在图12中如虚线A所示的部分可理解的那样,根据本实施方式,层级识别323的长度(例如,分支的深度的位数)表示层级等级。
对于类似通知信息329r,也与第1实施方式同样地设定表示在二次模块32内是否存在相互类似的对象范围的数据。根据本实施方式,对于类似有无329f设定表示是否存在具有与该行320的层级模式329p相同的层级模式329p的行320的标记。
行320除了以上说明过的项目之外还能够具备各式各样的项目。例如,在行320具备对应的行310的节名的情况下,能够更容易地掌握行320与行310之间的对应。
根据本实施方式,能够基于存储在存储装置30′中的二次模块32来创建各式各样的文件。所创建的文件能够作为用于支援模块31的句法解析的资料而显示·印刷于显示装置50。更具体而言,例如,能够基于二次模块32来创建流程图33。
如根据图13可理解的那样,基于本实施方式的流程图33为MICROSOFT EXCEL(日本中的注册商标)的工作表。但是,流程图33也可以是其他格式的文件等。根据本实施方式,流程图33由二次模块32来生成。
流程图33将二次模块32的二次语句327编辑成流程图样子。更具体而言,与IF语句不关联的二次语句327按照二次模块32中的行320的排列顺序而排列在第2列(在报头中显示出”2”的列)。另一方面,与IF语句关联的二次语句327(即、描述了从IF至END-IF的语句的二次语句327)被左右分别划分排列了在IF语句中的条件式成立的情况下被执行的二次语句327、和在IF语句中的条件式不成立的情况下被执行的二次语句327。
在流程图33的第1列设定了排列在第2列的二次语句327的行编号322,由此能够使流程图33的行与二次模块32的行320分别建立对应。并不限于行编号322,能够将行320的任意项目设定为流程图33。
如根据以上的说明可理解的那样,基于本实施方式的流程图33的列随着基于IF语句的层级的加深而增加。换言之,二次模块32之中描述了更为复杂的条件语句的地方,按照在表的列方向上延伸的方式进行显示。因此,使流程图33显示于显示装置50,并对比排列显示在左右的列上的执行语句,从而能够掌握条件式的成立与否所引起的处理的差异。也能够对流程图33中的处理块附加颜色后使之显示于显示装置50。例如,能够在流程图33的设定了IF以及END-IF的栏中设定给定的背景色A,在THEN的情况下被执行的二次语句327设定给定的背景色B,在ELSE的情况下被执行的二次语句327设定给定的背景色C。如此一来,在使流程图33显示于显示装置50之际,能够将基于IF语句的层级结构作为基于背景色的组合的模式而在视觉上进行掌握。
以下,关于基于本实施方式的结构解析装置10′的功能以及动作来详细地进行说明。
如根据图14可理解的那样,基于本实施方式的变换单元21具有:控制信息获取功能(S1400)、读入功能(S1402、S1404)、变换功能(S1406~S1412)、以及写入功能(S1414)。控制信息获取功能是获取展开控制信息的功能。读入功能是从存储装置30′读入模块31之中作为处理对象的对象模块31的功能。变换功能是将对象模块31变换成二次模块32的功能。写入功能是将二次模块32存储至存储装置30′的功能。
更具体而言,如图14所示,如果变换单元21通过例如从输入装置40输入的启动指示而被启动,则获取作为例如启动指示的一部分而被输入的展开控制信息(S1400)。能够使在基于本实施方式的展开控制信息中包含展开限制指示。关于展开限制指示,指示的是:仅在初次限制执行对象的节或者调用对象的模块31的语句312中描述的语句的展开。
其次,变换单元21获取用于确定对象模块31的对象模块名(S1402)。对象模块名能够以与展开控制信息同样的方法来获取。变换单元21从存储装置30′读入由获取到的对象模块名而确定的对象模块31(S1404)。此时,例如也可以仅存储在给定的文件夹中的模块31为读入对象。当对象模块31未存储在存储装置30′中的情况下,变换单元21结束处理(未图示)。
其次,变换单元21获取对象模块31的处理开始地方的语句312(S1406)。基于本实施方式的处理开始地方为主要节的排头。变换单元21针对获取到的语句312进行二次语句输出处理(S1408)。其次,变换单元21判定是否处理完毕处理结束地方的语句312(S1410)。基于本实施方式的处理结束地方为主要节的末尾。当处理已结束的情况下(S1410中“是”的情况下),变换单元21将所创建的二次模块32写入至存储装置30′(S1414),然后结束处理。另一方面,当处理未结束的情况下(S1410中“否”的情况下),变换单元21获取其次要处理的语句312(后续的行310的语句312)(S1412),针对获取到的语句312进行二次语句输出处理(S1408)。
图15是更详细地表示图14所示的变换单元21的处理(功能)之中二次语句输出处理(S1408)的流程图。如图15所示,变换单元21在二次语句输出处理中将语句312作为二次语句327来输出(S1500)。更具体而言,根据本实施方式,将在语句312中描述的执行语句等拷贝至工作表的给定的行·列。此时,如前所述,被进行使PERFORM语句变为注释语句等的加工。进而,变换单元21针对模块识别321、行编号322、以及连续编号326而设定前述那样的值。
其次,变换单元21判定在语句312中是否描述了条件语句(S1502)。当在语句312中描述的执行语句为条件语句的情况下(S1502中“是”的情况下),变换单元21如前所述那样进行将IF语句以外的条件语句变换成IF语句等的处理。更具体而言,变换单元21基于条件语句的条件式来生成描述了作为二次语句之一的二次条件语句(IF语句)的二次语句327,通过二次条件语句而使二次语句327层级化并输出至二次模块(S1504),然后结束二次语句输出处理。上述的二次条件语句是通过仅由一个逻辑运算符来评价两个评价对象操作数之间的关系这样的二次条件式是成立还是不成立,来选择要执行的二次语句327的条件语句(二次语句327)。
当在语句312中描述的执行语句(即、判定对象语句)不是条件语句的情况下(S1502中“否”的情况下),变换单元21进行判定对象语句是否为处理单位执行语句(PERFORM语句)的判定(S1506)。当判定对象语句为处理单位执行语句的情况下(S1506中“是”的情况下),变换单元21获取执行对象的处理单位(根据本实施方式是指节)的处理开始地方的语句312。在本实施方式中,处理单位的处理开始地方为节的排头。
当判定对象语句不是处理单位执行语句的情况下(S1506中“否”的情况下),变换单元21进行判定对象语句是否为模块调用语句(根据本实施方式是指CALL语句)的判定(S1510)。当判定对象语句为模块调用语句的情况下(S1510中“是”的情况下),变换单元21从存储装置30′读入由CALL语句而确定的调用对象的模块31(S1512),获取调用对象的模块31的处理开始地方的语句312(S1514)。根据本实施方式,调用对象的模块31的处理开始地方为该模块31的主要节的排头。当判定对象语句不是模块调用语句的情况下(S1510中“否”的情况下),变换单元21结束二次语句输出处理。
变换单元21针对执行对象的节的语句312或者调用对象的模块31的语句312,递归式地进行二次语句输出处理(S1516)。其次,变换单元21判定是否处理完毕处理结束地方的语句312(S1518)。基于本实施方式的处理结束地方,关于执行对象的节而言是该节的末尾,关于调用对象的模块31而言是主要节的末尾。当处理已结束的情况下(S1518中“是”的情况下),变换单元21结束二次语句输出处理。另一方面,当处理未结束的情况下(S1518中“否”的情况下),变换单元21获取其次要处理的语句312(后续的行310的语句312)(S1520),针对获取到的语句312递归式地进行二次语句输出处理(S1516)。
变换单元21针对递归式的(执行自己本身的)PERFORM语句不进行执行对象的节的语句312的展开。同样地,变换单元21针对递归式的(调用自己本身的)CALL语句不进行调用对象的模块31的语句312的展开。进而,变换单元21当对于展开控制信息而指定了展开限制指示的情况下,针对执行节名与已经进行了二次语句输出处理的节相同的节的PERFORM语句,不进行二次语句输出处理(S1506)。同样地,变换单元21当对于展开控制信息而指定了展开限制指示的情况下,针对调用模块名与已经进行了二次语句输出处理的模块31相同的模块31的CALL语句,不进行二次语句输出处理(S1510)。
如根据以上的说明可理解的那样,变换单元21的变换功能将从对象模块31的给定的处理开始地方起至给定的处理结束地方为止所描述的语句312分别作为二次语句327而依次输出至二次模块。进而,变换单元21的变换功能,在语句312为处理单位执行语句或者模块调用语句的情况下,通过将在执行对象的处理单位或者调用对象的模块31中描述的语句312展开,从而生成二次语句327并输出至二次模块32。进而,变换单元21的变换功能,针对被展开的语句312中的处理单位执行语句或者模块调用语句,还进一步进行展开(即、递归式展开)。因此,能够使在多数的处理单位或模块31中分散的功能拉近到对象模块31的主要节来进行收集。如前所述,根据本实施方式,关于模块31的给定的处理开始地方以及给定的处理结束地方分别为主要节的排头以及末尾。但是,关于模块31的给定的处理开始地方以及给定的处理结束地方也可以分别设为PROCRDURE DIVISON的排头以及末尾。例如,也能将给定的处理开始地方以及给定的处理结束地方之中的至少一方设为主要节的中途。但是,为了避免不必要的展开,且获得充分的展开结果,优选设为本实施方式的构成。
如根据以上的说明可理解的那样,基于本实施方式的变换单元21的变换功能,当对于展开控制信息而指定了展开限制指示的情况下,针对同一处理单位,将在执行对象的处理单位中描述的语句312的展开只进行初次的一次(即,将同一处理单位只展开一次),针对同一模块31,将在调用对象的模块31中描述的语句312的展开只进行初次的一次(即,将同一模块31只展开一次)。但是,变换单元21的变换功能也可以与是否指定了展开限制指示无关地,将同一处理单位或同一模块31只展开一次。进而,变换单元21的变换功能也可以与是否指定了展开限制指示无关地,将同一处理单位或同一模块31反复展开。
如以上说明过的那样,通过变换单元21,由二次语句327构成的二次模块32被存储至存储装置30′。
如根据图16可理解的那样,基于本实施方式的加工单元22具有:读入功能(S1600、S1602)、层级识别附加功能(S1606)、命令识别附加功能(S1608)、以及写入功能(S1014)。读入功能是从存储装置30′读入处理对象的二次模块32的功能。层级识别附加功能是针对二次模块32的二次语句327的至少一部分来附加层级识别323的功能。基于本实施方式的层级识别323表示二次语句327位于哪一层级。命令识别附加功能是针对二次模块32的二次语句327的至少一部分来附加命令识别324的功能。基于本实施方式的命令识别324表示在二次语句327中描述的语句的类别。写入功能是将由附加了层级识别323以及命令识别324的二次语句327构成的二次模块32存储至存储装置30′的功能。
更具体而言,如图16所示,如果加工单元22例如与变换单元21同样地被启动,则获取用于确定处理对象的二次模块32的二次模块名(S1600)。加工单元22从存储装置30′读入由获取到的二次模块名而确定的二次模块32(S1602)。当处理对象的二次模块32未存储在存储装置30中的情况下,加工单元22结束处理(未图示)。
其次,加工单元22获取处理对象的二次模块32的处理开始地方的二次语句327(S1604)。基于本实施方式的处理开始地方为二次模块32的排头。
加工单元22针对获取到的二次语句327来附加层级识别323(S1606)。更具体而言,基于本实施方式的加工单元22在记录了处理对象的二次模块32的工作表(即、对象工作表)中与行320的层级识别323对应的行和列,设定前述那样的分支层级和分支的深度。其次,加工单元22针对获取到的二次语句327来附加命令识别324(S1608)。更具体而言,基于本实施方式的加工单元22在对象工作表中与行320的命令识别324对应的行·列,设定前述那样的命令名、条件命令恰当与否、和处理命令恰当与否。
其次,加工单元22判定是否处理完毕处理结束地方的二次语句327(S1612)。基于本实施方式的处理结束地方为二次模块32的末尾。当处理已结束的情况下(S1612中“是”的情况下),加工单元22将已加工的二次模块32写入至存储装置30′(S1614),然后结束处理。另一方面,当处理未结束的情况下(S1612中“否”的情况下),加工单元22获取其次要处理的二次语句327(后续的行320的二次语句327)(S1616),针对获取到的二次语句327进行层级识别323的附加等(S1606、S1608)。
如以上说明过的那样,由通过加工单元22附加了层级识别323以及命令识别324的二次语句327构成的二次模块32(根据本实施方式是指追记了层级识别323等的工作表)被存储至存储装置30′。
基于本实施方式的解析单元27′具备与基于第1实施方式的解析单元27同样的功能。以下,以与解析单元27不同的功能作为中心,参照图17所示的例子,使用图4来进行说明。
如果解析单元27′与解析单元27同样地被启动,则从存储装置30′(或者主存储装置)读入对象模块32(S400、S402)。换言之,解析单元27′不将模块31而将二次模块32作为解析对象。
解析单元27′在确定对象模块32的各语句的层级等级之际(S404),根据命令识别324的命令名来判定IF语句的开始、结束等。此外,解析单元27′将层级识别323的长度作为层级等级来使用。如果参照图17的例子,则针对各行320如从右起第2列所示那样赋予层级等级。
解析单元27′与解析单元27同样地提取对象范围(即、作为进行层级结构的解析的对象的范围)(S406)。但是,基于本实施方式的解析单元27′不将对象范围所含的范围作为对象范围来使用。具体而言,如果参照图17所例示的对象模块32,则IF语句(条件语句)之中的两个,从行编号322为874以及2397的行320起分别开始。此外,上述的IF语句,在行编号322为921以及2437的行320分别结束。解析单元27′将从行编号322为874的行320至行编号322为921的行320为止、以及从行编号322为2397的行320至行编号322为2437的行320为止,作为对象范围来使用。另一方面,解析单元27′例如不将从行编号322为882的行320至行编号322为920的行320为止作为对象范围来使用。
解析单元27′与解析单元27同样地创建层级模式(S406)。如果参照图17所例示的对象模块32,则针对行编号322为874的行320、以及行编号322为2397的行320,分别创建”12 3 4 3 4 5 4 3 2 1”的层级模式,设定为层级模式329p。
解析单元27′与解析单元27同样地,选择所创建的层级结构329的对象范围(即、对象模块31的对象范围)之中相互不同的两个对象范围(即、第1对象范围和第2对象范围)。解析单元27′在第1对象范围的层级结构和第2对象范围的层级结构相同的情况下,创建类似通知信息329r(S408~S416)。解析单元27′使类似通知信息329r与第1对象范围以及第2对象范围建立关联地创建。更具体而言,解析单元27′针对对象模块32的行320,分别判定有无同一层级模式329p(S410~S416)。解析单元27′在检测到具有彼此相同的层级模式329p的两个行320的情况下,对检测到的两个行320的各自的类似有无329f设定意味着“有类似”的标记。
如果参照图17所例示的对象模块32,则从行编号322为874的行320至行编号322为921的行320为止的第1对象范围(R1)、和从行编号322为2397的行320至行编号322为2437的行320为止的第2对象范围(R2)具有同一层级模式329p。因而,对于行编号322为874的行320以及行编号322为2397的行320的类似有无329f分别设定”1”(有类似对象范围)。
其次,解析单元27′判定是否结束了所有的层级模式329p的处理(S414),当已结束的情况下(S414中“是”的情况下),进行S418的处理。更具体而言,将设定了层级结构329的二次模块32写入(更新)至存储装置30′。另一方面,当存在未处理的层级模式329p的情况下(S414中“否”的情况下),获取其次要处理的层级模式329p。
如根据以上的说明可理解的那样,基于本实施方式的解析单元27′与基于第1实施方式的解析单元27同样地,能够比较两个对象范围的类似性。进而,根据本实施方式,在对象模块32中按照处理顺序来连结关联的多个模块31。因此,能够以更易于调查的形式一并检测系统整体中的类似的对象范围。
如根据图18可理解的那样,基于本实施方式的流程图创建单元25具有读入功能(S1800、S1802)、流程图创建功能(S1804、S1805)、和写入功能(S1806)。
更具体而言,如图18所示,如果流程图创建单元25例如与变换单元21同样地被启动,则获取用于确定处理对象的二次模块32的二次模块名(S1800)。流程图创建单元25从存储装置30′读入由获取到的二次模块名而确定的处理对象的二次模块32(S1802)。当处理对象的二次模块32未存储在存储装置30′中的情况下,流程图创建单元25结束处理(未图示)。
其次,流程图创建单元25创建将与二次条件式的成立与否分别对应的二次语句327排列在表的左右的表格式的流程图33(S1804)。更具体而言,针对二次模块32的二次语句327之中由层级识别323表示的层级相同的二次语句327,创建将在二次条件式成立了的情况下被执行的二次语句327和在二次条件式不成立的情况下被执行的二次语句327分别排列在表的左右的流程图33。此时,对于流程图33按照与二次语句327对应的方式设定行编号322。基于本实施方式的流程图创建单元25,当层级识别323的分支的深度相同、且分支层级之中除了末尾的1位(”1”或者”2”)之外的部分相同的情况下,判定为由层级识别323表示的层级相同。
其次,流程图创建单元25对流程图中的相互类似的地方(对象范围)进行标识(S1805)。更具体而言,如图19所例示的那样,对于二次模块32的行320之中类似有无329f设定了“有类似”的地方(对象范围)用框来包围,进行“模式nn”(nn例如为序列号)等的显示。序列号(nn)只要例如从流程图的排头起依次被赋予即可。
其次,流程图创建单元25将流程图33写入至存储单元30′(S1806),结束处理。
如根据图19可理解的那样,通过在视觉上明示相互类似的地方(对象范围),从而例如能够发现维护的遗漏。例如,在相互类似的对象范围的一方被变更而另一方未被变更的情况下,能够注意到需要对另一方的变更。
流程图创建单元25也可以具备解析单元27′的解析功能、写入功能以及显示功能。换言之,流程图创建单元25也可以是解析单元。
(第3实施方式)
如图20所示,基于本发明的第3实施方式的结构解析装置10″具备:装置主体20″、存储装置(存储单元)30″、输入装置40、以及显示装置50。基于本实施方式的存储装置30″为装置主体20″的主存储装置。装置主体20″与基于第2实施方式的装置主体20′同样地具备:变换单元21、加工单元22、解析单元27′、以及流程图创建单元25。
结构解析装置10″经由通信线路80而与文件服务器60可通信地连接。通信线路80例如既可以为LAN(Local Area Network;局域网),也可以为互联网。文件服务器60具备存储装置(存储单元)70。存储装置70能够存储模块31、二次模块32、以及流程图33。因此,结构解析装置10″能够从存储装置70写入模块31等,并将模块31等写入至存储装置70。
为了容易理解,根据本实施方式,与第1以及第2实施方式同样地,能够发现在模块31中类似的地方。进而,能够由多个结构解析装置10″来共享所发现的类似地方。
本发明基于在2012年4月9日向日本专利局提出的日本专利申请第2012-088098号,其内容通过参照而构成了本说明书的一部分。
虽然关于本发明的最优的实施方式进行了说明,但是如本领域的技术人员可明确的那样,在不脱离本发明的精神的范围内可使实施方式变形,这样的实施方式属于本发明的范围。
标号说明
10、10′、10″ 结构解析装置
20、20′、20″ 装置主体
21 变换单元
22 加工单元
25 流程图创建单元
27、27′ 解析单元
30、30′、30″ 存储装置(存储单元)
31 模块(源程序)
310 行
311 连续编号(行识别)
312 语句
32 二次模块(模块)
320 二次行(行)
321 模块识别
322 行编号
323 层级识别
324 命令识别
326 连续编号(行识别)
327 二次语句
329 层级结构
329p 层级模式
329r 类似通知信息
329f 类似有无
33 流程图
36 层级结构数据
360 行
361 连续编号(行识别)
362 层级模式
363 结束行(连续编号)
364 类似通知信息
364n 类似行(连续编号)
40 输入装置
50 显示装置
60 文件服务器
70 存储装置(存储单元)
80 通信线路

Claims (11)

1.一种结构解析装置,进行由通过程序语言描述的1个以上的语句构成的模块的结构解析,
在所述模块中能够描述作为所述语句之一的条件语句,所述条件语句包含成立时执行语句以及/或者不成立时执行语句,所述成立时执行语句是在所述条件语句的条件式成立的情况下被执行的所述语句,所述不成立时执行语句是在所述条件式不成立的情况下被执行的所述语句,所述条件语句之中的至少一个还能够包含所述条件语句作为所述成立时执行语句以及/或者所述不成立时执行语句,由此能够进行基于所述条件语句的所述语句的层级化,关于所述模块中的由连续的所述语句构成的多个对象范围,能够分别确定基于所述层级化的层级结构,
所述结构解析装置具备存储单元和解析单元,
在所述存储单元中存储有1个以上的所述模块,
所述解析单元构成为进行所述存储单元所存储的所述模块之中的给定的对象模块的结构解析,所述解析单元具有获取功能和解析功能,所述获取功能是从所述存储单元获取所述对象模块的功能,所述解析功能是在第1对象范围的所述层级结构和第2对象范围的所述层级结构相同的情况下与所述第1对象范围以及所述第2对象范围之中的一者或者两者建立关联来创建类似通知信息的功能,所述第1对象范围以及所述第2对象范围是获取到的所述对象模块的所述对象范围之中相互不同的所述对象范围,所述类似通知信息表示在所述对象模块内存在具有彼此相同的所述层级结构的所述第1对象范围以及所述第2对象范围。
2.根据权利要求1所述的结构解析装置,其中,
在所述对象范围中包含至少一个所述条件语句,在所述对象范围中包含所述对象范围所含的所述条件语句的各自的开始至结束的整体。
3.根据权利要求1所述的结构解析装置,其中,
所述对象范围的所述层级结构能够通过连结了所述对象范围所含的层级等级的层级模式来识别,所述层级等级表示以所述对象范围的排头的所述语句作为基准而被确定的层级的深度。
4.根据权利要求3所述的结构解析装置,其中,
所述解析单元在所述解析功能中,当所述第1对象范围的所述层级模式和所述第2对象范围的所述层级模式相同的情况下,判定为所述第1对象范围的所述层级结构和所述第2对象范围的所述层级结构相同。
5.根据权利要求3所述的结构解析装置,其中,
所述解析单元在所述解析功能中按照被连结成所述层级模式的所述层级等级的数目的降序将多个所述对象范围作为所述第1对象范围来使用。
6.根据权利要求5所述的结构解析装置,其中,
所述解析单元在所述解析功能中将满足给定的条件的所述对象范围不作为所述第1对象范围来使用。
7.根据权利要求6所述的结构解析装置,其中,
所述给定的条件是将所述对象范围的被连结成所述层级模式的所述层级等级的数目设为基准的条件。
8.根据权利要求1所述的结构解析装置,其中,
所述对象模块连结了多个所述模块。
9.根据权利要求1所述的结构解析装置,其中,
所述解析单元还具有写入功能,所述写入功能是将所述对象模块和所述类似通知信息建立关联地存储至所述存储单元的功能。
10.根据权利要求1所述的结构解析装置,其中,
所述结构解析装置还具备显示装置,
所述解析单元还具有显示功能,所述显示功能是将所述对象模块和所述类似通知信息建立关联地显示至所述显示装置的功能。
11.一种计算机可读取的记录介质,其记录有程序,该程序使计算机作为权利要求1至10中任一项所述的结构解析装置而发挥功能。
CN201380015262.9A 2012-04-09 2013-04-05 结构解析装置以及记录介质 Active CN104169875B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012088098A JP5273884B1 (ja) 2012-04-09 2012-04-09 構造解析装置及びプログラム
JP2012-088098 2012-04-09
PCT/JP2013/060528 WO2013154055A1 (ja) 2012-04-09 2013-04-05 構造解析装置及びプログラム

Publications (2)

Publication Number Publication Date
CN104169875A CN104169875A (zh) 2014-11-26
CN104169875B true CN104169875B (zh) 2017-08-08

Family

ID=49179215

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380015262.9A Active CN104169875B (zh) 2012-04-09 2013-04-05 结构解析装置以及记录介质

Country Status (5)

Country Link
US (1) US9286062B2 (zh)
JP (1) JP5273884B1 (zh)
KR (1) KR101578119B1 (zh)
CN (1) CN104169875B (zh)
WO (1) WO2013154055A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6309795B2 (ja) * 2014-03-18 2018-04-11 株式会社東芝 情報処理装置、情報処理方法およびプログラム
JP7073431B2 (ja) * 2020-03-25 2022-05-23 株式会社日立製作所 ソースコード解析システムおよびソースコード解析方法
JP7421137B2 (ja) * 2022-03-04 2024-01-24 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理方法およびプログラム
JP7531254B1 (ja) 2024-06-26 2024-08-09 敏夫 関 ソースコードからフローチャート生成用データを生成するためのプログラム及び方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1552026A (zh) * 2001-07-02 2004-12-01 Bea系统公司 用于处理数据表示语言对象的编程语言扩展和相关应用
CN101192154A (zh) * 2006-11-30 2008-06-04 Ncr公司 用于解释规范语言文件来实现商务系统的系统和方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07219756A (ja) 1994-02-02 1995-08-18 Matsushita Electric Ind Co Ltd プログラム開発支援方法及びその装置
JP2001154835A (ja) 1999-11-30 2001-06-08 Sharp Corp 構造化プログラム編集装置、及び構造化プログラム編集プログラムを記録した記録媒体
US7624141B2 (en) * 2004-01-23 2009-11-24 Microsoft Corporation Deterministic rule-based dispatch of objects to code
US7793273B2 (en) * 2004-11-23 2010-09-07 National Instruments Corporation Type propagation for automatic casting of output types in a data flow program
US20070239993A1 (en) * 2006-03-17 2007-10-11 The Trustees Of The University Of Pennsylvania System and method for comparing similarity of computer programs
US8146066B2 (en) * 2006-06-20 2012-03-27 Google Inc. Systems and methods for caching compute kernels for an application running on a parallel-processing computer system
US8191052B2 (en) * 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
JP5542300B2 (ja) * 2007-09-28 2014-07-09 東芝三菱電機産業システム株式会社 プログラム編集装置
EP2698710A3 (en) * 2008-02-12 2014-05-28 Scrutiny, INC. Systems and methods for information flow analysis
JP4839424B2 (ja) * 2008-12-15 2011-12-21 インターナショナル・ビジネス・マシーンズ・コーポレーション プログラムの解析を支援するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1552026A (zh) * 2001-07-02 2004-12-01 Bea系统公司 用于处理数据表示语言对象的编程语言扩展和相关应用
CN101192154A (zh) * 2006-11-30 2008-06-04 Ncr公司 用于解释规范语言文件来实现商务系统的系统和方法

Also Published As

Publication number Publication date
KR101578119B1 (ko) 2015-12-16
KR20140126385A (ko) 2014-10-30
CN104169875A (zh) 2014-11-26
JP5273884B1 (ja) 2013-08-28
WO2013154055A1 (ja) 2013-10-17
JP2013218507A (ja) 2013-10-24
US20150128109A1 (en) 2015-05-07
US9286062B2 (en) 2016-03-15

Similar Documents

Publication Publication Date Title
CN103135976B (zh) 代码自动生成方法及装置
CN102918500B (zh) 使用输入-输出示例生成文本操纵程序
CN101937430B (zh) 一种汉语句子中事件句式的抽取方法
US20020178184A1 (en) Software system for biological storytelling
CN104169875B (zh) 结构解析装置以及记录介质
CN104662514A (zh) 基于模型关联关系的遗产软件系统的现代化
Njonko et al. From natural language business requirements to executable models via SBVR
CN104412227A (zh) 基于查询的软件系统设计表示
JPH0778742B2 (ja) コンピユータ・プログラム言語変換装置及びその方法
JP6160006B2 (ja) 電子ファイルの構造、コンピュータ読み取り可能な記憶媒体、電子ファイル生成装置、電子ファイル生成方法、電子ファイル
JP2003228580A (ja) 文献知識管理装置、文献知識管理方法、プログラム、および、記録媒体
KR101713612B1 (ko) 지능형 스토리텔링 지원 시스템
CN104484156A (zh) 多语言公式的编辑方法、编辑系统和多语言公式编辑器
CN101388034A (zh) 用于处理数据库的设备和方法
Kiernan et al. The ARCHway project: Architecture for research in computing for humanities through research, teaching, and learning
Lapierre et al. Datrix™ source code model and its interchange format: lessons learned and considerations for future work
CN105431817B (zh) 源程序比较装置以及存储装置
JPWO2007049800A1 (ja) 文書作成支援装置
JPH0232470A (ja) シソーラス編集装置
CN103635880B (zh) 对模块的结构分析进行支援的装置
Bhattacharya et al. Customizing backend logic using a chatbot
WO2024116688A1 (ja) 発想支援システム及び方法
Sharma et al. Draw your neural networks
JP2006277460A (ja) マニュアル作成管理装置
Rahman et al. Pattern analysis of TXL programs

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