KR101578119B1 - 구조 해석 장치 및 프로그램 - Google Patents

구조 해석 장치 및 프로그램 Download PDF

Info

Publication number
KR101578119B1
KR101578119B1 KR1020147025939A KR20147025939A KR101578119B1 KR 101578119 B1 KR101578119 B1 KR 101578119B1 KR 1020147025939 A KR1020147025939 A KR 1020147025939A KR 20147025939 A KR20147025939 A KR 20147025939A KR 101578119 B1 KR101578119 B1 KR 101578119B1
Authority
KR
South Korea
Prior art keywords
statement
module
object range
hierarchical
row
Prior art date
Application number
KR1020147025939A
Other languages
English (en)
Other versions
KR20140126385A (ko
Inventor
신이치 이시다
Original Assignee
아이·시스템 가부시키가이샤
마츠자키 츠토무
신이치 이시다
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 아이·시스템 가부시키가이샤, 마츠자키 츠토무, 신이치 이시다 filed Critical 아이·시스템 가부시키가이샤
Publication of KR20140126385A publication Critical patent/KR20140126385A/ko
Application granted granted Critical
Publication of KR101578119B1 publication Critical patent/KR101578119B1/ko

Links

Images

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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • 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

구조 해석 장치 및 프로그램{STRUCTURE ANALYSIS DEVICE AND PROGRAM}
본 발명은, 프로그램 언어에 의해 기술(記述)된 1 이상의 문(文)으로 이루어지는 모듈(소스 프로그램)의 구조 해석을 지원하는 장치에 관한 것이다.
프로그램을 작성하는 경우, 구조화 프로그래밍이 강력히 추천된다. 구체적으로는, 예컨대, 비교적 소수의 문으로 이루어지는 처리 단위를 조합함으로써 모듈을 작성하도록 요구된다. 또, 모듈 내에 있어서는, 무조건(無條件) 분기문(unconditional branch statements, GOTO문)을 사용하는 것이 아니라, 조건문이나 반복문에 의한 네스트 구조(nested structure)(즉, 계층 구조)를 구비할 것이 요구된다. 또한, 복수의 모듈에 대한 공통적인 처리에 대해서는, 모듈화할 것이 요구된다. 따라서, 예컨대 프로그램의 합계 행수(行數)가 100만 행을 넘는 것과 같은 큰 시스템은, 각각이 수십의 처리 단위로 이루어지는 수천의 모듈을 구비하고 있는 경우도 많다.
상술한 바와 같은 대규모의 시스템은, 개발 후 당분간은, 개발에 종사한 담당자, 즉 모듈간의 관련 및 각각의 모듈의 구조를 숙지한 사람이 시스템의 유지 보수(maintenance)를 행하는 경우가 많다. 그러나, 이러한 시스템은 수 십 년에 걸쳐 유지 보수를 반복하면서 사용되는 경우도 많다. 시간이 경과함에 따라 개발에 종사한 담당자가 없게 되어, 모듈의 구조를 모르는 사람이 시스템의 유지 보수를 행하게 된다. 이러한 경우, 구조화 프로그래밍이 이루어져 있다는 점에 기인하여, 방대한 모듈로 분산하여 기술(記述)되어 있는 기능을 파악해야만 하므로, 유지 보수가 매우 곤란하다. 즉, 모듈의 구조 해석이 어려워지게 된다.
모듈 전체의 기능 또는 각 처리 단위의 기능을 이해하기 위해서는, 조건문에 의한 계층 구조(이하, 단순히 「계층 구조」라 함)를 파악할 필요가 있다. 그러나, 대규모의 시스템에 있어서의 모듈은, 대부분의 경우, 깊은 계층 구조(예컨대 10 계층 이상의 계층 구조)를 가지고 있다. 이러한 경우, 계층 구조를 파악하기가 용이하지 않다. 이 때문에, 예컨대, 유지 보수를 행한 개소(個所)와 유사한 개소(예컨대, 유사한 기능을 갖는 개소)를 간과하여, 이로 인해 필요한 유지 보수가 행해지지 않는 경우가 있다.
이상의 설명으로부터 이해되는 바와 같이, 계층 구조를 용이하게 파악할 수 있다면, 시스템의 유지 보수를, 보다 용이하고 또한 보다 적절히 행할 수가 있다. 또한, 계층 구조가 동일한 개소를 찾아냄으로써, 유사한 개소에 대한 유지 보수의 누락을 방지할 수가 있다. 예컨대, 특허 문헌 1 및 특허 문헌 2에는, 계층 구조의 파악을 지원하기 위한 기술(技術)이 개시되어 있다.
특허 문헌 1에 개시된 프로그램 개발 지원 장치는, 프로그램(모듈)을 표시할 때, IF문에 의한 네스트 구조(계층 구조)의 깊이에 따라 문(文)의 표시색을 변경한다. 이로써, 프로그램 개발자는 계층 구조를 시각적으로 파악할 수가 있다. 특허 문헌 2에 개시된 구조화 프로그램 편집 장치에 의하면, 프로그램(모듈)을 표시할 때, 계층을 나타내는 키워드(예컨대, if나 case)를 포함하는 문(文)을 표시하는 한편, 그 밖의 문을 표시하지 않거나 또는 간이(簡易) 표시할 수 있다. 이로써, 프로그램 개발자는 계층 구조를 비교적 용이하게 파악할 수가 있다.
일본 특허 공개 공보 H7-219756호 일본 특허 공개 공보 제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에 있어서의 섹션이다. 섹션의 각각은, 섹션명(처리 단위명)에 의해 특정할 수 있다. 단, 처리 단위는, 섹션이 아니어도 무방하다. 예컨대 프로그램 언어가 JAVA(일본에 있어서의 등록상표)인 경우, 처리 단위는, 함수명(처리 단위명)에 의해 특정 가능한 함수여도 무방하다.
모듈은, 다른 모듈 또는 해당 모듈 자신을 호출할 수가 있다. 또, 모듈의 섹션은, 다른 섹션 또는 해당 섹션 자신을 실행할 수가 있다. 보다 구체적으로는, 모듈에는, 문(文)으로서, 섹션을 섹션명에 의해 특정하여 실행하기 위한 처리 단위 실행문과, 모듈의 하나를 모듈명에 의해 특정하여 실행하기 위한 모듈 호출문을 기술할 수가 있다. 본 실시 형태에 의하면, 처리 단위 실행문은 PERFORM문이며, 모듈 호출문은 CALL문이다. 다른 프로그램 언어에 있어서의 처리 단위 실행문 및 모듈 호출문의 각각은, 예컨대 함수명을 지정한 문이다. 모듈 호출문이 함수명을 지정한 문인 경우, 모듈 호출문에 의해, 모듈 중의 지정된 함수 부분(즉, 모듈의 일부)이 실행된다. 이 경우, 모듈 호출문에 있어서 모듈명이 명시적으로 기술되지 않는 경우가 있을 수 있다. 즉, 함수명에 의해 모듈명이 간접적으로 특정되는 경우가 있을 수 있다.
또한, 모듈에는, 문(文)의 하나인 조건문을 기술할 수가 있다. 조건문은, 조건식을 구비하고 있으며, 조건문 내에 성립시 실행문 및/또는 불성립시 실행문을 기술할 수 있다. 환언(換言)하면, 조건문은, 성립시 실행문 및/또는 불성립시 실행문을 포함할 수가 있다. 성립시 실행문은, 조건문의 조건식이 성립할 경우에 실행되는 문이다. 불성립시 실행문은, 조건식이 성립하지 않을 경우에 실행되는 문이다. 본 실시 형태에 의한 조건문은, IF문 및 EVALUATE문이다. IF문에 있어서는, 성립시 실행문은 THEN구(句)로 기술되는 문이며, 불성립시 실행문은, ELSE구로 기술되는 문이다. 마찬가지로, EVALUATE문에 있어서는, 성립시 실행문은 WHEN구로 기술되는 문이다.
본 실시 형태에 의한 조건문 중 적어도 하나는, 성립시 실행문 및/또는 불성립시 실행문으로서 조건문을 더 포함할 수 있으며, 이로써 조건문에 의한 문의 계층화가 가능하다. 예컨대, IF문의 성립시 실행문으로서, IF문을 더 기술할 수 있다. 환언하면, 모듈은, 조건문에 의해 계층화할 수 있는 1 이상의 문으로 이루어지며, 이로써 소정의 계층 구조(즉, 조건문에 의한 계층 구조)를 가지고 있다. 용이하게 이해되는 바와 같이, 모듈에 있어서의 연속하는 문으로 이루어지는 복수의 개소(대상 범위)에 대하여, 계층화에 의한 계층 구조를 각각 특정할 수가 있다.
도 1에 나타내는 바와 같이, 기억장치(30)는, 예컨대 자기 디스크장치이다. 기억장치(30)는, 예컨대 폴더(folders, 도시 생략)에 의해 계층화된 다양한 파일을 기억할 수가 있다. 기억장치(30)는, 장치 본체(20)와 통신 가능하게 접속되어 있으며, 장치 본체(20)로부터의 지시에 따라 파일의 판독(취득)이나 기입(기억)을 행할 수 있다. 본 실시 형태에 의한 기억장치(30)에는, 1 이상의 모듈(31)이 기억되어 있다. 또, 기억장치(30)에는, 계층 구조 데이터(36)를 기억할 수가 있다.
모듈(31)은, 예컨대 프로그래밍 툴(programming tools, 도시 생략)을 사용하여 작성된다. 모듈(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(등록상표)의 워크시트(worksheet)여도 무방하다. 모듈(31)이 워크시트인 경우, 해석 수단(27)은, 예컨대 EXCEL 매크로에 의해 실현할 수 있다. 행(310)은, 적어도 일련 번호(행 식별; 311)와 문(文; 312)으로 구성된다. 일련 번호(311)는, 행(310)을 특정하는 동시에, 행(310)의 배열순서를 판단하기 위한 것이다. 일련 번호(311)는, 숫자뿐만 아니라 문자나 기호를 포함하고 있어도 무방하다. 문(312)에는, 문(예컨대, 데이터 정의문, 실행문, 코멘트문)이 기술되어 있다. 문(312)에는, 하나의 완결된 문 전체가 기술되어 있어도 무방하다. 문(文; 312)에는, 하나의 문의 일부가 기술되어 있어도 무방하다. 예컨대, MOVE문이 2개 행(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)을 가지고 있다. 취득 기능은, 모듈(31) 중 처리 대상으로 하는 대상 모듈(31)을 기억장치(30)(또는 주기억장치)로부터 취득하는 기능이다. 해석 기능은, 대상 모듈(31)의 계층 구조를 해석하는 기능이다. 기입 기능은, 대상 모듈(31)과 계층 구조 데이터(36)(따라서, 유사 통지 정보(364))를 관련지어 기억장치(30)에 기억하는 기능이다. 표시 기능은, 대상 모듈(31)과 유사 통지 정보(364)를 관련지어 표시장치(50)에 표시하는 기능이다.
상세하게는, 해석 수단(27)은, 예컨대 입력장치(40)로부터 입력된 기동(起動) 지시에 의해 기동되어, 대상 모듈(31)을 특정하기 위한 대상 모듈명을 취득한다(S400). 대상 모듈명은, 예컨대 기동 지시의 일부로서 입력하면 된다. 해석 수단(27)은, 취득한 대상 모듈명에 의해 특정되는 대상 모듈(31)을 기억장치(30)로부터 읽어 들인다(S402). 이 때, 예컨대 소정의 폴더에 기억된 모듈(31)만이 읽어 들이는 대상이어도 무방하다. 대상 모듈(31)이 기억장치(30)에 기억되어 있지 않은 경우, 해석 수단(27)은 처리를 종료한다(도시 생략).
다음으로, 해석 수단(27)은, 대상 모듈(31)의 각 문(文)의 계층 레벨을 특정한다(S404). 구체적으로는, 해석 수단(27)은, 대상 모듈(31)의 행(310)을 1행째부터 최종(最終) 행까지 순차적으로 취득하여, 행(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)에 포함되는 조건문이 1개뿐인 경우, 처리를 종료한다(도시 생략). 이상의 설명으로부터 이해되는 바와 같이, 본 실시 형태에 의하면, 대상 범위에는 조건문이 적어도 1개 포함되어 있다. 또한, 대상 범위에는, 대상 범위에 포함되는 조건문의 각각의 개시로부터 종료까지의 전체가 포함되어 있다. 단, 대상 범위는, 조건문보다 전(前)부터 또는 조건문의 도중(途中)부터 개시되어 있어도 무방하다.
도 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의 계층 레벨 참조)이 순차적으로 연결되어, 계층 패턴(압축 전)이 작성된다. 또한, 계층 패턴(압축 전)에 있어서 연속하는 동일 계층 레벨은 1개의 계층 레벨로 압축되며, 이로써 계층 패턴(압축 후)이 작성된다.
이상의 설명으로부터 이해되는 바와 같이, 본 실시 형태에 있어서의 계층 레벨은, 대상 범위의 선두의 문(文)을 기준으로 하여 특정되는 계층의 깊이를 나타내는 것이다. 또, 대상 범위에 있어서의 계층 구조는, 대상 범위에 포함되는 계층 레벨을 연결한 계층 패턴에 의해 식별할 수가 있다.
도 6의 하단에 나타내는 바와 같이, 해석 수단(27)은, 상술한 바와 같이 검출한 대상 범위의 개시 행, 계층 패턴(압축 후) 및 종료 행을, 계층 구조 데이터(36)의 일련 번호(361), 계층 패턴(362) 및 종료 행(363)으로, 각각 설정한다(S406의 처리의 일부). 환언하면, 일련 번호(361), 계층 패턴(362) 및 종료 행(363)에 의해 각각 특정되는 1 이상의 대상 범위가, 계층 구조 데이터(36)에 설정된다. 이 때 계층 패턴(362)은, 대상 범위의 선두의 문(즉, IF문)을 기준으로 하여 특정되는 계층의 깊이를 나타내도록 변환된다. 구체적으로는, 예컨대 "2 3 4 3 2"는 "1 2 3 2 1"로 변환된다. 도 6의 하단 우측의 모식도로부터 이해되는 바와 같이, 상기와 같이 작성된 계층 패턴(362)은, 산악의 지형을 본뜨도록 할 수가 있다. 이 경우, 계층 패턴(362)에 연결된 계층 레벨의 각각은, 산악의 산기슭을 기준으로 한 상대적인 높이를 나타내고 있다.
다음으로, 해석 수단(27)은, 작성한 계층 구조 데이터(36)의 행(360)을, 계층 패턴(362)의 길이(즉, 계층 패턴(362)에 연결된 계층 레벨의 수)의 내림차순(降順)으로 소트(sort)한다(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)의 대상 범위) 중 서로 다른 2개의 대상 범위(즉, 제 1 대상 범위와 제 2 대상 범위)를 선택한다. 해석 수단(27)은, 제 1 대상 범위의 계층 구조와 제 2 대상 범위의 계층 구조가 동일한 경우, 유사 통지 정보(364)를, 제 2 대상 범위와 관련지어 작성한다(S410~S416). 보다 구체적으로는, 해석 수단(27)은, 작성한 계층 구조 데이터(36)의 행(360)의 각각에 대하여, 동일 계층 패턴(362)의 유무를 판정한다(S410~S416).
상세하게는, 해석 수단(27)은, 우선, 제 1 대상 범위의 계층 패턴으로서, 소트 후의 선두의(1행째의 행(360)의) 계층 패턴(362)을 취득한다(S410). 도 6의 하단의 예를 참조하면, "1 2 3 4 3 2 3 4 3 2 1" 이 취득된다.
다음으로, 해석 수단(27)은, 취득한 계층 패턴(362)과 동일한 계층 패턴(362)이, 계층 구조 데이터(36) 중에 존재하는지 여부를 판정한다(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에서 YES인 경우), S418의 처리를 행한다. 한편, 미처리의 계층 패턴(362)이 존재하는 경우(S414에서 NO인 경우), 해석 수단(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행씩 물리면서(shifting) 계층 레벨을 비교할 수도 있다. 단, 성능을 고려할 경우, 본 실시 형태와 같이 설계하는 것이 바람직하다.
이상의 설명으로부터 이해되는 바와 같이, 본 실시 형태에 의한 해석 수단(27)의 해석 기능은, 제 1 대상 범위의 계층 패턴(362)과 제 2 대상 범위의 계층 패턴(362)이 동일한 경우, 제 1 대상 범위의 계층 구조와 제 2 대상 범위의 계층 구조가 동일하다(즉, 제 1 대상 범위와 제 2 대상 범위가 유사하다)고 판정한다. 단, 계층 구조는, 상기의 방법과 다른 방법에 의해 비교할 수 있다. 예컨대, 도 6에 나타내는 계층 패턴(압축 전)에 의해 계층 구조를 비교하여도 무방하다. 이와 같이 함으로써, 계층 구조를 보다 엄밀하게 비교할 수가 있다. 또, 계층 패턴(압축 전)을 작성할 때, IF문, THEN구, ELSE구, END-IF 이외의 문(예컨대, MOVE문)에도 계층 레벨을 부여하여, 계층 패턴(압축 전)에 연결하여도 무방하다. 이와 같이 함으로써, 2개의 대상 범위의 유사성을 더 엄밀하게 비교할 수가 있다.
2개의 대상 범위의 유사성은, 계층 패턴 이외에 의해서도 비교할 수가 있다. 예컨대, 2개의 대상 범위에 있어서 사용되고 있는 실행문의 종류나 수, 사용되고 있는 함수의 종류나 수, 사용되고 있는 항목 명칭의 종류나 수로부터 평가점을 산출할 수도 있다. 이 경우, 계층 패턴이 동일하고, 또한 산출한 평가점이 소정 점수 이상일 때에, 2개의 대상 범위가 유사한 것으로 판정하면 된다.
해석 수단(27)은, 해석 처리(S404~S416)를 종료하면, 유사 통지 정보(364)를 기억장치(30)에 기입한다(S418). 보다 구체적으로는, 해석 수단(27)은, 작성한 계층 구조 데이터(36)를 기억장치(30)에 기입한다. 상술한 바와 같이, 계층 구조 데이터(36)는, 대상 모듈(31)과 관련지어 기억된다. 따라서, 계층 구조 데이터(36)의 유사 행(364n)(즉, 대상 범위와 관련지어진 유사 통지 정보(364))을 참조함으로써, 대상 모듈(31)에 있어서의 서로 유사한 대상 범위를 용이하게 찾아낼 수가 있다.
다음으로, 해석 수단(27)은, 유사한 개소를 식별할 수 있도록 하여 대상 모듈(31)을 표시장치(50)에 표시하고(S420), 처리를 종료한다. 보다 구체적으로는, 해석 수단(27)은, 예컨대 도 7에 나타내는 바와 같이 대상 모듈(31)을 표시한다. 도 7에 나타내는 바와 같이, 대상 모듈(31) 중 서로 유사한 대상 범위의 각각은, 테두리(frame)로 둘러싸여 표시된다. 또한, 테두리의 내측에, 어느 대상 범위와 유사한지를 나타내는 유사 식별 코드(도 7에 있어서는, 동그라미로 둘러싼 숫자)가 표시된다. 단, 유사 식별 코드를 표시하지 않고, 테두리의 속성(색이나 굵기 등)을 바꿈으로써, 대상 범위가 어느 대상 범위와 유사한지를 나타내어도 무방하다. 또, 대상 모듈(31) 내에 있어서, 서로 유사한 대상 범위가 떨어져 있는 경우, 예컨대, 대상 모듈(31)의 선두에 가장 가까운 대상 범위를 표시하면 된다. 서로 유사한 개소를, 시각적으로 용이하게 파악할 수 있도록 표시함으로써, 유지 보수가 필요한 개소를 용이하게 검출할 수 있게 된다. 또한, 공통된 처리 단위로 해야 할 개소를 검출할 수도 있다.
표시 처리(S420)에 있어서, 해석 수단(27)은, 대상 모듈(31)을 표시하는 것이 아니라, 작성한 계층 구조 데이터(36)를 표시하여도 무방하다. 환언하면, 해석 수단(27)은, 대상 모듈(31)과 유사 통지 정보(364)를 관련지어 표시장치(50)에 표시하면 된다.
본 실시 형태에 의한 해석 수단(27)은, 기입 기능(S418)과, 표시 기능(S420)을 가지고 있지만, 해석 수단(27)은, 기입 기능(S418) 및 표시 기능(S420) 중 일방(一方)을 가지고 있으면 된다. 또한, 상기의 2개의 기능 모두 갖지 않고, 대신에, 대상 모듈(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)이 생성되어 있다). 또한, AAA 모듈로부터 CALL문에 의해 호출되는 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)은, "*#E EVALUATE 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문으로 분해되며, 2개의 평가 대상 오퍼랜드(operand)간의 관계를 1개의 논리 연산자에 의해서만 평가하는 단순한 이차적 조건식을 갖는 IF문으로 변환된다. 단, 상기의 변환의 일부(예컨대, AND나 OR로 결합된 조건식의 분해)는 행하지 않아도 무방하다.
이상에 추가하여, 복수의 문(文)(312)에 띄어쓰기 되어 있는 MOVE문 등은, 1개의 이차적 문(327)에 합쳐진다. 즉, 이차적 모듈(32)의 행(320)의 각각은, 모듈(31)의 행(310)에 근거하여 생성되어 있다. 보다 구체적으로는, 이차적 문(327)은, 문(文)(312)을 그대로 복사(copy)한 것이거나, 또는 문(312)을 가공·전개함으로써 생성된 것이다.
본 실시 형태에 의한 모듈 식별(321)은, 각각의 행(320)이 어느 모듈(31)에 근거하는 것인지를 나타내는 것이다. 보다 구체적으로는, 모듈 식별(321)에는, 모듈명(예컨대, XXX)이 설정된다. 단, 모듈명 대신에, 모듈(31)을 일의적(一意的)으로 식별할 수 있는 번호 등을 설정하여도 무방하다.
일련 번호(326)에는, 이차적 문(327)이 문(文)(312)의 복사(copy)인 행(320)에 있어서는, 복사원(元)인 행(310)의 일련 번호(311)가 설정된다. 행(310)과 1대 1로 대응하는 행(320)(예컨대, 문(312)을 코멘트화한 이차적 문(327)의 행(320))에 대해서는, 일련 번호(326)에는, 대응하는 행(310)의 일련 번호(311)가 설정된다. 한편, 생성된(추가된) 행(320)의 일련 번호(326)에는, 생성된 행(320)임을 식별할 수 있는 식별자(예컨대, 기호의 조합)가 설정된다. 이와 같이 함으로써, 시스템의 유지 보수를 행할 때에, 행(320)과 행(310)을 용이하게 대응지을 수가 있다.
본 실시 형태에 의한 행 번호(322)에는, 1부터 시작되는 시리얼 넘버(serial number)가 행(320)의 배열순서에 따라 설정되어 있다. 단, 행 번호(322)는, 행 번호(322)의 대소(大小) 관계를 비교하는 것이 가능한 한, 시리얼 넘버가 아니어도 무방하다. 예컨대, 행 번호(322)는 문자나 기호의 조합이어도 무방하다.
본 실시 형태에 의한 계층 식별(323)은, 분기 계층과 분기의 깊이로 구성되어 있다. 분기 계층은, 조건문에 의한 계층을 식별하기 위해 사용된다. 본 실시 형태에 의한 분기 계층은, 1행째의 행(320)에 있어서의 출발 값으로서 1을 사용함으로써 설정된다. 환언하면, 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행째의 행(320)에 있어서의 출발 값으로서 1을 사용함으로써 설정된다. 환언하면, 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 이상의 정수)의 자릿수(桁, digit)가 추가되고, END IF가 기술된 행(320)의 다음의 행에 있어서 말미의 「. q」의 자릿수가 삭제된다. 「. q」에 있어서의 q의 값은, 자릿수의 각각에 대하여 1을 출발 값으로 하고 있다. 자세하게는, 1 자릿수째의 「. q」(예컨대 1.2의 「. 2」)에 있어서의 q의 값은, 1을 출발 값으로 하고 있으며, 부가될 때마다 인크리먼트(increment)된다. 한편, 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)이 존재하는지 여부를 나타내는 플래그(flag)가 설정된다.
행(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 열째(헤더(header)에 "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) 중, 보다 복잡한 조건문이 기술되어 있는 개소는, 표의 열(列)방향으로 늘어나도록(extend) 하여 표시된다. 따라서, 플로우 차트(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)을 가지고 있다. 제어 정보 취득 기능은, 전개 제어 정보를 취득하는 기능이다. 판독기능은, 모듈(31) 중 처리 대상으로 하는 대상 모듈(31)을 기억장치(30´)로부터 읽어 들이는 기능이다. 변환 기능은, 대상 모듈(31)을 이차적 모듈(32)로 변환하는 기능이다. 기입 기능은, 이차적 모듈(32)을 기억장치(30´)에 기억하는 기능이다.
보다 구체적으로는, 도 14에 나타내는 바와 같이, 변환 수단(21)은, 예컨대 입력장치(40)로부터 입력된 기동 지시에 의해 기동되면, 예컨대 기동 지시의 일부로서 입력된 전개 제어 정보를 취득한다(S1400). 본 실시 형태에 의한 전개 제어 정보에는, 전개 제한 지시를 포함시킬 수가 있다. 전개 제한 지시는, 실행 대상인 섹션 또는 호출 대상인 모듈(31)의 문(312)에 기술되어 있는 문(文)의 전개를 첫 회만으로 제한할 것을 지시하는 것이다.
다음으로, 변환 수단(21)은, 대상 모듈(31)을 특정하기 위한 대상 모듈명을 취득한다(S1402). 대상 모듈명은, 전개 제어 정보와 같은 방법으로 취득할 수가 있다. 변환 수단(21)은, 취득한 대상 모듈명에 의해 특정되는 대상 모듈(31)을 기억장치(30´)로부터 읽어 들인다(S1404). 이 때, 예컨대 소정의 폴더에 기억된 모듈(31)만이 판독 대상이어도 무방하다. 대상 모듈(31)이 기억장치(30´)에 기억되어 있지 않은 경우, 변환 수단(21)은, 처리를 종료한다(도시 생략).
다음으로, 변환 수단(21)은, 대상 모듈(31)의 처리 개시 개소의 문(312)을 취득한다(S1406). 본 실시 형태에 의한 처리 개시 개소는, 메인 섹션의 선두이다. 변환 수단(21)은, 취득한 문(312)에 대해 이차적 문(文) 출력 처리를 행한다(S1408). 다음으로, 변환 수단(21)은, 처리 종료 개소의 문(312)이 처리 완료된 것인지 판정한다(S1410). 본 실시 형태에 의한 처리 종료 개소는, 메인 섹션의 말미이다. 처리가 종료되어 있는 경우(S1410에 있어서 YES인 경우), 변환 수단(21)은, 작성한 이차적 모듈(32)을 기억장치(30´)에 기입하고(S1414), 처리를 종료한다. 한편, 처리가 종료되어 있지 않은 경우(S1410에 있어서 NO인 경우), 변환 수단(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에서 YES인 경우), 변환 수단(21)은, 상술한 바와 같이 IF문 이외의 조건문을 IF문으로 변환하는 등의 처리를 행한다. 보다 구체적으로는, 변환 수단(21)은, 조건문의 조건식에 근거하여, 이차적 문의 하나인 이차적 조건문(IF문)이 기술된 이차적 문(327)을 생성하고, 이차적 조건문에 의해 이차적 문(327)을 계층화하여 이차적 모듈로 출력하며(S1504), 이차적 문 출력 처리를 종료한다. 상술한 이차적 조건문은, 2개의 평가 대상 오퍼랜드간의 관계를 1개의 논리 연산자에 의해서만 평가하는 이차적 조건식이 성립하는지 여부에 따라 실행해야 할 이차적 문(327)을 선택하는 조건문(이차적 문(327))이다.
문(文)(312)에 기술되어 있는 실행문(즉, 판정 대상문)이 조건문이 아닌 경우(S1502에서 NO인 경우), 변환 수단(21)은, 판정 대상문이 처리 단위 실행문(PERFORM문)인지 판정한다(S1506). 판정 대상문이 처리 단위 실행문인 경우(S1506에서 YES인 경우), 변환 수단(21)은, 실행 대상의 처리 단위(본 실시 형태에 의하면, 섹션)의 처리 개시 개소의 문(312)을 취득한다. 본 실시 형태에 있어서는, 처리 단위의 처리 개시 개소는 섹션의 선두이다.
판정 대상문이 처리 단위 실행문이 아닌 경우(S1506에서 NO인 경우), 변환 수단(21)은, 판정 대상문이 모듈 호출문(본 실시 형태에 의하면, CALL문)인지 판정한다(S1510). 판정 대상문이 모듈 호출문인 경우(S1510에서 YES인 경우), 변환 수단(21)은, CALL문에 의해 특정되는 호출 대상인 모듈(31)을 기억장치(30´)로부터 판독하여(S1512), 호출 대상인 모듈(31)의 처리 개시 개소의 문(312)을 취득한다(S1514). 본 실시 형태에 의하면, 호출 대상인 모듈(31)의 처리 개시 개소는, 해당 모듈(31)의 메인 섹션의 선두이다. 판정 대상문이 모듈 호출문이 아닌 경우(S1510에서 NO인 경우), 변환 수단(21)은 이차적 문 출력 처리를 종료한다.
변환 수단(21)은, 실행 대상인 섹션의 문(312) 또는 호출 대상인 모듈(31)의 문(312)에 대하여, 재귀(再歸)적으로 이차적 문 출력 처리를 행한다(S1516). 다음으로, 변환 수단(21)은, 처리 종료 개소의 문(312)이 처리 완료된 것인지 판정한다(S1518). 본 실시 형태에 의한 처리 종료 개소는, 실행 대상인 섹션에 대해서는 해당 섹션의 말미이며, 호출 대상인 모듈(31)에 대해서는 메인 섹션의 말미이다. 처리가 종료되어 있는 경우(S1518에 있어서 YES인 경우), 변환 수단(21)은, 이차적 문 출력 처리를 종료한다. 한편, 처리가 종료되어 있지 않은 경우(S1518에 있어서 NO인 경우), 변환 수단(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)의 전개를 첫 회의 1회만 행하고(즉, 동일한 처리 단위를 1회만 전개하고), 동일한 모듈(31)에 대해서는, 호출 대상인 모듈(31)에 기술되어 있는 문(312)의 전개를 첫 회의 1회만 행한다(즉, 동일한 모듈(31)을 1회만 전개한다). 단, 변환 수단(21)의 변환 기능은, 전개 제한 지시가 지정되어 있는지 여부와 관계없이, 동일한 처리 단위나 동일한 모듈(31)을 1회만 전개하여도 무방하다. 또한, 변환 수단(21)의 변환 기능은, 전개 제한 지시가 지정되어 있는지 여부에 관계없이, 동일한 처리 단위나 동일한 모듈(31)을 반복하여 전개하여도 무방하다.
이상으로 설명한 바와 같이, 변환 수단(21)에 의해, 이차적 문(327)으로 이루어지는 이차적 모듈(32)이 기억장치(30´)에 기억된다.
도 16으로부터 이해되는 바와 같이, 본 실시 형태에 의한 가공 수단(22)은, 판독기능(S1600, S1602)과, 계층 식별 부가 기능(S1606)과 명령 식별 부가 기능(S1608)과, 기입 기능(S1014)을 가지고 있다. 판독기능은, 처리 대상인 이차적 모듈(32)을 기억장치(30´)로부터 읽어 들이는 기능이다. 계층 식별 부가 기능은, 이차적 모듈(32)의 이차적 문(327)의 적어도 일부에 대하여 계층 식별(323)을 부가하는 기능이다. 본 실시 형태에 의한 계층 식별(323)은, 이차적 문(327)이 어느 계층에 위치하고 있는지를 나타내고 있다. 명령 식별 부가 기능은, 이차적 모듈(32)의 이차적 문(327)의 적어도 일부에 대하여 명령 식별(324)을 부가하는 기능이다. 본 실시 형태에 의한 명령 식별(324)은, 이차적 문(327)에 기술되어 있는 문의 종별을 나타내고 있다. 기입 기능은, 계층 식별(323) 및 명령 식별(324)이 부가된 이차적 문(327)으로 이루어지는 이차적 모듈(32)을 기억장치(30´)에 기억하는 기능이다.
보다 구체적으로는, 도 16에 나타내는 바와 같이, 가공 수단(22)은, 예컨대 변환 수단(21)과 마찬가지로 기동되면, 처리 대상인 이차적 모듈(32)을 특정하기 위한 이차적 모듈명을 취득한다(S1600). 가공 수단(22)은, 취득한 이차적 모듈명에 의해 특정되는 이차적 모듈(32)을 기억장치(30´)로부터 읽어 들인다(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에 있어서 YES인 경우), 가공 수단(22)은, 가공한 이차적 모듈(32)을 기억장치(30´)에 기입하고(S1614), 처리를 종료한다. 한편, 처리가 종료되어 있지 않은 경우(S1612에 있어서 NO인 경우), 가공 수단(22)은, 다음에 처리할 이차적 문(327)(후속하는 행(320)의 이차적 문(327))을 취득하고(S1616), 취득한 이차적 문(327)에 대해 계층 식별(323)의 부가 등을 행한다(S1606, S1608).
이상으로 설명한 바와 같이, 가공 수단(22)에 의해, 계층 식별(323) 및 명령 식별(324)이 부가된 이차적 문(327)으로 이루어지는 이차적 모듈(32)(본 실시 형태에 의하면, 계층 식별(323) 등이 추기(追記)된 워크시트)이 기억장치(30´)에 기억된다.
본 실시 형태에 의한 해석 수단(27´)은, 제 1 실시 형태에 의한 해석 수단(27)과 같은 기능을 구비하고 있다. 이하, 해석 수단(27)과 다른 기능을 중심으로, 도 17에 나타내는 예를 참조하면서, 도 4를 사용하여 설명한다.
해석 수단(27´)은, 해석 수단(27)과 마찬가지로 기동되면, 대상 모듈(32)을 기억장치(30´)(또는 주기억장치)로부터 읽어 들인다(S400, S402). 환언하면, 해석 수단(27´)은, 모듈(31)이 아닌, 이차적 모듈(32)을 해석 대상으로 한다.
해석 수단(27´)은, 대상 모듈(32)의 각 문(文)의 계층 레벨을 특정할 때(S404), 명령 식별(324)의 명령명에 따라, IF문의 개시, 종료 등을 판정한다. 또, 해석 수단(27´)은, 계층 식별(323)의 길이를, 계층 레벨로서 사용한다. 도 17의 예를 참조하면, 각 행(320)에 대하여, 우측으로부터 2번째의 열에 나타내는 바와 같이 계층 레벨이 부여된다.
해석 수단(27´)은, 해석 수단(27)과 마찬가지로, 대상 범위(즉, 계층 구조의 해석을 행할 대상으로 하는 범위)를 추출한다(S406). 단, 본 실시 형태에 의한 해석 수단(27´)은, 대상 범위에 포함되는 범위를 대상 범위로서 사용하지 않는다. 구체적으로는, 도 17에 예시하는 대상 모듈(32)을 참조하면, IF문(조건문) 중 2개는, 행 번호(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)의 각각에 대하여, "1 2 3 4 3 4 5 4 3 2 1"의 계층 패턴이 작성되어, 계층 패턴(329p)으로 설정된다.
해석 수단(27´)은, 해석 수단(27)과 마찬가지로, 작성한 계층 구조(329)의 대상 범위(즉, 대상 모듈(31)의 대상 범위) 중 서로 다른 2개의 대상 범위(즉, 제 1 대상 범위와 제 2 대상 범위)를 선택한다. 해석 수단(27´)은, 제 1 대상 범위의 계층 구조와 제 2 대상 범위의 계층 구조가 동일한 경우, 유사 통지 정보(329r)를 작성한다(S408~S416). 해석 수단(27´)은, 유사 통지 정보(329r)를, 제 1 대상 범위 및 제 2 대상 범위와 관련지어 작성한다. 보다 구체적으로는, 해석 수단(27´)은, 대상 모듈(32)의 행(320)의 각각에 대하여, 동일 계층 패턴(329p)의 유무를 판정한다(S410~S416). 해석 수단(27´)은, 서로 동일한 계층 패턴(329p)을 갖는 2개의 행(320)을 검출했을 경우, 검출한 2개의 행(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에서 YES인 경우), S418의 처리를 행한다. 보다 구체적으로는, 계층 구조(329)를 설정한 이차적 모듈(32)을 기억장치(30´)에 기입한다(갱신한다). 한편, 미처리의 계층 패턴(329p)이 존재하는 경우(S414에서 NO인 경우), 다음에 처리해야 할 계층 패턴(329p)을 취득한다.
이상의 설명으로부터 이해되는 바와 같이, 본 실시 형태에 의한 해석 수단(27´)은, 제 1 실시 형태에 의한 해석 수단(27)과 마찬가지로 2개의 대상 범위의 유사성을 비교할 수가 있다. 또한, 본 실시 형태에 의하면, 대상 모듈(32)에는, 관련되는 복수의 모듈(31)이 처리순으로 연결되어 있다. 따라서, 시스템 전체에 있어서의 유사한 대상 범위를, 보다 조사하기 쉬운 형식으로, 한꺼번에 검출할 수가 있다.
도 18로부터 이해되는 바와 같이, 본 실시 형태에 의한 플로우 차트 작성 수단(25)은, 판독기능(S1800, S1802)과, 플로우 차트 작성 기능(S1804, S1805)과, 기입 기능(S1806)을 가지고 있다.
보다 구체적으로는, 도 18에 나타내는 바와 같이, 플로우 차트 작성 수단(25)은, 예컨대 변환 수단(21)과 마찬가지로 기동되면, 처리 대상인 이차적 모듈(32)을 특정하기 위한 이차적 모듈명을 취득한다(S1800). 플로우 차트 작성 수단(25)은, 취득한 이차적 모듈명에 의해 특정되는 처리 대상인 이차적 모듈(32)을 기억장치(30´)로부터 읽어 들인다(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)은, 플로우 차트 중의 서로 유사한 개소(대상 범위)를 마킹(marking)한다(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) 등을 판독하여, 기억장치(70)에 모듈(31) 등을 기입할 수가 있다.
용이하게 이해되는 바와 같이, 본 실시 형태에 의하면, 제 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 대상 범위는, 취득한 상기 대상 모듈의 상기 대상 범위 중 서로 다른 상기 대상 범위이고, 상기 유사 통지 정보는, 상기 대상 모듈 내에 서로 유사한 상기 대상 범위가 존재하는 것을 나타내는
    구조 해석 장치.
  2. 제 1항에 있어서,
    상기 대상 범위에는 상기 조건문이 적어도 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항 중 어느 한 항에 기재된 구조 해석 장치로서 기능시키기 위한 프로그램을 기록한 기록매체.
KR1020147025939A 2012-04-09 2013-04-05 구조 해석 장치 및 프로그램 KR101578119B1 (ko)

Applications Claiming Priority (3)

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

Publications (2)

Publication Number Publication Date
KR20140126385A KR20140126385A (ko) 2014-10-30
KR101578119B1 true KR101578119B1 (ko) 2015-12-16

Family

ID=49179215

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147025939A KR101578119B1 (ko) 2012-04-09 2013-04-05 구조 해석 장치 및 프로그램

Country Status (5)

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

Families Citing this family (3)

* 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 キヤノンマーケティングジャパン株式会社 情報処理装置、情報処理方法およびプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070239993A1 (en) 2006-03-17 2007-10-11 The Trustees Of The University Of Pennsylvania System and method for comparing similarity of computer programs
JP2010140434A (ja) 2008-12-15 2010-06-24 Internatl Business Mach Corp <Ibm> プログラムの解析を支援するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム

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 構造化プログラム編集装置、及び構造化プログラム編集プログラムを記録した記録媒体
US6918107B2 (en) * 2001-07-02 2005-07-12 Bea Systems, Inc. Programming language extensions for processing data representation language objects and related applications
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
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
US8578350B2 (en) * 2006-11-30 2013-11-05 Ncr Corporation System and method for interpreting a specification language file to implement a business 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 東芝三菱電機産業システム株式会社 プログラム編集装置
WO2009102903A2 (en) * 2008-02-12 2009-08-20 Scrutiny, Inc. Systems and methods for information flow analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070239993A1 (en) 2006-03-17 2007-10-11 The Trustees Of The University Of Pennsylvania System and method for comparing similarity of computer programs
JP2010140434A (ja) 2008-12-15 2010-06-24 Internatl Business Mach Corp <Ibm> プログラムの解析を支援するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6216757B2 (ja) ビジネスルールの編集およびコンパイルの、方法、コンピュータプログラム、およびシステム
Le et al. Flashextract: A framework for data extraction by examples
US9542622B2 (en) Framework for data extraction by examples
KR100890966B1 (ko) 문서 처리 방법, 기록 매체 및 시스템
JP5040925B2 (ja) 情報抽出規則作成支援システム、情報抽出規則作成支援方法及び情報抽出規則作成支援プログラム
JPH09212352A (ja) プログラム開発支援システム
US20170154019A1 (en) Template-driven transformation systems and methods
CN107203468A (zh) 一种基于ast的软件版本演化对比分析方法
JP2000181917A (ja) 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体
KR101578119B1 (ko) 구조 해석 장치 및 프로그램
JP2013246522A (ja) 構造化文書検索装置及びプログラム
CN101388034B (zh) 用于处理数据库的设备和方法
JP2015162004A (ja) 開発ドキュメント間トレースリンク生成支援装置及び方法及びプログラム
KR101905675B1 (ko) 모듈의 구조 해석을 지원하는 장치 및 프로그램
KR101705254B1 (ko) 장치 및 프로그램
JP5998835B2 (ja) 情報処理装置及びプログラム
CN109739835A (zh) 一种数据版本保存方法及装置
JP2003196296A (ja) 文献知識管理装置、文献知識管理方法、プログラム、および、記録媒体
Fraternali et al. Almost rerere: An approach for automating conflict resolution from similar resolved conflicts
Rahman et al. Pattern analysis of TXL programs
JP2009134662A (ja) 性能テストデータ構築ツール
CN117669509A (zh) 一种报告生成方法、装置及设备
JPH05197534A (ja) プログラムデータベースシステム
Sturman Implementing the FRBR conceptual approach in the ISIS software environment: IFPA (ISIS FRBR prototype application)
Rahman Pattern analysis of TXL programs

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20181106

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190904

Year of fee payment: 5