CN103635880A - 对模块的结构分析进行支援的装置以及程序 - Google Patents
对模块的结构分析进行支援的装置以及程序 Download PDFInfo
- Publication number
- CN103635880A CN103635880A CN201280033010.4A CN201280033010A CN103635880A CN 103635880 A CN103635880 A CN 103635880A CN 201280033010 A CN201280033010 A CN 201280033010A CN 103635880 A CN103635880 A CN 103635880A
- Authority
- CN
- China
- Prior art keywords
- statement
- module
- function
- described secondary
- stratum
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Quality & Reliability (AREA)
Abstract
对模块的结构分析进行支援的装置具备:存储单元,其存储有1个以上的模块;和变换单元,其将在存储单元中存储的模块中规定的对象模块变换为二次模块并存储到存储单元中。变换单元从存储单元读入对象模块,将从对象模块的规定的处理开始位置到规定的处理结束位置为止所记述的每个语句依次输出到二次模块中。此外,变换单元在语句是执行模块内部的处理单位或其他的模块的语句的情况下,对在执行对象的处理单位等中记述的语句递归地展开并输出到二次模块中。
Description
技术领域
本发明涉及一种对模块(源程序)的结构分析进行支援的装置,所述模块由通过程序语言记述的1个以上的语句构成。
背景技术
在作成程序的情况下,强烈推荐结构化编程。具体来说,例如,希望通过将由比较少的语句构成的处理单位组合起来作成模块。此外,希望将关于多个模块的共通的处理模块化。因此,例如程序的合计行数超过100万行那样的大型系统大多具备数千个模块,其中每一个模块都是由数十个处理单位构成。
对于上述那样的大规模的系统,开发后一段期间大多是由参与了开发的担当者(即,熟悉模块间的关联以及各个模块的结构的人员)进行系统的维护。但是,这样的系统大多数十年间一边反复进行维护一边使用。随着时间的经过参与了开发的担当者离开,而由不了解模块结构的人员进行系统的维护。在这样的情况下,由于进行了结构化编程,因而必须把握分散至庞大的模块中而记述的功能,维护极为困难。即,模块的结构分析非常困难。
例如,在专利文献1以及专利文献2中,公开了用于对模块的结构分析进行支援的技术。在专利文献1中,公开了自动作成模块关联图的模块构成图自动生成装置。在专利文献2中,公开了自动作成流程图以及测试项目的测试项目自动生成装置。
在先技术文献
专利文献
专利文献1:JP特开平11-110198号公报
专利文献2:JP特开2006-209521号公报
发明内容
发明要解决的课题
但是,在为了维护系统而进行模块的结构分析的情况下,需要把握各模块的详细的内部处理。即便利用模块关联图、每个模块的流程图,也不容易把握分散到多个模块的功能的整体像。
因此,本发明的目的在于,提供一种通过将分散到多个模块的功能汇总为1个二次模块使得容易把握功能,由此来对模块的结构分析进行支援的装置。
解决课题的手段
本发明的一个方面提供一种将由通过程序语言记述的1个以上的语句构成的模块变换为由1个以上的二次语句构成的二次模块,由此对模块的结构分析进行支援的装置。所述模块能够通过模块名来确定。在所述模块中能够记述由1个以上的所述语句构成的处理单位。所述处理单位能够通过处理单位名来确定。在所述模块中,作为所述语句能够记述处理单位执行语句、模块调用语句和条件语句。所述处理单位执行语句是用于通过所述处理单位名来确定并执行所述处理单位的所述语句。所述模块调用语句是用于通过所述模块名来确定并执行所述模块的所述语句。所述条件语句是用于根据条件式成立或不成立来选择应执行的所述语句的所述语句。在所述条件语句中作为通过所述条件语句选择的所述语句能够进一步记述所述条件语句,由此能够通过所述条件语句进行所述语句的阶层化。所述装置具备存储单元和变换单元。在所述存储单元中,存储1个以上的所述模块。所述变换单元将在所述存储单元中存储的所述模块中的规定的对象模块变换为所述二次模块并存储到所述存储单元中。所述变换单元具有读入功能、变换功能和写入功能。所述读入功能是从所述存储单元读入所述对象模块的功能。所述变换功能是如下功能:将从所述对象模块的规定的处理开始位置到规定的处理结束位置所记述的每个所述语句作为所述二次语句而依次输出到所述二次模块中,在输出到所述二次模块中的所述语句为所述处理单位执行语句或所述模块调用语句的情况下,通过对在执行对象的所述处理单位或调用对象的所述模块中记述的所述语句进行展开来生成所述二次语句并输出到所述二次模块中,对于所述展开的所述语句中的所述处理单位执行语句或所述模块调用语句也进一步进行所述展开。所述写入功能是将所述二次模块存储到所述存储单元中的功能。
此外,根据本发明的其他的方面,能够获得一种利用所述二次模块(例如,进行加工),由此对模块的结构分析进行支援的装置。所述装置具备存储单元和利用单元(例如,加工单元)。在所述存储单元中,存储有所述二次模块。所述利用单元对在所述存储单元中存储的所述二次模块进行利用。所述利用单元具有读入功能、利用功能和写入功能。所述读入功能是从所述存储单元读入所述二次模块的功能。在所述加工单元为所述利用单元的情况下,所述利用功能例如是阶层标识附加功能。所述阶层标识附加功能是对所述二次模块的所述二次语句的至少一部分附加阶层标识的功能。所述阶层标识表示所述二次语句位于哪个所述阶层。所述写入功能是例如将由附加了所述阶层标识的所述二次语句构成的所述二次模块存储到所述存储单元中的功能。
此外,根据本发明的另外其他的方面,能够得到一种用于使计算机作为所述装置而发挥作用的程序。
发明效果
根据本发明,由于在1个模块的规定的处理开始位置到规定的处理结束位置之间展开执行对象语句,因此能够更容易地把握分散到多个模块的功能。
此外,在对于相同处理单位或相同模块只展开1次执行对象语句的情况下,能够避免重复的展开,由此能够使被展开的量减小。
通过一边参照附图一边对下述的最佳实施方式的说明进行研讨,将能够正确理解本发明的目的并且更加充分地理解其构成。
附图说明
图1是表示本发明的实施方式的对模块的结构分析进行支援的装置的方框构成图。
图2是示意性地表示在图1的装置的存储装置中存储的模块的文件构成的图。
图3是表示图2的模块的示例的图。
图4是示意性地表示在图1的存储装置中存储的二次模块(secondarymodule)的文件构成的图。
图5是局部表示图1的二次模块的一例的图。在此,将二次模块的一部分(虚线A的部分)放大表示为实线A的部分。
图6是局部表示在图1的存储装置中存储的流程图的一例的图。
图7是局部表示在图1的存储装置中存储的矩阵的一例的图。
图8是表示图1的装置的变换单元的功能的流程图。
图9是更详细地表示图8的变换单元的功能的一部分的流程图。
图10是表示图1的装置的加工单元的功能的流程图。
图11是表示图1的装置的选择单元的功能的流程图。
图12是表示图1的装置的显示属性设定单元的功能的流程图。
图13是表示图1的装置的流程图作成单元的功能的流程图。
图14是表示图1的装置的矩阵作成单元的功能的流程图。
图15是局部表示在图1的存储装置中存储的矩阵的一例的图。
图16实例示变更了图3的模块中的一个模块时的差分的图。
图17是表示图14的矩阵作成单元的功能的变形例的流程图。
图18是局部例示在变更了图16的模块的情况下的矩阵的图。
图19是局部例示在变更了图16的模块的情况下的流程图的图。
图20是表示图1的装置的变形例的系统构成图。
具体实施方式
关于本发明,能够通过多种多样的变形、各种各样的方式来实现,但作为其一例,以下对附图所示那样的特定的实施方式进行详细说明。附图以及实施方式并不是将本发明限定于在此公开的特定的方式,在附上的权利要求书所明示的范围内进行的所有的变形例、均等物、代替例均包含在本发明的对象中。
如图1所示,本发明的实施方式的装置(对模块的结构分析进行支援的装置)10,具备:装置主体20、存储装置(存储单元)30、输入装置40和显示装置50。装置10能够将通过程序语言记述的1个以上的语句所构成的模块(源程序)变换为1个以上的二次语句所构成的二次模块(二次源程序)。
本实施方式的程序语言是COBOL。但是,本发明也能够应用于COBOL以外的程序语言。
本实施方式的模块能够通过组合了文字、数字、记号等的模块名来确定。
在模块中,能够记述由1个以上的语句构成的处理单位。本实施方式的处理单位为COBOL中的节(section)。每一个节能够通过节名(处理单位名)来确定。但是,例如在程序语言为JAVA(日本的注册商标)的情况下,处理单位也可以是能够通过函数名(处理单位名)确定的函数。
模块能够调用其他的模块或该模块本身。此外,模块的节能够执行其他的节或该节本身。更具体来说,在模块中,作为语句,能够记述用于通过节名来确定并执行节的处理单位执行语句、和用于通过模块名来确定并执行一个模块的模块调用语句。此外,在模块中,作为语句,能够记述用于根据条件式成立或不成立来选择应执行的语句的条件语句。处理单位执行语句以及模块调用语句也可以是指定了函数名的语句。在模块调用语句是指定了函数名的语句的情况下,通过模块调用语句而执行的是模块中的被指定的函数部分(即,模块的一部分)。在此情况下,存在在模块调用语句中没有明确地记述模块名的情况(即,通过函数名来间接地确定模块名的情况)。
根据本实施方式,处理单位执行语句是PERFORM语句。模块调用语句是CALL语句。此外,条件语句是IF语句以及EVALUATE语句。作为由IF语句等条件语句选择的语句可以进一步记述条件语句,由此能够通过条件语句进行语句的嵌套(阶层化)。详细来说,例如能够在IF语句的THEN中进一步记述IF语句。
如图1所示,存储装置30是例如磁盘装置。存储装置30例如能够存储通过文件夹(未图示)进行了阶层化的各种文件。存储装置30与装置主体20能通信地连接,能够按照来自装置主体20的指示进行文件的读入、写入(存储)。在本实施方式的存储装置30中,存储有1个以上的模块31。换言之,本实施方式的模块31是存储在存储装置30中的模块。模块31例如使用编程工具(未图示)来作成。可以每一个模块31是一个文件。也可以是多个模块31存储在一个文件中。存储装置30能够与模块31同样地存储二次模块32、流程图33和矩阵34。本实施方式的流程图33以及矩阵34能够根据二次模块32分别作成。
输入装置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来执行,由此计算机作为变换单元21、加工单元22、选择单元23、显示属性设定单元24、流程图作成单元25、以及矩阵作成单元26而分别发挥作用。即,上述的程序用于使计算机作为对模块的结构分析进行支援的装置10来发挥作用。换言之,本实施方式的装置10的装置主体20具备变换单元21、加工单元22、选择单元23、显示属性设定单元24、流程图作成单元25和矩阵作成单元26。
本实施方式的变换单元21将存储于存储装置30的模块31中的规定的对象模块31变换为二次模块32并存储到存储装置30中。加工单元22对在存储装置30中存储的二次模块32进行加工。选择单元23选择在存储装置30中存储的二次模块32的二次语句的一部分。显示属性设定单元24对在存储装置30中存储的二次模块32的二次语句设定规定的显示属性。流程图作成单元25根据在存储装置30中存储的二次模块32作成表形式的流程图33。矩阵作成单元26根据在存储装置30中存储的二次模块32作成组合了多个列与1个以上的行的表形式的矩阵34。
如图2所示,本实施方式的模块31由n个(n≥1)行310构成。行310至少由连续编号(行标识)311与语句312构成。连续编号311是用于识别行310的编号。连续编号311不仅可以含有数字也可以含有文字、记号。在语句312中,记述有语句(例如,数据定义语句、执行语句、注释语句)。在语句312中,可以记述一个完结的语句整体。在语句312中,也可以记述一个语句的一部分。例如,MOVE语句也可以分开记述到2个行310的语句312中。
如图3所示,在存储装置30中,存储有1个以上的模块31。每个模块31由多个行310构成,每个行310由连续编号311与语句312构成。根据图3所示的本实施方式的一例,在存储装置30中,存储有模块名是XXX的模块31(即,XXX模块)、模块名是AAA的模块31(即,AAA模块)、模块名是BBB的模块31(即,BBB模块)和模块名是CCC的模块31(即,CCC模块)。以下,使用该例来更加具体地说明模块31的结构。
XXX模块是主模块(即,作为处理起点的模块)。XXX模块具有分别记述了用于通过模块名来确定并调用AAA模块与BBB模块的CALL语句的行310。AAA模块具有记述了调用CCC模块的CALL语句的行310。
在图3中例示的每一个模块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。
在图3中例示的节的一部分具备记述了条件语句的行310。例如,XXX模块的主节具备记述了具有5个WHEN句的EVALUATE语句的行310、与记述了具有THEN以及ELSE的IF语句的行310。CCC模块的主节具备在IF语句的ELSE中进一步记述有IF语句的行310,由此通过条件语句进行了语句312的阶层化。
如图4所示,本实施方式的二次模块32由m个(m≥1)行320构成。本实施方式的二次模块32是MICROSOFT EXCEL(日本的注册商标)的工作表。但是,二次模块32例如也可以是文本文件。本实施方式的行320至少由模块标识321、行编号322、阶层标识323、命令标识324、操作数(operand)信息325、连续编号(行标识)326、二次语句327和显示属性328构成。操作数信息325具备第1操作数325f、运算符325o和第2操作数325s。二次模块32通过从1个以上的模块31收集记述了执行语句等的行310并进行加工来生成。
如图5所示,本实施方式的二次模块32例如收集XXX模块、AAA模块、BBB模块以及CCC模块的PROCEDURE DIVISION的行310并进行加工而成。
如图5所例示的那样,在行320的二次语句327中,在行310的语句312中记述的CALL语句被注释化(即,变更为注释语句)。通过CALL语句调用的AAA模块的PROCEDURE DIVISION的语句312作为行320的二次语句327被展开(即,展开来生成行320的二次语句327)。而且,从AAA模块通过CALL语句调用的CCC模块的PROCEDURE DIVISION的语句312作为行320的二次语句327被展开。同样地,在行310的语句312中记述的PERFORM语句在行320的二次语句327中被注释化。此外,通过PERFORM语句执行的AAA-SUB节的语句312作为行320的二次语句327被展开。
如图5所例示的那样,语句312所记述的条件语句中IF语句以外的条件语句(根据本实施方式是EVALUATE语句)在二次语句327中被变换为IF语句。例如,分别记述了“EVALUATE WK-A-O”、“WHEN CS-1”、“MOVE CS-1TO WK-B-I”的3个语句312被变换为分别记述了“*#EEVALUATE WK-A-O”(注释语句)、“*#EWHEN CS-1”(注释语句)、“IF(WK-A-O=CS-1)”、“THEN”、“MOVE CS-1TO WK-B-I”的5个二次语句327。根据本实施方式,除了上述的变换之外,还生成用于补足IF语句中的THEN、ELSE以及END IF的缺失的二次语句327。此外,将否定的条件式变换为肯定的条件式。而且,将具有通过AND、OR而结合的条件式的IF语句分解为多个IF语句,从而变换为具有仅通过1个逻辑运算符来评价2个评价对象操作数间的关系的单纯的二次条件式的IF语句。
除上述以外,将在多个语句312中分开书写的MOVE语句等汇集为1个二次语句327。即,二次模块32的每一个行320基于模块31的行310来生成,二次语句327对语句312直接进行复制而得到或通过对语句312进行加工/展开来生成。
在显示属性328中,设定将行320的二次语句327等显示于显示装置50时的显示色、背景色、字体等与显示相关的属性。例如,通过用红色显示将语句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也可以是文字、记号的组合。
本实施方式的阶层标识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中在末尾追加“.p”(p是1以上的整数)的数位,在记述了END IF的行320的下一行删除末尾的“.p”的数位。“.p”中的p的值对于每一位都以1为起始值。详细来说,第1位的“.p”(例如1.2的“.2”)中的p的值以1为起始值,并随每次被追加而递增。另一方面,第2位以后的“.p”(例如1.2.1的“.1”)中的p的值,在除该数位之外的分支深度为相同值的行320连续的范围内以1为起始值,并在该连续的范围内随每次被追加而递增。
根据以上的说明理解可知,通过阶层标识323,能够确定条件语句所形成的阶层在二次模块32中的位置。另外,阶层标识323的设定内容并不限于上述的说明。只要能够确定条件语句所形成的阶层在二次模块32中的位置即可,可以在阶层标识323中设定任何值。
命令标识324表示在二次语句327中记述的语句的种别。本实施方式的命令标识324由命令名、表示是否为条件命令的标识符(条件命令标识:在图5中简单记为“条件命令”)、和表示是否为处理命令的标识符(处理命令标识:在图5中简单记为“处理命令”)构成。在二次语句327中记述了IF语句要素的一部分的情况下(即,记述了IF、THEN、ELSE或END-IF的情况下),在条件命令标识中设定O。在二次语句327中记述了IF语句以外的执行语句的情况下(例如,记述了MOVE语句或COMPUTE语句的情况下),在处理命令标识中设定O。在条件命令标识或处理命令标识中设定了O的情况下,在命令名中设定在二次语句327中记述的命令名(IF、THEN、END-IF、MOVE等)。
操作数信息325针对如下的二次语句327来设定:在命令标识324中设定了命令名的二次语句327(即,记述了执行语句的二次语句327)、并且由2个操作数与1个运算符构成的二次语句327。例如,对于记述了“MOVE9TO WK-C-I”的二次语句,在第1操作数325f、运算符325o以及第1操作数325s中,分别设定“9”、“TO”以及“WK-C-I”。通过参照操作数信息325,能够更容易地把握变量以及常数间的代入/比较怎样进行。
行320除了以上说明的项目以外能够具备各种项目。例如,在行320具备相对应的行310的节名的情况下,能够更容易地把握行320与行310的对应。
根据本实施方式,能够基于在存储装置30中存储的二次模块32作成各种各样的文件。作成的文件能够作为用于对模块31的语法分析进行支援的资料在显示装置50进行显示/印刷。更具体来说,基于二次模块32,例如能够作成流程图33以及矩阵34。
根据图6以及图7理解可知,本实施方式的流程图33以及矩阵34是MICROSOFT EXCEL(日本的注册商标)的工作表。但是,流程图33以及矩阵34也可以是其他形式的文件等。根据本实施方式,流程图33以及矩阵34分别根据二次模块32来生成。
根据图6理解可知,流程图33是将二次模块32的二次语句327编辑为流程图风格的图。更具体来说,与IF语句无关联的二次语句327按照在二次模块32中的行320的排列顺序,被排列在第2列(在标题中显示有“1”的列)。另一方面,对于与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中的处理区块(processblock)进行着色来使其显示于显示装置50。例如,能够在流程图33的设定了IF以及END-IF的栏设定规定的背景色A,在THEN的情况下执行的二次语句327设定规定的背景色B,在ELSE的情况下执行的二次语句327设定规定的背景色C。通过这样,在使流程图33显示于显示装置50时,能够作为背景色的组合所形成的图案而直观地把握IF语句所形成的阶层结构。
如图7所示,本实施方式的矩阵34是由行编号的列(第1列)、连续编号的列(第2列)、二次语句的列(第3列)、和1个以上的关联显示列(第4列以后)构成的表。每一列都具备1个以上的行。
在行编号的列、连续编号的列、以及二次语句的列中,分别设定二次模块32的行编号322、连续编号326、以及二次语句327。进而,例如在二次语句的列中,设定基于显示属性328的显示属性。可以代替上述的项目或除了上述的项目以外,将行320的任意项目设定到矩阵34中。
关联显示列的列数由在二次模块32的二次语句327中记述的IF语句来决定。例如,在二次模块32中只记述了1个THEN与ELSE各有1个的IF语句的情况下,因为IF语句的分支数(即,在IF语句中被执行的实例(case)数)为2,所以关联显示列的列数为2。例如,在THEN以及ELSE中分别记述了具有THEN与ELSE的IF语句的情况下,因为执行的实例数为4(2×2),所以关联显示列的列数为4。例如,在记述有2个被执行的实例数为5的IF语句的情况下,关联显示列的列数既可以是2个实例数的最大值、即5,也可以是对各个实例进行了组合的数、即25(5×5)。图7中例示的关联显示列的列数是在各个IF语句中执行的实例数的最大值。详细来说,图7的矩阵34具备与实例C1至实例C5这5个实例相对应的5列关联显示列。
在关联显示列中,设定与二次语句的列(第3列)的关联。更具体来说,对于在二次语句的列中记述了的执行语句中的、在与关联显示列相对应的实例中被执行的执行语句,在关联显示列的对应的行中设定I、T、E、EI或O。另一方面,在未执行的行中设定一。根据本实施方式,I、T、E、EI以及O分别表示执行语句是IF语句的IF、THEN、ELSE、END-IF以及IF语句以外的执行语句。在与执行语句以外的语句(例如注释语句)相对应的行中设定*。
根据以上的说明理解可知,通过使本实施方式的矩阵34显示于显示装置50,能够把握在二次语句的列中显示的执行语句与在关联显示列中显示的实例的关联。此外,能够在维护中变更了执行语句的情况下把握必要的测试用例。
以下,对按照以上的方式构成的装置10的功能以及动作进行详细说明。
根据图8理解可知,本实施方式的变换单元21具有控制信息取得功能(S800)、读入功能(S802、S804)、变换功能(S806~S812)和写入功能(S814)。控制信息取得功能是取得展开控制信息的功能。读入功能是从存储装置30读入模块31中作为处理对象的对象模块31的功能。变换功能是将对象模块31变换为二次模块32的功能。写入功能是将二次模块32存储到存储装置30中的功能。
更具体来说,如图8所示,变换单元21若根据例如从输入装置40输入的起动指示而起动,则取得例如作为起动指示的一部分而输入的展开控制信息(S800)。在本实施方式的展开控制信息中,可以包含展开限制指示。展开限制指示用于指示将在执行对象的节或调用对象的模块31的语句312中记述的语句的展开仅限制于初次。
接着,变换单元21取得对对象模块31进行确定的对象模块名(S802)。对象模块名能够通过与展开控制信息相同的方法来取得。变换单元21从存储装置30读入通过所取得的对象模块名确定的对象模块31(S804)。此时,例如也可以只将在规定的文件夹中存储的模块31作为读入对象。在对象模块31没有被存储于存储装置30的情况下,变换单元21结束处理(未图示)。
接着,变换单元21取得对象模块31的处理开始位置的语句312(S806)。本实施方式的处理开始位置为主节的开头。变换单元21对所取得的语句312进行二次语句输出处理(S808)。接着,变换单元21判定是否处理完了处理结束位置的语句312(S810)。本实施方式的处理结束位置为主节的末尾。在处理完的情况下(在S810中“是”的情况下),变换单元21将作成的二次模块32写入到存储装置30中(S814),并结束处理。另一方面,在没有处理完的情况下(在S810中“否”的情况下),变换单元21取得下一个处理的语句312(后续的行310的语句312)(S812),并对所取得的语句312进行二次语句输出处理(S808)。
图9是更详细地表示图8所示的变换单元21的处理(功能)中的二次语句输出处理(S808)的流程图。如图9所示,变换单元21在二次语句输出处理中将语句312作为二次语句327来输出(S900)。更具体来说,根据本实施方式,将在语句312中记述的执行语句等复制到工作表的规定的行/列中。此时,如前所述,进行使PERFORM语句变为注释语句等的加工。进而,变换单元21将前述那样的值输出到模块标识321、行编号322、连续编号326与显示属性328中。
接着,变换单元21判定在语句312中是否记述有条件语句(S902)。在语句312中记述的执行语句是条件语句的情况下(S902为“是”的情况下),变换单元21如前所述进行将IF语句以外的条件语句变换为IF语句等的处理。更具体来说,变换单元21基于条件语句的条件式,生成记述了作为二次语句之一的二次条件语句(IF语句)的二次语句327,通过二次条件语句将二次语句327阶层化并输出到二次模块中(S904),结束二次语句输出处理。上述的二次条件语句是根据二次条件式成立或不成立来选择应执行的二次语句327的条件语句(二次语句327),其中,所述二次条件式仅通过1个逻辑运算符对2个评价对象操作数间的关系进行评价。
在语句312中记述的执行语句(即,判定对象语句)不是条件语句的情况下(S902为“否”的情况下),变换单元21对判定对象语句是否为处理单位执行语句(根据本实施方式为PERFORM语句)进行判定(S906)。在判定对象语句是处理单位执行语句的情况下(S906为“是”的情况下),变换单元21取得执行对象的处理单位(根据本实施方式为节)的处理开始位置的语句312。根据本实施方式,处理单位的处理开始位置为节的开头。
在判定对象语句不是处理单位执行语句的情况下(S906为“否”的情况下),变换单元21对判定对象语句是否为模块调用语句(根据本实施方式为CALL语句)进行判定(S910)。在判定对象语句是模块调用语句的情况下(S910为“是”的情况下),变换单元21从存储装置30读入通过CALL语句而确定的调用对象的模块31,并取得调用对象的模块31的处理开始位置的语句312。此时,也可以例如只将在存储有对象模块31的规定的文件夹中存储的模块31作为读入对象。根据本实施方式,调用对象的模块31的处理开始位置为该模块31的主节的开头。在判定对象语句不是模块调用语句的情况下(S910为“否”的情况下),变换单元21结束二次语句输出处理。
变换单元21对执行对象的节的语句312或调用对象的模块31的语句312递归地进行二次语句输出处理(S916)。接着,变换单元21判定是否处理完了处理结束位置的语句312(S918)。本实施方式的处理结束位置,对于执行对象的节来说是该节的末尾,对于调用对象的模块31来说是主节的末尾。在处理结束了的情况下(在S918中为“是”的情况下),变换单元21结束二次语句输出处理。另一方面,在处理并未结束的情况下(在S918中为“否”的情况下),变换单元21取得下一个处理的语句312(后续的行310的语句312)(S920),并对所取得的语句312递归地进行二次语句输出处理(S916)。
变换单元21对于递归的(执行自己的)PERFORM语句,不进行执行对象的节的语句312的展开。同样地,变换单元21对于递归的(调用自己的)CALL语句,不进行调用对象的模块31的语句312的展开。进而,变换单元21在展开控制信息中指定了展开限制指示的情况下,对于执行节名与已经进行了二次语句输出处理的节相同的节的PERFORM语句,不进行二次语句输出处理(这是S906中的处理,但在流程图中并未记述)。同样地,在展开控制信息中指定了展开限制指示的情况下,变换单元21对于调用模块名与已经进行了二次语句输出处理的模块31相同的模块31的CALL语句,不进行二次语句输出处理(这是S910中的处理,但在流程图中并未记述)。
根据以上的说明理解可知,变换单元21的变换功能将从对象模块31的规定的处理开始位置到规定的处理结束位置为止所记述的每一个语句312作为二次语句327依次输出到二次模块中。进而,变换单元21的变换功能在语句312是处理单位执行语句或模块调用语句的情况下,通过展开在执行对象的所述处理单位或调用对象的模块31中记述的语句312来生成二次语句327并输出到二次模块32中。进而,变换单元21的变换功能对所展开的语句312中的处理单位执行语句或模块调用语句再进行展开(即,递归地展开)。因此,能够将分散至多个处理单位、模块31中的功能拉到对象模块31的主节中汇集在一起。如前所述,根据本实施方式,对于模块31的规定的处理开始位置以及规定的处理结束位置分别是主节的开头以及末尾。但是,模块31的规定的处理开始位置以及规定的处理结束位置也可以分别设为PROCRDURE DIVISON的开头以及末尾。例如,也可以将规定的处理开始位置以及规定的处理结束位置中的至少一方设为主节的中间。但是,为了避免无用的展开、并且得到充分的展开结果优选按照本实施方式来进行。
根据以上的说明理解可知,本实施方式的变换单元21的变换功能,在展开控制信息中指定了展开限制指示的情况下,对于同一处理单位,对在执行对象的处理单位中记述的语句312只进行初次的1次展开(即,同一处理单位只展开1次),对于同一模块31,对在调用对象的模块31中记述的语句312只进行初次的1次展开(即,同一模块31只展开1次)。但是,也可以无论是否指定了展开限制指示,变换单元21的变换功能对同一处理单位、同一模块31只展开1次。进而,也可以无论是否指定了展开限制指示,变换单元21的变换功能对同一处理单位、同一模块31反复进行展开。
如以上说明的那样,通过变换单元21,将由二次语句327构成的二次模块32存储到存储装置30中。换言之,具备变换单元21的装置10能够将由二次语句327构成的二次模块32输出到存储装置30中。
根据图10理解可知,本实施方式的加工单元22具有读入功能(S1000,S1002)、阶层标识附加功能(S1006)与操作数附加功能(S1010)中的至少一方、和写入功能(S1014)。读入功能是从存储装置30读入处理对象的二次模块32的功能。阶层标识附加功能是对二次模块32的二次语句327的至少一部分附加阶层标识323的功能。本实施方式的阶层标识323示出了二次语句327位于哪个阶层。操作数附加功能是对于二次模块32的二次语句327中包含由常数或变量构成的2个操作数与1个运算符的二次语句,将由2个操作数(第1操作数325f与第2操作数325s)与1个运算符325o构成的操作数信息325附加到二次语句327的功能。写入功能是将由附加了阶层标识323或操作数信息325的二次语句327构成的二次模块32存储到存储装置30中的功能。
更具体来说,如图10所示,加工单元22例如若与变换单元21同样地被起动,则取得用于确定处理对象的二次模块32的二次模块名(S1000)。加工单元22从存储装置30读入通过所取得的二次模块名而确定的二次模块32(S1002)。在处理对象的二次模块32没有被存储于存储装置30的情况下,加工单元22结束处理(未图示)。
接着,加工单元22取得处理对象的二次模块32的处理开始位置的二次语句327(S1004)。本实施方式的处理开始位置是二次模块32的开头。
加工单元22对所取得的二次语句327附加阶层标识323(S1006)。更具体来说,本实施方式的加工单元22在记录了处理对象的二次模块32的工作表(即,对象工作表)中,在与行320的阶层标识323相对应的行/列设定前述那样的分支阶层与分支深度。接着,加工单元22对所取得的二次语句327附加命令标识324(S1008)。更具体来说,本实施方式的加工单元22在对象工作表中,在与行320的命令标识324相对应的行/列设定前述那样的命令名、条件命令标识、和处理命令标识。接着,加工单元22对所取得的二次语句327附加操作数信息325(S1010)。更具体来说,本实施方式的加工单元22在对象工作表中,在与行320的操作数信息325相对应的行/列设定前述那样的第1操作数325f、运算符325o、和第2操作数325s。
接着,加工单元22判定是否已经处理完了处理结束位置的二次语句327(S1012)。本实施方式的处理结束位置是二次模块32的末尾。在处理结束了的情况下(在S1012中为“是”的情况下),加工单元22将加工后的二次模块32写入到存储装置30中(S1014),并结束处理。另一方面,在处理并未结束的情况下(在S1012中为“否”的情况下),加工单元22取得下一个处理的二次语句327(后续的行320的二次语句327)(S1016),并对所取得的二次语句327进行阶层标识323的附加等(S1006~S1010)。
如以上说明的那样,通过加工单元22,将由附加了阶层标识323、命令标识324以及操作数信息325的二次语句327构成的二次模块32(根据本实施方式,为追记了阶层标识323等的工作表)存储到存储装置30中。换言之,具备加工单元22的装置10能够将由附加了阶层标识323、命令标识324以及操作数信息325的二次语句327构成的二次模块32输出到存储装置30中。
也可以加工单元22只进行阶层标识323的附加(S1006)、命令标识324的附加(S1008)以及操作数信息325的附加(S1010)中的一部分。例如,也可以在启动加工单元22时,从输入装置40输入是否进行阶层标识323的附加的指示。
而且,也可以变换单元21进行阶层标识323的附加、命令标识324的附加以及操作数信息325的附加中的一部分。例如,也可以设计为:变换单元21具有对输出到二次模块32中的二次语句327附加阶层标识323的阶层标识附加功能、与对二次语句327附加操作数信息325的操作数附加功能中的至少一方。
根据图11理解可知,本实施方式的选择单元23具有读入功能(S1100,S1102)、确定信息取得功能(S1104)、选择功能(S1106)和写入功能(S1108)。读入功能是从存储装置30读入处理对象的二次模块32的功能。确定信息取得功能是取得阶层标识确定信息的功能。阶层标识确定信息确定了处理对象的二次模块32的二次语句327中应作为选择对象的二次语句的阶层标识323。选择功能是如下的功能:选择处理对象的二次模块32的二次语句327中的、阶层标识323与阶层标识确定信息所确定的阶层标识相同的二次语句327,并输出到选择后的二次模块32中。写入功能是将由所选择的二次语句327构成的选择后的二次模块32存储到存储装置30中的功能。
更具体来说,如图11所示,选择单元23例如若与变换单元21同样地被启动,则取得用于对处理对象的二次模块32进行确定的二次模块名(S1100)。选择单元23从存储装置30读入通过所取得的二次模块名而确定的二次模块32(S1102)。在处理对象的二次模块32没有被存储于存储装置30的情况下,选择单元23结束处理(未图示)。
接着,选择单元23取得阶层标识确定信息(S1104)。更具体来说,例如,在将处理对象的二次模块32(根据本实施方式,为工作表)显示于显示装置50之后,工作表的显示了行320的行被双击的情况下,选择单元23取得在被双击的行中显示的阶层标识323作为阶层标识确定信息。
接着,选择单元23从处理对象的二次模块32的开头的行320到末尾的行320为止依次将所取得的阶层标识确定信息与阶层标识323进行比较。选择单元23对阶层标识确定信息与阶层标识323一致的行320中从开头的行320到末尾的行320的二次语句327(满足选择条件的二次语句327)进行选择(S1106)。选择单元23作成由满足选择条件的二次语句327的行320构成的选择后的二次模块32(选择后的工作表)。
接着,选择单元23将选择后的二次模块32写入到存储装置30中(S1108),并结束处理。
根据以上的说明理解可知,选择后的二次模块32是处理对象的二次模块32中、具有所指定的阶层标识323的部分。通过使得能够像这样选择二次模块32的一部分,从而例如在进行维护时,能够将对于处理想要确认的地方精简地显示于显示装置50。而且,也可以不直接指定阶层标识323地选择二次语句327。例如,选择单元23也可以检索与通过输入装置40输入的行编号相一致的行编号322。在该情况下,只要通过检索到的行编号322的阶层标识323来选择二次语句327即可。
根据图12理解可知,本实施方式的显示属性设定单元24具有读入功能(S1200、S1202)、初始检索文字取得功能(S1204)、显示属性设定功能(S1206~S1210)、和写入功能(S1212)。
更具体来说,如图12所示,显示属性设定单元24例如若与变换单元21同样地被启动,则取得用于对处理对象的二次模块32进行确定的二次模块名(S1200)。显示属性设定单元24从存储装置30读入通过所取得的二次模块名而确定的处理对象的二次模块32(S1202)。在处理对象的二次模块32没有被存储于存储装置30的情况下,显示属性设定单元24结束处理(未图示)。
接着,显示属性设定单元24取得初始检索文字(S1204)。本实施方式的初始检索文字是在二次语句327中被参照或更新的变量的名称(即,变量名)。初始检索文字既可以是变量名的一部分,也可以是在二次语句327中被参照的常数。
接着,显示属性设定单元24取得二次语句327的第1操作数325f或第2操作数325s中包含初始检索文字的操作数来作为追加检索文字(S1206)。
更具体来说,显示属性设定单元24检索处理对象的二次模块32的二次语句327中的、在操作数信息325的第1操作数325f或第2操作数325s中包含了初始检索文字的二次语句327。此时,也可以不是仅单纯地检索文字,而是更高级地检索文字。例如,显示属性设定单元24也可以参照通过REDEFINES句进行了再定义的变量,利用被再定义的变量名进行文字检索。具体来说,例如也可以在变量名“VRBL”被再定义为变量名“VVV”、变量名“VVV”被设定于第1操作数325f中、并且初始检索文字是“VRBL”的情况下,显示属性设定单元24判定为第1操作数325f包含初始检索文字。不限于上述的REDEFINES句的示例,也可以对实际上是否包含初始检索文字进行判定。例如,通过在变换单元21根据模块31生成二次模块32时,将模块31的DATA DIVISION与所生成的二次模块32建立对应地存储到存储装置30中,能够进行上述那样的判定。
本实施方式的显示属性设定单元24在第1操作数325f以及第2操作数325s的至少一方包含了初始检索文字的情况下,取得第1操作数325f与第2操作数325s双方来作为追加检索文字。
接着,显示属性设定单元24直到找不到新的追加检索文字为止,取得二次语句327的第1操作数325f或第2操作数325s中包含追加检索文字的操作数来作为追加检索文字(S1208)。更具体来说,显示属性设定单元24还检索二次语句327中在操作数信息325的第1操作数325f或第2操作数325s中包含了追加检索文字的二次语句327。此时的检索方法与初始检索文字的检索方法同样。因此,显示属性设定单元24在第1操作数325f以及第2操作数325s中的至少一方包含了追加检索文字的情况下,取得第1操作数325f与第2操作数325s双方来作为追加检索文字。
接着,显示属性设定单元24在如下的行320的显示属性328中设定规定的显示属性(例如能够强调显示的背景色)(S1210):二次语句327中在操作数信息325的第1操作数325f或第2操作数325s中包含了初始检索文字或追加检索文字的行320。
接着,显示属性设定单元24将对二次语句327等设定了规定的显示属性的二次模块32写入到存储装置30中(S1212)。即,显示属性设定单元24更新处理对象的二次模块32(S1212),并结束处理。
根据以上的说明理解可知,对显示属性设定后的二次模块32的二次语句327中、参照/更新了与初始检索文字相关联的变量或常数的二次语句327,设定规定的背景色等的显示属性。因此,例如能够在进行维护时,使与规定的变量相关联的处理醒目地显示于显示装置50。此外,例如,只要将包含初始检索文字的二次语句327的背景色与包含追加检索文字的二次语句327的背景色设为不同的颜色,就能够更直观地把握关联的处理。
根据图13理解可知,本实施方式的流程图作成单元25具有读入功能(S1300、S1302)、流程图作成功能(S1304)、和写入功能(S1306)。
更具体来说,如图13所示,流程图作成单元25例如若与变换单元21同样地被启动,则取得用于对处理对象的二次模块32进行确定的二次模块名(S1300)。流程图作成单元25从存储装置30读入通过所取得的二次模块名而确定的处理对象的二次模块32(S1302)。在处理对象的二次模块32没有被存储于存储装置30的情况下,流程图作成单元25结束处理(未图示)。
接着,流程图作成单元25作成将分别与二次条件式的成立与否相对应的二次语句327排列在表的左右的表形式的流程图33(S1304)。更具体来说,作成如下的流程图33:对于二次模块32的二次语句327中、阶层标识323所示的阶层相同的二次语句327,将在二次条件式成立的情况下所执行的二次语句327与在二次条件式不成立的情况下所执行的二次语句327分别排列在表的左右。本实施方式的流程图作成单元25在如下的情况下判定为阶层标识323所示的阶层相同:阶层标识323的分支深度相同、并且分支阶层中除了末尾的1位(“1”或“2”)以外的部分相同。进而,流程图作成单元25与流程图33的二次语句327相对应地设定行编号322。
接着,流程图作成单元25将流程图33写入到存储单元30中(S1306),并结束处理。
根据图14理解可知,本实施方式的矩阵作成单元26具有读入功能(S1400、S1402)、二次语句输出功能(S1404)、实例生成功能(S1406)、矩阵作成功能(S1408,S1410)、和写入功能(S1412)。
更具体来说,如图14所示,矩阵作成单元26例如若与变换单元21同样地被启动,则取得用于对处理对象的二次模块32进行确定的二次模块名(S1400)。矩阵作成单元26从存储装置30读入通过所取得的二次模块名而确定的处理对象的二次模块32(S1402)。在处理对象的二次模块32没有被存储于存储装置30的情况下,矩阵作成单元26结束处理(未图示)。
接着,矩阵作成单元26将二次语句327输出到表形式的矩阵34的规定的列中(S1404)。详细来说,矩阵作成单元26将处理对象的二次模块32的行编号322、连续编号326、以及二次语句327输出到矩阵34的规定的列(例如,第1列至第3列)的各行中。
接着,矩阵作成单元26生成针对二次条件式的成立与否的实例(S1406)。更具体来说,矩阵作成单元26对于在二次模块32的二次语句327中记述的1个以上的二次条件式,生成包含其全都成立的情况、其一部分成立的情况、和其全都不成立的情况在内的所有的实例。此时,矩阵作成单元26既可以按照在阶层标识323的分支标识为“1”的二次语句327中记述的每个IF语句(阶层最上位的IF语句)来作成实例,也可以通过对阶层最上位的每一个IF语句的实例进行组合来作成实例。进而,矩阵作成单元26也可以通过对阶层最上位的IF语句中的一部分组合实例来作成实例。
接着,矩阵作成单元26使矩阵34的任意一列作为关联显示列而分别与所生成的实例相对应(S1408)。例如,如果所生成的实例数是5,那么使第4列至第8列分别与第1实例至第5实例相对应。在该情况下,例如与第3实例相对应的关联显示列是第6列。
接着,矩阵作成单元26对于关联显示列的每一列,在对应的实例中成为执行对象的二次语句327被输出的行,输出表示二次语句327成为执行对象的显示信息(S1410)。更具体来说,如前所述,输出O、I等的显示信息。
接着,矩阵作成单元26将矩阵34写入到存储单元30中(S1412),并结束处理。
通过矩阵作成单元26,能够作成图7以及图15所示那样的矩阵34。在图7中被局部表示的矩阵34分别作成了针对阶层最上位的多个IF语句的实例,实例数为5。在图15中被局部表示的矩阵34通过对阶层最上位的多个IF语句各自的实例进行组合而作成了实例,实例数为180。
本实施方式的装置10在通过维护而变更了模块31的情况下,能够将模块31的变更位置直观地显示于显示装置50。
例如,如图16所示,在变更了CCC模块的情况下,通过对照变更前后的CCC模块,能够得到CCC模块的变更前后的差分。变更前后的差分例如能够对每行附加模块名(CCC)并作为文本文件(差分文件)存储到存储装置30中。在该情况下,矩阵作成单元26也可以按照下述说明的那样,参照差分文件来作成矩阵34。
如图17所示,第1变形例的矩阵作成单元26,在矩阵作成功能中,选择在存储装置30中存储的二次模块32的二次语句327的一部分,在显示属性328中设定规定的显示属性(S1405)。更具体来说,第1变形例的矩阵作成单元26从存储装置30读入差分文件。接着,矩阵作成单元26对于差分文件的各行,检索模块标识321以及连续编号326一致的行320,在检索到的行320的显示属性328中设定用于强调显示的显示属性(例如,背景色)。
此外,第1变形例的矩阵作成单元26仅抽出关联显示列中、与所选择的二次语句327成为执行对象的实例相对应的关联显示列作为存储对象(S1411)。
除了以上说明的以外,第1变形例的矩阵作成单元26与前述的本实施方式的矩阵作成单元26具有相同的功能。通过第1变形例的矩阵作成单元26,能够在矩阵34中仅作成与模块31的变更前后的差分相关联的实例。因此,能够更加容易作成与通过维护而变更了的功能相关联的测试用例。另外,矩阵作成单元26进行用于强调显示的显示属性的设定,但可以不进行与成为执行对象的实例相对应的关联显示列的抽出(第2变形例)。
根据图18理解可知,若将通过矩阵作成单元26的第2变形例作成的矩阵34显示于显示装置50,则通过与其他的行320不同的颜色来分别显示与被变更的语句312相对应的行320(即,被变更的位置)和根据被变更的语句312生成的二次语句327的行320(即,被二次变更的位置)。因此,能够更加容易地目识别被变更的位置以及被二次变更的位置上的关联显示列的显示内容,由此能够更加容易地选择关联的实例。更具体来说,在被变更的位置以及被二次变更的行的关联显示列中显示有O、I、T、E、EI中的任意一个的情况下,能够判断出是与变更了的功能相关联的实例。
如图18所示,在如前所述变更了CCC模块的示例中,与变更了的功能相关联的实例是“C2”至“C4”。因此,在通过第1变形例的矩阵作成单元26作成了矩阵34的情况下,作成的矩阵34具有图18的第1列至第3列以及第5列至第7列,而不具有第4列和第8列。
根据图19理解可知,对于流程图作成单元25,通过与矩阵作成单元26的第2变形例同样地进行变形,也能够对被变更的位置与被二次变更的位置进行强调显示。
本实施方式的装置10能够进行各种变形。例如,如图20所示,也可以将装置10分成具备变换单元21的装置10′、具备加工单元22的装置10"、和具备选择单元23等的装置(未图示)。装置10′和装置10"分别经由通信线路80与文件服务器60能通信地连接起来。通信线路80例如既可以是LAN(Local Area Network,局域网),也可以是因特网。文件服务器60具备存储装置(存储单元)70。存储装置70能够存储模块31、二次模块32、流程图33、和矩阵34。因此,装置10′和装置10"能够从存储装置70读入模块31等、并将模块31等写入到存储装置70中。
装置10′具备装置主体20′、输入装置40和显示装置50。装置10"具备装置主体20"、输入装置40和显示装置50。装置主体20′具备变换单元21和存储装置(存储单元)30′。装置主体20"具备加工单元22和存储装置(存储单元)30"。
本变形例中的存储装置30′与存储装置30"能够通过主存储装置来构成。例如,变换单元21能够从存储装置30′读入模块31。换言之,本变形例中的存储单元主要是主存储装置。
本发明基于2011年7月25日向日本专利局提出的日本专利申请第2011-162519号,并通过参照其内容而形成本说明书的一部分。
关于本发明的最佳实施方式进行了说明,但如本领域技术人员所知那样,能够在未脱离本发明的精神的范围内能够对实施方式进行变形,这样的实施方式也属于本发明的范围。
符号说明
10、10′、10" 装置(对模块的结构分析进行支援的装置)
20、20′、20" 装置主体
21 变换单元
22 加工单元
23 选择单元
24 显示属性设定单元
25 流程图作成单元
26 矩阵作成单元
30、30′、30" 存储装置(存储单元)
31 模块(源程序)
310 行
311 连续编号(行标识)
312 语句
32 二次模块(二次源程序)
320 二次行
321 模块标识
322 行编号
323 阶层标识
324 命令标识
325 操作数信息
325f 第1操作数(操作数)
325o 运算符
325s 第2操作数(操作数)
326 连续编号(行标识)
327 二次语句
328 显示属性
33 流程图
34 矩阵
40 输入装置
50 显示装置
60 文件服务器
70 存储装置(存储单元)
80 通信线路
Claims (11)
1.一种装置,将由通过程序语言记述的1个以上的语句构成的模块变换为由1个以上的二次语句构成的二次模块,由此对模块的结构分析进行支援,
所述模块能够通过模块名来确定,在所述模块中能够记述由1个以上的所述语句构成的处理单位,所述处理单位能够通过处理单位名来确定,
在所述模块中作为所述语句能够记述处理单位执行语句、模块调用语句和条件语句,所述处理单位执行语句是用于通过所述处理单位名来确定并执行所述处理单位的所述语句,所述模块调用语句是用于通过所述模块名来确定并执行所述模块的所述语句,所述条件语句是用于根据条件式成立或不成立来选择应执行的所述语句的所述语句,在所述条件语句中作为通过所述条件语句选择的所述语句能够进一步记述所述条件语句,由此能够通过所述条件语句进行所述语句的阶层化,
所述装置具备存储单元和变换单元,
在所述存储单元中,存储1个以上的所述模块,
所述变换单元将在所述存储单元中存储的所述模块中的规定的对象模块变换为所述二次模块并存储到所述存储单元中,所述变换单元具有读入功能、变换功能和写入功能,
所述读入功能是从所述存储单元读入所述对象模块的功能,
所述变换功能是如下功能:将从所述对象模块的规定的处理开始位置到规定的处理结束位置所记述的每个所述语句作为所述二次语句而依次输出到所述二次模块中,在输出到所述二次模块中的所述语句为所述处理单位执行语句或所述模块调用语句的情况下,通过对在执行对象的所述处理单位或调用对象的所述模块中记述的所述语句进行展开来生成所述二次语句并输出到所述二次模块中,对于所述展开的所述语句中的所述处理单位执行语句或所述模块调用语句也进一步进行所述展开,
所述写入功能是将所述二次模块存储到所述存储单元中的功能。
2.根据权利要求1所述的装置,其中,
所述变换单元还具备控制信息取得功能,所述控制信息取得功能是取得展开控制信息的功能,在所述展开控制信息中能够包含展开限制指示,所述展开限制指示用于指示将在执行对象的所述处理单位或调用对象的所述模块中记述的所述语句的所述展开仅限于初次,
所述变换单元,在所述变换功能中,在所述展开控制信息中指定了所述展开限制指示的情况下,对于同一所述处理单位,对在执行对象的所述处理单位中记述的所述语句的所述展开只进行初次的1次,对于同一所述模块,对在调用对象的所述模块中记述的所述语句的所述展开只进行初次的1次。
3.根据权利要求1或2所述的装置,其中,
所述变换单元,在所述变换功能中,在所述语句是所述条件语句的情况下,基于所述条件语句的所述条件式来生成作为所述二次语句之一的二次条件语句,通过所述二次条件语句将所述二次语句阶层化并输出到所述二次模块中,
所述二次条件语句是用于根据二次条件式成立或不成立来选择应执行的所述二次语句的所述二次语句,该二次条件式仅通过1个逻辑运算符来对2个评价对象操作数间的关系进行评价。
4.根据权利要求3所述的装置,其中,
所述变换单元还具有阶层标识附加功能与操作数附加功能中的至少一个功能,
所述阶层标识附加功能是对输出到所述二次模块中的所述二次语句的至少一部分附加阶层标识的功能,所述阶层标识表示所述二次语句位于哪个所述阶层,
所述操作数附加功能是对于输出到所述二次模块中的所述二次语句中、包含由常数或变量构成的2个操作数与1个运算符的所述二次语句,将包含2个所述操作数与1个所述运算符的操作数信息附加到所述二次语句的功能。
5.一种装置,对通过权利要求3所述的装置而输出的所述二次模块进行加工,由此对模块的结构分析进行支援,
具备存储单元和加工单元,
在所述存储单元中,存储所述二次模块,
所述加工单元对在所述存储单元中存储的所述二次模块进行加工,所述加工单元具有读入功能、阶层标识附加功能与操作数附加功能中的至少一个功能、和写入功能,
所述读入功能是从所述存储单元读入所述二次模块的功能,
所述阶层标识附加功能是对所述二次模块的所述二次语句的至少一部分附加阶层标识的功能,所述阶层标识示出所述二次语句位于哪个所述阶层,
所述操作数附加功能是对于所述二次模块的所述二次语句中、包含由常数或变量构成的2个操作数与1个运算符的所述二次语句,将包含2个所述操作数与1个所述运算符的操作数信息附加到所述二次语句的功能,
所述写入功能是将由附加了所述阶层标识或所述操作数信息的所述二次语句构成的所述二次模块存储到所述存储单元中的功能。
6.一种装置,选择通过权利要求4或5所述的装置而输出的所述二次模块的一部分,由此对模块的结构分析进行支援,
具备存储单元和选择单元,
在所述存储单元中,存储由至少附加了所述阶层标识的所述二次语句构成的所述二次模块,
所述选择单元对在所述存储单元中存储的所述二次模块的所述二次语句的一部分进行选择,所述选择单元具有读入功能、确定信息取得功能、选择功能和写入功能,
所述读入功能是从所述存储单元读入所述二次模块的功能,
确定信息取得功能是取得阶层标识确定信息的功能,所述阶层标识确定信息确定所述二次语句中应作为选择对象的所述二次语句的所述阶层标识,
所述选择功能是对所述二次模块的所述二次语句中、所述阶层标识与由所述阶层标识确定信息确定的所述阶层标识相同的所述二次语句进行选择,并输出到选择后的二次模块中的功能,
所述写入功能是将所述选择后的二次模块存储到所述存储单元中的功能。
7.一种装置,根据通过权利要求4或5所述的装置而输出的所述二次模块来作成表形式的流程图,由此对模块的结构分析进行支援,
具备存储单元和流程图作成单元,
在所述存储单元中,存储由至少附加了所述阶层标识的所述二次语句构成的所述二次模块,
所述流程图作成单元根据在所述存储单元中存储的所述二次模块作成表形式的所述流程图,所述流程图作成单元具有读入功能、流程图作成功能和写入功能,
所述读入功能是从所述存储单元读入所述二次模块的功能,
所述流程图作成功能是作成如下的所述流程图的功能:对于所述二次模块的所述二次语句中、所述阶层标识所示的阶层相同的所述二次语句,将在所述二次条件式成立的情况下所执行的所述二次语句与在所述二次条件式不成立的情况下所执行的所述二次语句排列在表的左右,
所述写入功能是将所述流程图存储到所述存储单元中的功能。
8.一种装置,对通过权利要求4或5所述的装置而输出的所述二次模块进行加工,由此对模块的结构分析进行支援,
具备存储单元和显示属性设定单元,
在所述存储单元中,存储由至少附加了所述操作数信息的所述二次语句构成的所述二次模块,
所述显示属性设定单元对在所述存储单元中存储的所述二次模块的所述二次语句设定规定的显示属性,所述显示属性设定单元具有读入功能、初始检索文字取得功能、显示属性设定功能和写入功能,
所述读入功能是从所述存储单元读入所述二次模块的功能,
所述初始检索文字取得功能是取得初始检索文字的功能,
所述显示属性设定功能是如下的功能:进一步取得所述二次模块的所述二次语句的所述操作数信息的所述操作数中、包含了所述初始检索文字的所述操作数来作为追加检索文字,并进一步取得所述二次语句的所述操作数信息的所述操作数中、包含了所述追加检索文字的所述操作数来作为所述追加检索文字,对所述二次语句中、在所述操作数信息的所述操作数中包含了所述初始检索文字或所述追加检索文字的所述二次语句设定所述规定的显示属性,
所述写入功能是将对所述二次语句设定了所述规定的显示属性的所述二次模块存储到所述存储单元中的功能。
9.一种装置,根据通过权利要求3所述的装置而输出的所述二次模块作成表形式的矩阵,由此对模块的结构分析进行支援,
具备存储单元和矩阵作成单元,
在所述存储单元中,存储所述二次模块,
所述矩阵作成单元根据在所述存储单元中存储的所述二次模块,作成将多个列与1个以上的行组合而成的表形式的所述矩阵,所述矩阵作成单元具有读入功能、二次语句输出功能、实例生成功能、矩阵作成功能和写入功能,
所述读入功能是从所述存储单元读入所述二次模块的功能,
所述二次语句输出功能是将所述二次模块的所述二次语句输出到所述矩阵的规定的列的各行中的功能,
所述实例生成功能是对于所述二次模块的1个以上的所述二次条件式,生成包含其全部都成立的情况、其一部分成立的情况、和其全部都不成立的情况在内的所有的实例的功能,
所述矩阵作成功能是如下功能:使所述列中的任意一列作为关联显示列而与所生成的每一个所述实例相对应,并在输出到所述行的所述二次语句中、在与所述关联显示列相对应的所述实例中成为执行对象的所述二次语句被输出的所述行,输出表示成为执行对象的显示信息,
所述写入功能是将所述矩阵存储到所述存储单元中的功能。
10.根据权利要求9所述的装置,其中,
所述矩阵作成单元,在所述矩阵作成功能中,选择在所述存储单元中存储的所述二次模块的所述二次语句的一部分,并仅抽出所述关联显示列中、与所述选择的所述二次语句成为执行对象的所述实例相对应的所述关联显示列来作为所述存储对象。
11.一种程序,用于使计算机作为权利要求1至权利要求10中任意一项所述的装置而发挥作用。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-162519 | 2011-07-25 | ||
JP2011162519A JP5458065B2 (ja) | 2011-07-25 | 2011-07-25 | モジュールの構造解析を支援する装置及びプログラム |
PCT/JP2012/067577 WO2013015109A1 (ja) | 2011-07-25 | 2012-07-10 | モジュールの構造解析を支援する装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103635880A true CN103635880A (zh) | 2014-03-12 |
CN103635880B CN103635880B (zh) | 2017-03-01 |
Family
ID=47600962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280033010.4A Active CN103635880B (zh) | 2011-07-25 | 2012-07-10 | 对模块的结构分析进行支援的装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9128807B2 (zh) |
JP (1) | JP5458065B2 (zh) |
KR (1) | KR101905675B1 (zh) |
CN (1) | CN103635880B (zh) |
WO (1) | WO2013015109A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015015622A1 (ja) * | 2013-08-01 | 2015-02-05 | 松崎 務 | 装置及びプログラム |
JP6366033B2 (ja) * | 2014-05-09 | 2018-08-01 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | プログラム中のif文の最適化方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5390320A (en) * | 1991-01-22 | 1995-02-14 | Grumman Aerospace Corporation | Automatically converting structured analysis tool database outputs into an integrated simulation model via transportable standardized metafile |
JPH09282150A (ja) * | 1996-04-12 | 1997-10-31 | Internatl Business Mach Corp <Ibm> | プログラムのデータ構造を表示する方法、データ構造表示装置及びデータ構造表示プログラムを格納する媒体 |
JPH10320190A (ja) * | 1997-05-20 | 1998-12-04 | Fujitsu Ltd | ソースプログラム経路検索装置および検索プログラムを記録した媒体 |
CN1949168A (zh) * | 2005-10-14 | 2007-04-18 | 英业达股份有限公司 | 面板程序转换系统以及方法 |
US20070261038A1 (en) * | 2006-05-03 | 2007-11-08 | Sony Computer Entertainment Inc. | Code Translation and Pipeline Optimization |
US20090292791A1 (en) * | 2008-05-23 | 2009-11-26 | Microsoft Corporation | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US20100095274A1 (en) * | 2008-10-10 | 2010-04-15 | American Express Travel Related Services Company, Inc. | System, Computer Program, and Method for a Static Code Coverage Analyzer for Computer Programs |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01286026A (ja) * | 1988-05-13 | 1989-11-17 | Hitachi Ltd | プログラムの実現仕様解析方式 |
JPH02140828A (ja) * | 1988-11-22 | 1990-05-30 | Nec Corp | 図式プログラムエディタにおける階層別プログラム表示方式 |
JPH03150636A (ja) * | 1989-11-08 | 1991-06-27 | Matsushita Electric Ind Co Ltd | コンパイル方法 |
JPH04127235A (ja) * | 1990-03-09 | 1992-04-28 | Hitachi Ltd | プログラム表示方法および装置ならびにプログラム生成方法および装置 |
JPH03292532A (ja) * | 1990-04-11 | 1991-12-24 | Nissan Motor Co Ltd | プログラム開発支援装置 |
JPH04165425A (ja) * | 1990-10-29 | 1992-06-11 | Nippon Telegr & Teleph Corp <Ntt> | 記号列中の入れ子関係抽出方法及びその装置 |
JPH07261990A (ja) * | 1994-03-23 | 1995-10-13 | Fujitsu Ltd | プログラム解析表示装置 |
JPH07281883A (ja) * | 1994-04-06 | 1995-10-27 | Fujitsu Ltd | プログラム修正支援装置及び方法 |
JPH0895763A (ja) * | 1994-09-22 | 1996-04-12 | Hitachi Software Eng Co Ltd | オリジナルプログラムへの部品プログラム取り込み方法 |
JPH11110198A (ja) | 1997-10-02 | 1999-04-23 | Fujitsu Ltd | モジュール構成図自動生成装置および記録媒体 |
JP3418544B2 (ja) * | 1998-03-24 | 2003-06-23 | 日立ソフトウエアエンジニアリング株式会社 | プログラムのテストデータ自動生成装置 |
JP2001154835A (ja) * | 1999-11-30 | 2001-06-08 | Sharp Corp | 構造化プログラム編集装置、及び構造化プログラム編集プログラムを記録した記録媒体 |
US7299458B2 (en) | 2002-10-31 | 2007-11-20 | Src Computers, Inc. | System and method for converting control flow graph representations to control-dataflow graph representations |
US7424646B2 (en) * | 2004-11-30 | 2008-09-09 | International Business Machines Corporation | Imposing a logical structure on an unstructured trace record for trace analysis |
JP2006209521A (ja) | 2005-01-28 | 2006-08-10 | Matsushita Electric Ind Co Ltd | テスト項目自動生成装置 |
US20060253840A1 (en) * | 2005-04-25 | 2006-11-09 | Eologic Limited | Program verification and visualization using a dynamic abstracted conceptual model |
US9021446B2 (en) * | 2006-06-28 | 2015-04-28 | Oracle America, Inc. | Uncoverage tool |
US7805705B2 (en) * | 2006-08-04 | 2010-09-28 | Apple Inc. | Graphically depicting program code depth |
JP2008181311A (ja) * | 2007-01-24 | 2008-08-07 | Toshiba Corp | リファクタリング支援装置及びプログラム |
JP5542300B2 (ja) * | 2007-09-28 | 2014-07-09 | 東芝三菱電機産業システム株式会社 | プログラム編集装置 |
US8336028B2 (en) * | 2007-11-26 | 2012-12-18 | International Business Machines Corporation | Evaluating software sustainability based on organizational information |
US20100042974A1 (en) * | 2008-08-12 | 2010-02-18 | International Business Machines Corporation | Build optimization with applied static analysis |
US8612938B2 (en) * | 2009-01-05 | 2013-12-17 | Tata Consultancy Services Limited | System and method for automatic generation of test data to satisfy modified condition decision coverage |
-
2011
- 2011-07-25 JP JP2011162519A patent/JP5458065B2/ja active Active
-
2012
- 2012-07-10 KR KR1020147003424A patent/KR101905675B1/ko active IP Right Grant
- 2012-07-10 US US14/235,040 patent/US9128807B2/en active Active
- 2012-07-10 CN CN201280033010.4A patent/CN103635880B/zh active Active
- 2012-07-10 WO PCT/JP2012/067577 patent/WO2013015109A1/ja active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5390320A (en) * | 1991-01-22 | 1995-02-14 | Grumman Aerospace Corporation | Automatically converting structured analysis tool database outputs into an integrated simulation model via transportable standardized metafile |
JPH09282150A (ja) * | 1996-04-12 | 1997-10-31 | Internatl Business Mach Corp <Ibm> | プログラムのデータ構造を表示する方法、データ構造表示装置及びデータ構造表示プログラムを格納する媒体 |
JPH10320190A (ja) * | 1997-05-20 | 1998-12-04 | Fujitsu Ltd | ソースプログラム経路検索装置および検索プログラムを記録した媒体 |
CN1949168A (zh) * | 2005-10-14 | 2007-04-18 | 英业达股份有限公司 | 面板程序转换系统以及方法 |
US20070261038A1 (en) * | 2006-05-03 | 2007-11-08 | Sony Computer Entertainment Inc. | Code Translation and Pipeline Optimization |
US20090292791A1 (en) * | 2008-05-23 | 2009-11-26 | Microsoft Corporation | Automated code splitting and pre-fetching for improving responsiveness of browser-based applications |
US20100095274A1 (en) * | 2008-10-10 | 2010-04-15 | American Express Travel Related Services Company, Inc. | System, Computer Program, and Method for a Static Code Coverage Analyzer for Computer Programs |
Also Published As
Publication number | Publication date |
---|---|
US9128807B2 (en) | 2015-09-08 |
WO2013015109A1 (ja) | 2013-01-31 |
KR101905675B1 (ko) | 2018-10-10 |
JP5458065B2 (ja) | 2014-04-02 |
US20140196009A1 (en) | 2014-07-10 |
JP2013025716A (ja) | 2013-02-04 |
CN103635880B (zh) | 2017-03-01 |
KR20140065389A (ko) | 2014-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5854930A (en) | System, method, and computer program product for script processing | |
Embley | Programming with data frames for everyday data items | |
CN103064721A (zh) | 多种解释性编程语言间的第一类对象共享 | |
US20200193085A1 (en) | Non-transitory computer-readable storage medium, electronic file generation method | |
US5781905A (en) | Program generating method combining data item part with database manipulation part | |
CN103635880A (zh) | 对模块的结构分析进行支援的装置以及程序 | |
JPH096628A (ja) | 並列処理手続き選定装置及び方法 | |
KR101578119B1 (ko) | 구조 해석 장치 및 프로그램 | |
Oman et al. | A programming style taxonomy | |
JPH0750434B2 (ja) | ユーザ・インターフェースを指定し開発する方法およびコンピュータ・システム | |
Campbell | Learn RStudio IDE | |
Schroeder et al. | The Book of Dash: Build Dashboards with Python and Plotly | |
JP2004355326A (ja) | ソフトウェア開発支援プログラム、当該プログラムを記録した記録媒体及びソフトウェア開発支援システム | |
Cotton | Testing R Code | |
US5381555A (en) | Method for designation of data in a data bank and extraction of data for use in a computer program | |
McConnell et al. | The evolution of CS1 textbooks | |
JP2001318796A (ja) | 内外イベントドリブン方式によるプログラム実行制御方法、記録媒体およびプログラム作成支援システム | |
Kurtz et al. | A concurrency simulator designed for sophomore-level instruction | |
JP6444546B1 (ja) | 数値データ(例えば、倍精度浮動小数点数、decimal(10進型)およびこれに相当する文字列データを含む。以下「gc」という)が有する機能の内、仮数部分に数値を指定できる機能などを利用して、gcを介してサブルーチンをコールすることができるシステムの発明。 | |
Berry et al. | Book on C | |
JP6132325B1 (ja) | システム開発支援装置 | |
JP3307461B2 (ja) | 推論装置 | |
Garcia-giovanni | HarvardX-PH125. 9x Data Science Capstone | |
JPS63148339A (ja) | プログラムテスト処理方式 | |
Deitel | C++ for Programmers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |