KR101974804B1 - 플로우 다이어그램 생성 방법 및 이를 실행하는 장치 - Google Patents

플로우 다이어그램 생성 방법 및 이를 실행하는 장치 Download PDF

Info

Publication number
KR101974804B1
KR101974804B1 KR1020170084506A KR20170084506A KR101974804B1 KR 101974804 B1 KR101974804 B1 KR 101974804B1 KR 1020170084506 A KR1020170084506 A KR 1020170084506A KR 20170084506 A KR20170084506 A KR 20170084506A KR 101974804 B1 KR101974804 B1 KR 101974804B1
Authority
KR
South Korea
Prior art keywords
diagram
specific
block
flow diagram
blocks
Prior art date
Application number
KR1020170084506A
Other languages
English (en)
Other versions
KR20190004198A (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 주식회사 우리은행
Priority to KR1020170084506A priority Critical patent/KR101974804B1/ko
Publication of KR20190004198A publication Critical patent/KR20190004198A/ko
Application granted granted Critical
Publication of KR101974804B1 publication Critical patent/KR101974804B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • G06Q10/103Workflow collaboration or project management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations
    • G06Q10/06311Scheduling, planning or task assignment for a person or group
    • G06Q10/063114Status monitoring or status determination for a person or group
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0633Workflow analysis

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Theoretical Computer Science (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 일 실시예에 따른 플로우 다이어그램 생성 방법은 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성하는 단계, 상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 계층화하여 표시하는 단계 및 상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 상기 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시하는 단계를 포함한다.

Description

플로우 다이어그램 생성 방법 및 이를 실행하는 장치{FLOW DIAGRAM GENERATION METHOD AND APPARATUS PERFORMING THE SAME}
본 발명은 플로우 다이어그램 생성 방법 및 이를 실행하는 장치에 관한 것으로, 보다 상세하게는 소스 프로그램에 대한 블록 다이어그램을 이용하여 플로우 다이어그램을 생성하는 플로우 다이어그램 생성 방법 및 이를 실행하는 장치에 관한 것이다.
현재의 소프트웨어들은 그 요구사항이 늘어나고 규모 역시 커져서 여러 사람이 팀을 이루어 개발하는 것이 일반적이다. 이러한 개발과정에서 서로 다른 개발자가 구현한 코드를 통합하는 것은 무척 어려운 일이며, 이렇게 구현한 소프트웨어에 대한 명세를 작성하거나 분석하는 것 또한 많은 노력을 필요로 한다.
특히, 개개인에 의해 개발된 코드가 서로 밀접하게 연관되어 동작하는 프로그램의 경우, 프로그램의 이해는 유지 보수 작업의 기본인 동시에 개발과정에서도 시간과 비용을 결정하는 중요한 작업 중 하나이다.
그러나, 대부분의 개발과정에서의 프로그램에 대한 이해는 관련 문서의 미비 등으로 인하여 소스코드의 분석에 의존할 수 밖에 없다. 따라서, 체계적으로 코드를 분석할 수 있는 도구가 요구된다. 하지만, 현재 사용되는 개발 도구들은 팀 개발 소프트웨어에 대한 분석 기능을 제대로 제공하지 못하고 있다.
일반적으로, 플로우 다이어그램들은 보통 설계단계에서 만들어지게 되며, 개발단계에서는 플로우 다이어그램을 토대로 소스 프로그램을 작성한다. 하지만, 개발하고자 하는 소스 프로그램에 대한 플로우 다이어그램을 디자인한 후에 디자인된 플로우 다이어그램에 따라 소스 프로그램을 작성할 수 있는 있지만, 소스 프로그램을 수정하는 경우 디자인된 플로우 다이어그램은 변경되지 않는다는 단점이 있다.
본 발명은 소스 프로그램을 플로우 형식의 다이어그램으로 실시간으로 표현하고 상호 연동하여 업무 로직의 흐름과 순서를 빠르고 편리하게 분석할 수 있도록 하는 플로우 다이어그램 생성 방법 및 이를 실행하는 장치에 관한 것이다.
또한, 본 발명은 소스 프로그램의 흐름과 전체 구조를 블록 다이어그램을 이용하여 간략히 표시함으로써 복잡하고 방대한 업무 프로그램도 빠르고 정확하게 분석을 할 수 있어 프로그램의 품질을 향상 시킬 수 있도록 하는 플로우 다이어그램 생성 방법 및 이를 실행하는 장치에 관한 것이다.
또한, 본 발명은 소스 프로그램에 익숙하지 않은 사람도 플로우 다이어그램을 통해 업무 분석과 프로그램의 개발 능력을 향상 시킬 수 있도록 하는 플로우 다이어그램 생성 방법 및 이를 실행하는 장치에 관한 것이다.
본 발명이 해결하고자 하는 과제는 이상에서 언급한 과제(들)로 제한되지 않으며, 언급되지 않은 또 다른 과제(들)은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
실시예들 중에서, 플로우 다이어그램 생성 방법은 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성하는 단계, 상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 계층화하여 표시하는 단계 및 상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 상기 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시하는 단계를 포함한다.
실시예들 중에서, 플로우 다이어그램 생성 장치는 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성하는 다이어그램 블록 생성부, 상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하는 플로우 다이어그램 생성부 및 상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 상기 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시하는 플로우 다이어그램 표시부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 첨부 도면들에 포함되어 있다.
본 발명의 이점 및/또는 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성요소를 지칭한다.
본 발명에 따르면, 소스 프로그램을 플로우 형식의 다이어그램으로 실시간으로 표현하고 상호 연동하여 업무 로직의 흐름과 순서를 빠르고 편리하게 분석할 수 있다는 장점이 있다.
또한 본 발명에 따르면, 소스 프로그램의 흐름과 전체 구조를 블록 다이어그램을 이용하여 간략히 표시함으로써 복잡하고 방대한 업무 프로그램도 빠르고 정확하게 분석을 할 수 있어 프로그램의 품질을 향상 시킬 수 있다는 장점이 있다.
또한 본 발명에 따르면, 소스 프로그램에 익숙하지 않은 사람도 플로우 다이어그램을 통해 업무 분석과 프로그램의 개발 능력을 향상 시킬 수 있다는 장점이 있다.
도 1은 본 발명의 일 실시예에 따른 소스 프로그램 플로우 다이어그램 생성 시스템을 설명하기 위한 네트워크 구성도이다.
도 2는 본 발명의 일 실시예에 따른 플로우 다이어그램 생성 장치의 내부 구조를 설명하기 위한 블록도이다.
도 3은 본 발명에 따른 플로우 다이어그램 생성 방법의 일 실시예를 설명하기 위한 흐름도이다.
도 4는 본 발명에 따른 플로우 다이어그램 생성 과정을 설명하기 위한 예시도이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 한다.
본 명세서에서 사용된 용어 중 “소스 프로그램”은 특정 프로그래밍 언어(예를 들어, Java, C++, C 등)로 작성된 프로그램을 의미한다.
본 명세서에서 사용된 용어 중 “키워드”는 프로그램 언어에서 고유한 의미를 갖는 예약된 단어를 의미한다. 예를 들어, C언어에서 키워드는 do, if, switch, goto, break, else 등을 포함할 수 있다.
본 명세서에서 사용된 용어 중 “주석”은 프로그램 언어의 문법과는 관계 없이 프로그램을 설명하는 설명문을 표현하기 위한 방법이다. 예를 들어, C언어의 경우 주석은 /* … */ 사이에 표현된다.
본 명세서에서 사용된 용어 중 “함수”는 프로그램 언어에서 제공되거나 사용자에 의해 정의되어 특정 기능을 실행할 수 있다. 이러한 함수는 입력 데이터가 존재하는 경우 입력 데이터를 이용하여 특정 기능을 실행한 후 출력 데이터를 반환할 수 있다. 예를 들어, C언어에서 제공되는 함수 “strcmp(a1, a2)”는 a1에 해당하는 문자열 및 a2에 해당하는 문자열의 동일 여부를 비교하여 결과 값으로 0 또는 1을 반환하는 함수이다.
도 1은 본 발명의 일 실시예에 따른 소스 프로그램 플로우 다이어그램 생성 시스템을 설명하기 위한 네트워크 구성도이다.
도 1을 참조하면, 소스 프로그램 플로우 다이어그램 생성 시스템은 소스 프로그램 제공 장치(100) 및 플로우 다이어그램 생성 장치(200)를 포함한다.
소스 프로그램 제공 장치(100)는 사용자에 의해 작성된 소스 프로그램을 플로우 다이어그램 생성 장치(200)에 제공하는 장치이다. 이를 위해, 소스 프로그램 제공 장치(100)는 소스 프로그램 작성 절차를 제공하며 소스 프로그램 작성 절차를 통해 소스 프로그램이 작성되면 플로우 다이어그램 생성 장치(200)에 제공한다.
플로우 다이어그램 생성 장치(200)는 소스 프로그램 제공 장치(100)로부터 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 소스 프로그램 플로우 다이어그램을 생성한다.
이를 위해, 플로우 다이어그램 생성 장치(200)는 소스 프로그램을 파싱하여 복수의 다이어그램 블록을 생성한다.
일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램을 파싱하여 소스 코드에 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드가 존재하면 키워드에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
예를 들어, 플로우 다이어그램 생성 장치(200)는 C언어로 작성된 소스 프로그램을 파싱하여 소스 코드에 미리 결정된 키워드 “case”가 존재하면 “case”에 대한 주석 “정상조회”를 이용하여 다이어그램 블록을 생성하거나 해당 소스 코드 “case SQLIO_OK”를 이용하여 다이어그램 블록을 생성할 수 있다.
다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램을 파싱하여 소스 코드에 특정 프로그래밍 언어에서 제공하는 함수 또는 사용자에 의해 정의된 함수가 존재하면 함수에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
예를 들어, 플로우 다이어그램 생성 장치(200)는 C언어로 작성된 소스 프로그램을 파싱하여 소스 코드에 C언어에서 제공하는 함수 “strcmp(a1, a2)”에 해당하는 주석 “비교”를 이용하여 다이어그램 블록을 생성하거나 해당 소스 코드 “strcmp(a1, a2)”를 이용하여 다이어그램 블록을 생성할 수 있다.
다른 예를 들어, 플로우 다이어그램 생성 장치(200)는 C언어로 작성된 소스 프로그램을 파싱하여 사용자에 의해 정의된 함수 “void count()”에 해당하는 주석 “숫자 세기”를 이용하여 다이어그램 블록을 생성하거나 해당 소스 코드 “void count()”를 이용하여 다이어그램 블록을 생성할 수 있다.
플로우 다이어그램 생성 장치(200)는 상기와 같이 복수의 다이어그램 블록을 생성한 후, 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성한다. 이를 위해, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각에 속성을 할당한다. 여기에서, 속성은 계층 정보, 연결 블록 정보, 이동 위치 정보 등을 포함할 수 있다.
계층 정보는 특정 프로그래밍 언어로 작성된 소스 프로그램에서 소스 코드의 실행 순서에 따라 다이어그램 블록을 배치하기 위해서 다이어그램 블록에 할당하는 정보이다.
연결 블록 정보는 특정 프로그래밍 언어로 작성된 소스 프로그램에서 함수 중 특정 함수의 실행에 따라 다른 함수가 호출되어 실행되는 경우 특정 함수에 해당하는 다이어그램 블록에 할당하는 정보이다.
이동 위치 정보는 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택 되면 특정 다이어그램 블록에 해당하는 소스 코드를 표시하기 위해서 특정 다이어그램 블록에 할당하는 정보이다.
이하에서는, 플로우 다이어그램 생성 장치(200)가 복수의 다이어그램 블록 각각에 속성을 할당하는 과정을 보다 구체적으로 설명하기로 한다.
일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램의 소스 코드의 실행 순서에 따라 상기 함수 또는 상기 미리 결정된 키워드에 해당하는 다이어그램 블록에 계층 정보를 할당한다.
예를 들어, 플로우 다이어그램 생성 장치(200)는 첫 번째 함수의 계층 정보 “1”을 할당하고, 첫 번째 함수 내에서 실행되는 두 번째 함수의 계층 정보는 “2”을 할당한다.
다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램의 소스 코드의 함수 중 특정 함수의 실행에 따라 호출되어 실행되는 다른 함수가 존재하는 경우, 다른 함수에 해당하는 다이어그램 블록의 정보를 특정 함수에 해당하는 다이어그램 블록의 연결 블록 정보로 할당할 수 있다.
예를 들어, “제1 함수”가 실행되는 과정에서 “제2 함수”가 호출되어 “제2 함수”가 되는 경우, 플로우 다이어그램 생성 장치(200)는 “제1 함수”에 “연결 블록 정보: 제2 함수에 해당하는 다이어그램 블록의 정보”를 할당할 수 있다.
또 다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램의 소스 코드의 위치 정보에 따라 함수 또는 미리 결정된 키워드에 해당하는 다이어그램 블록에 이동 위치 정보를 할당할 수 있다.
예를 들어, 플로우 다이어그램 생성 장치(200)는 소스 코드 중 세 번째 라인의 소스 코드에 해당하는 다이어그램 블록에 “이동 위치 정보: 3”을 할당할 수 있다.
그런 다음, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성한다.
일 실시예에서, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각의 계층 정보에 따라 복수의 다이어그램 블록 각각을 계층화하여 표시할 수 있다.
예를 들어, 플로우 다이어그램 생성 장치(200)는 제1 다이어그램 블록에 계층 정보 “1”이 할당되어 있고, 제2 다이어그램 블록에 계층 정보 “2”가 할당되어 있으면, 플로우 다이어그램 생성 장치(200)는 계층 정보 “1”이 할당된 제1 다이어그램 블록의 하위 계층에 제2 다이어그램 블록을 배치한다.
다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 중 특정 다이어그램 블록에 연결 블록 정보가 할당되어 있는지 여부에 따라 상기 특정 다이어그램 블록 및 상기 연결 블록 정보에 해당하는 다이어그램 블록을 연결하여 표시한다.
예를 들어, “제1 함수”에 “연결 블록 정보: 제2 함수에 해당하는 다이어그램 블록의 정보”를 할당되어 있는 경우, 플로우 다이어그램 생성 장치(200)는 제1함수에 해당하는 다이어그램 블록 및 제2 함수에 해당하는 다이어그램 블록을 연결하여 표시한다.
상기와 같이, 본 발명은 소스 프로그램의 흐름과 전체 구조를 블록 다이어그램을 이용하여 간략히 표시함으로써 복잡하고 방대한 업무 프로그램도 빠르고 정확하게 분석을 할 수 있어 프로그램의 품질을 향상시킬 수 있다는 장점이 있다.
플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시한다.
일 실시예에서, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면, 소스 프로그램의 소스 코드 중 특정 다이어그램 블록에 할당된 이동 위치 정보에 해당하는 소스 코드의 위치로 이동할 수 있다.
예를 들어, 다이어그램 블록에 “이동 위치 정보: 3”이 할당되어 있으면, 플로우 다이어그램 생성 장치(200)는 소스 코드 중 세 번째 라인의 소스 코드를 표시한다.
다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램 중 특정 소스 코드가 선택되면 상기 특정 소스 코드에 해당하는 다이어그램 블록으로 이동하여 해당 다이어그램 블록을 표시할 수 있다.
예를 들어, 소스 프로그램 중 세 번째 라인이 선택되면, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 중 이동 위치 정보 “3”이 할당된 다이어그램 블록을 표시할 수 있다.
또한, 플로우 다이어그램 생성 장치(200)는 플로우 다이어그램에서 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드 중 특정 기능 또는 특정 키워드에 해당하는 복수의 다이어그램 블록을 추출하여 표시할 수 있다. 이때, 특정 기능은 반복적으로 구문을 실행하는 반복 기능, 조건적으로 구문을 실행하는 제어 기능 등을 포함할 수 있다. 예를 들어, Java 의 경우 반복 기능에 해당하는 키워드는 while 등이 있으며, 제어 기능에 해당하는 키워드는 if~else, switch~case 등이 있다.
도 2는 본 발명의 일 실시예에 따른 플로우 다이어그램 생성 장치의 내부 구조를 설명하기 위한 블록도이다.
도 2를 참조하면, 플로우 다이어그램 생성 장치(200)는 다이어그램 블록 생성부(210), 플로우 다이어그램 생성부(220) 및 플로우 다이어그램 표시부(230)를 포함한다.
다이어그램 블록 생성부(210)는 소스 프로그램을 파싱하여 복수의 다이어그램 블록을 생성한다.
일 실시예에서, 다이어그램 블록 생성부(210)는 소스 프로그램을 파싱하여 소스 코드에 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드가 존재하면 키워드에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
다른 일 실시예에서, 다이어그램 블록 생성부(210)는 소스 프로그램을 파싱하여 소스 코드에 특정 프로그래밍 언어에서 제공하는 함수 또는 사용자에 의해 정의된 함수가 존재하면 함수에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
플로우 다이어그램 생성부(220)는 다이어그램 블록 생성부(210)에 의해 생성된 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성한다.
이를 위해, 플로우 다이어그램 생성부(220)는 복수의 다이어그램 블록 각각에 속성을 할당한다. 여기에서, 속성은 계층 정보, 연결 블록 정보, 이동 위치 정보 등을 포함할 수 있다.
일 실시예에서, 플로우 다이어그램 생성부(220)는 소스 프로그램의 소스 코드의 실행 순서에 따라 상기 함수 또는 상기 미리 결정된 키워드에 해당하는 다이어그램 블록에 계층 정보를 할당한다.
다른 일 실시예에서, 플로우 다이어그램 생성부(220)는 소스 프로그램의 소스 코드의 함수 중 특정 함수의 실행에 따라 호출되어 실행되는 다른 함수가 존재하는 경우, 다른 함수에 해당하는 다이어그램 블록의 정보를 특정 함수에 해당하는 다이어그램 블록의 연결 블록 정보로 할당할 수 있다.
또 다른 일 실시예에서, 플로우 다이어그램 생성부(220)는 소스 프로그램의 소스 코드의 위치 정보에 따라 함수 또는 미리 결정된 키워드에 해당하는 다이어그램 블록에 이동 위치 정보를 할당할 수 있다.
그런 다음, 플로우 다이어그램 생성부(220)는 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성한다.
일 실시예에서, 플로우 다이어그램 생성부(220)는 복수의 다이어그램 블록 각각의 계층 정보에 따라 복수의 다이어그램 블록 각각을 계층화하여 표시할 수 있다.
다른 일 실시예에서, 플로우 다이어그램 생성부(220)는 복수의 다이어그램 블록 중 특정 다이어그램 블록에 연결 블록 정보가 할당되어 있는지 여부에 따라 상기 특정 다이어그램 블록 및 상기 연결 블록 정보에 해당하는 다이어그램 블록을 연결하여 표시한다.
상기와 같이, 본 발명은 소스 프로그램의 흐름과 전체 구조를 블록 다이어그램을 이용하여 간략히 표시함으로써 복잡하고 방대한 업무 프로그램도 빠르고 정확하게 분석을 할 수 있어 프로그램의 품질을 향상시킬 수 있다는 장점이 있다.
플로우 다이어그램 표시부(230)는 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시한다.
일 실시예에서, 플로우 다이어그램 표시부(230)는 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면, 소스 프로그램의 소스 코드 중 특정 다이어그램 블록에 할당된 이동 위치 정보에 해당하는 소스 코드의 위치로 이동할 수 있다.
다른 일 실시예에서, 플로우 다이어그램 표시부(230)는 소스 프로그램 중 특정 소스 코드가 선택되면 상기 특정 소스 코드에 해당하는 다이어그램 블록으로 이동하여 해당 다이어그램 블록을 표시할 수 있다.
또한, 플로우 다이어그램 표시부(230)는 플로우 다이어그램에서 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드 중 특정 기능 또는 특정 키워드에 해당하는 복수의 다이어그램 블록을 추출하여 표시할 수 있다. 이때, 특정 기능은 반복적으로 구문을 실행하는 반복 기능, 조건적으로 구문을 실행하는 제어 기능 등을 포함할 수 있다. 예를 들어, Java 의 경우 반복 기능에 해당하는 키워드는 while 등이 있으며, 제어 기능에 해당하는 키워드는 if~else, switch~case 등이 있다.
예를 들어, 플로우 다이어그램 표시부(230)는 플로우 다이어그램에서 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드 중 “제어 기능”에 해당하는 복수의 다이어그램 블록을 추출하여 표시할 수 있다. 즉, 플로우 다이어그램 표시부(230)는 플로우 다이어그램에서 if~else, switch~case에 해당하는 복수의 다이어그램 블록을 추출하여 표시할 수 있다.
도 3은 본 발명에 따른 플로우 다이어그램 생성 방법의 일 실시예를 설명하기 위한 흐름도이다.
도 3을 참조하면, 플로우 다이어그램 생성 장치(200)는 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성한다(단계 S310).
단계 S310에 대한 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램을 파싱하여 소스 코드에 상기 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드가 존재하면, 상기 미리 결정된 키워드에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
단계 S320에 대한 다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램을 파싱하여 소스 코드에 상기 특정 프로그래밍 언어에서 제공하는 함수 또는 사용자에 의해 정의된 함수가 존재하면, 상기 함수에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하여 표시한다(단계 S320, 단계 S330).
단계 S320 및 단계 S330에 대한 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각의 계층 정보에 따라 상기 복수의 다이어그램 블록 각각을 계층화하여 표시할 수 있다.
단계 S320 및 단계 S330에 대한 다른 일 실시예에서, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 중 특정 다이어그램 블록에 연결 블록 정보가 할당되어 있는지 여부에 따라 상기 특정 다이어그램 블록 및 상기 연결 블록 정보에 해당하는 다이어그램 블록을 연결하여 표시할 수 있다.
플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면(단계 S340), 해당 소스 코드로 이동하여 표시한다(단계 S340).
도 4는 본 발명에 따른 플로우 다이어그램 생성 과정을 설명하기 위한 예시도이다.
도 4를 참조하면, 플로우 다이어그램 생성 장치(200)는 소스 프로그램(410)을 파싱하여 복수의 다이어그램 블록을 생성한다.
일 실시예에서, 플로우 다이어그램 생성 장치(200)는 소스 프로그램(410)을 파싱하여 소스 코드에 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드가 존재하면 키워드에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성할 수 있다.
예를 들어, 플로우 다이어그램 생성 장치(200)는 Java 언어로 작성된 소스 프로그램(410)을 파싱하여 참조번호(422a)와 같은 소스 코드에 미리 결정된 키워드 “case”가 존재하면 “case”에 대한 주석 “정상조회”를 이용하여 참조번호(422b)와 같은 다이어그램 블록을 생성하거나 주석이 존재하지 않은 경우에는 해당 소스 코드 “case SQLIO_OK”를 이용하여 다이어그램 블록을 생성할 수 있다.
그런 다음, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램(420)을 생성한다. 이를 위해, 플로우 다이어그램 생성부(220)는 복수의 다이어그램 블록 각각에 속성을 할당한다. 여기에서, 속성은 계층 정보, 연결 블록 정보, 이동 위치 정보 등을 포함할 수 있다.
일 실시예에서, 소스 프로그램의 소스 코드의 실행 순서에 따라 상기 함수 또는 상기 미리 결정된 키워드에 해당하는 다이어그램 블록에 계층 정보를 할당한다.
예를 들어, 소스 프로그램의 소스 코드의 실행 순서에 따라 가장 먼저 실행되는 참조번호(421a)의 “Switch”의 주석 “SQLIO 결과코드 검증”에 해당하는 다이어그램 블록(421b)에 “계층 정보: 1”을 할당하고, 그 다음으로 실행되는 참조번호(422a)의 “case”의 주석 “정상조회”에 해당하는 다이어그램 블록(422b)에 “계층정보: 2”를 할당한다.
그 후, 플로우 다이어그램 생성 장치(200)는 복수의 다이어그램 블록 각각의 계층 정보에 따라 복수의 다이어그램 블록 각각을 계층화하여 표시할 수 있다. 예를 들어, “SQLIO 결과코드 검증”에 해당하는 다이어그램 블록(421b)의 계층 정보가 “1”이고, “정상조회”에 해당하는 다이어그램 블록(422b)의 계층 정보가 “2”이기 때문에, 다이어그램 블록(421b)의 하위 블록으로 다이어그램 블록(422b)을 배치한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 이는 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명 사상은 아래에 기재된 특허청구범위에 의해서만 파악되어야 하고, 이의 균등 또는 등가적 변형 모두는 본 발명 사상의 범주에 속한다고 할 것이다.
100: 소스 프로그램 제공 장치
200: 플로우 다이어그램 생성 장치
210: 다이어그램 블록 생성부
220: 플로우 다이어그램 생성부
230: 플로우 다이어그램 표시부

Claims (12)

  1. 플로우 다이어그램 생성 장치에서 실행되는 플로우 다이어그램 생성 방법에 있어서,
    다이어그램 블록 생성부가 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성하는 단계;
    플로우 다이어그램 생성부가 상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하여 표시하는 단계;
    플로우 다이어그램 표시부가 상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 상기 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시하는 단계; 및
    상기 플로우 다이어그램 표시부가 상기 플로우 다이어그램에서 상기 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드 중 특정 기능 또는 특정 키워드에 해당하는 복수의 다이어그램 블록을 추출하여 표시하는 단계를 포함하되,
    상기 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성하는 단계는, 상기 소스 프로그램을 파싱하여 소스 코드에 상기 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드가 존재하면, 상기 미리 결정된 키워드에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성하는 단계와, 상기 소스 프로그램을 파싱하여 소스 코드에 상기 특정 프로그래밍 언어에서 제공하는 함수 또는 사용자에 의해 정의된 함수가 존재하면, 상기 함수에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성하는 단계를 포함하고,
    상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하여 표시하는 단계는, 상기 소스 프로그램의 소스 코드의 함수 중 특정 함수의 실행에 따라 호출되어 실행되는 다른 함수가 존재하는 경우, 상기 다른 함수에 해당하는 다이어그램 블록의 정보를 상기 특정 함수에 해당하는 다이어그램 블록의 연결 블록 정보로 할당하는 단계와, 상기 복수의 다이어그램 블록 중 특정 다이어그램 블록에 연결 블록 정보가 할당되어 있는지 여부에 따라 상기 특정 다이어그램 블록 및 상기 연결 블록 정보에 해당하는 다이어그램 블록을 연결하여 표시하는 단계를 포함하는
    플로우 다이어그램 생성 방법
  2. 삭제
  3. 제1항에 있어서,
    상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하여 표시하는 단계는,
    상기 소스 프로그램의 소스 코드의 실행 순서에 따라 상기 함수 또는 상기 미리 결정된 키워드에 해당하는 다이어그램 블록에 계층 정보를 할당하는 단계와,
    상기 소스 프로그램의 소스 코드의 위치 정보에 따라 상기 함수 또는 상기 미리 결정된 키워드에 해당하는 다이어그램 블록에 이동 위치 정보를 할당하는 단계를 더 포함하는 것을 특징으로 하는
    플로우 다이어그램 생성 방법.
  4. 제3항에 있어서,
    상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하여 표시하는 단계는,
    상기 복수의 다이어그램 블록 각각의 계층 정보에 따라 상기 복수의 다이어그램 블록 각각을 계층화하여 표시하는 단계를 더 포함하는 것을 특징으로 하는
    플로우 다이어그램 생성 방법.
  5. 제3항에 있어서,
    상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 상기 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시하는 단계는
    상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 상기 소스 프로그램의 소스 코드 중 상기 특정 다이어그램 블록에 할당된 이동 위치 정보에 해당하는 소스 코드의 위치로 이동하는 단계와,
    상기 소스 프로그램 중 특정 소스 코드가 선택되면 상기 특정 소스 코드에 해당하는 다이어그램 블록으로 이동하여 해당 다이어그램 블록을 표시하는 단계를 포함하는 것을 특징으로 하는
    플로우 다이어그램 생성 방법.
  6. 삭제
  7. 특정 프로그래밍 언어로 작성된 소스 프로그램을 분석하여 복수의 다이어그램 블록을 생성하는 다이어그램 블록 생성부;
    상기 복수의 다이어그램 블록 각각의 속성에 따라 상기 복수의 다이어그램 블록 각각을 배치하여 플로우 다이어그램을 생성하는 플로우 다이어그램 생성부; 및
    상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 해당 소스 코드로 이동하여 표시하거나 상기 소스 프로그램 중 특정 소스 코드가 선택되면 해당 다이어그램 블록을 표시하는 플로우 다이어그램 표시부를 포함하되,
    상기 플로우 다이어그램 표시부는,
    상기 플로우 다이어그램에서 상기 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드 중 특정 키워드 또는 특정 기능에 해당하는 복수의 다이어그램 블록을 추출하여 표시하고,
    상기 다이어그램 블록 생성부는, 상기 소스 프로그램을 파싱하여 소스 코드에 상기 특정 프로그래밍 언어에 해당하는 미리 결정된 키워드가 존재하면, 상기 미리 결정된 키워드에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성하고, 상기 특정 프로그래밍 언어에서 제공하는 함수 또는 사용자에 의해 정의된 함수가 존재하면, 상기 함수에 대한 주석 또는 해당 소스 코드를 이용하여 다이어그램 블록을 생성하며,
    상기 플로우 다이어그램 생성부는, 상기 각각의 함수 중 특정 함수의 실행에 따라 호출되어 실행되는 다른 함수가 존재하는 경우, 상기 다른 함수에 해당하는 다이어그램 블록의 정보를 상기 특정 함수에 해당하는 다이어그램 블록의 연결 블록 정보로 할당하고, 상기 복수의 다이어그램 블록 중 특정 다이어그램 블록에 연결 블록 정보가 할당되어 있는지 여부에 따라 상기 특정 다이어그램 블록 및 상기 연결 블록 정보에 해당하는 다이어그램 블록을 연결하여 표시하는
    플로우 다이어그램 생성 장치.
  8. 삭제
  9. 제7항에 있어서,
    상기 플로우 다이어그램 생성부는
    상기 각각의 함수의 실행 순서에 따라 상기 함수에 해당하는 다이어그램 블록에 계층 정보를 할당하고, 상기 각각의 함수의 위치 정보에 따라 상기 함수에 해당하는 다이어그램 블록에 이동 위치 정보를 할당하는 것을 특징으로 하는
    플로우 다이어그램 생성 장치.
  10. 제9항에 있어서,
    상기 플로우 다이어그램 생성부는
    상기 복수의 다이어그램 블록 각각의 계층 정보에 따라 상기 복수의 다이어그램 블록 각각을 계층화하여 표시하는 것을 특징으로 하는
    플로우 다이어그램 생성 장치.
  11. 제9항에 있어서,
    상기 플로우 다이어그램 표시부는
    상기 복수의 다이어그램 블록 중 특정 다이어그램 블록이 선택되면 상기 소스 프로그램의 소스 코드 중 상기 특정 다이어그램 블록에 할당된 이동 위치 정보에 해당하는 소스 코드의 위치로 이동하고, 상기 소스 프로그램 중 특정 소스 코드가 선택되면 상기 특정 소스 코드에 해당하는 다이어그램 블록으로 이동하여 해당 다이어그램 블록을 표시하는 것을 특징으로 하는
    플로우 다이어그램 생성 장치.
  12. 삭제
KR1020170084506A 2017-07-03 2017-07-03 플로우 다이어그램 생성 방법 및 이를 실행하는 장치 KR101974804B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170084506A KR101974804B1 (ko) 2017-07-03 2017-07-03 플로우 다이어그램 생성 방법 및 이를 실행하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170084506A KR101974804B1 (ko) 2017-07-03 2017-07-03 플로우 다이어그램 생성 방법 및 이를 실행하는 장치

Publications (2)

Publication Number Publication Date
KR20190004198A KR20190004198A (ko) 2019-01-11
KR101974804B1 true KR101974804B1 (ko) 2019-05-03

Family

ID=65028312

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170084506A KR101974804B1 (ko) 2017-07-03 2017-07-03 플로우 다이어그램 생성 방법 및 이를 실행하는 장치

Country Status (1)

Country Link
KR (1) KR101974804B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020293A (ja) * 1998-07-03 2000-01-21 Ffc:Kk プログラムソース中の特定関数の検索方法
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100349657B1 (ko) * 2000-12-14 2002-08-24 한국전자통신연구원 분산 협력으로 개발된 프로그램 분석을 위한 순차다이어그램 생성 방법
KR101597780B1 (ko) * 2014-05-22 2016-02-25 황수진 소프트웨어 코드의 시각적 구현 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000020293A (ja) * 1998-07-03 2000-01-21 Ffc:Kk プログラムソース中の特定関数の検索方法
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム

Also Published As

Publication number Publication date
KR20190004198A (ko) 2019-01-11

Similar Documents

Publication Publication Date Title
Harel et al. Meaningful modeling: What's the semantics of" semantics"?
Bertolino et al. Deriving test plans from architectural descriptions
US8091071B2 (en) Method and system for template-based code generation
CN111666526A (zh) 页面生成方法、装置、设备及存储介质
CN108563433B (zh) 一种基于lstm自动补全代码的装置
CN109739494B (zh) 一种基于Tree-LSTM的API使用代码生成式推荐方法
JPH08202545A (ja) ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法
CN106951305B (zh) 一种基于模型转换由QVT-R语言生成midCore脚本的方法
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
CN114625353A (zh) 模型框架代码生成系统及方法
CN111124379B (zh) 页面生成方法、装置、电子设备及存储介质
CN106648587A (zh) 一种基于注解的Web应用代码生成方法
CN108255837B (zh) 一种sql解析器及方法
KR101770292B1 (ko) 컴퓨터 수행 가능한 모델 역공학 방법 및 장치
CN111078555B (zh) 一种测试文件的生成方法、系统、服务器和存储介质
CN110059006A (zh) 代码审计方法及装置
KR20150092880A (ko) 그래픽 사용자 인터페이스 개발의 가변 설정 기반 후설계 방법 및 장치
US20100275183A1 (en) Source code auditor with a customized rules builder
KR101974804B1 (ko) 플로우 다이어그램 생성 방법 및 이를 실행하는 장치
CN115454702A (zh) 日志故障分析方法、装置、存储介质及电子设备
Shatnawi et al. Generating a language-independent graphical user interfaces from UML models.
Grechanik et al. Differencing graphical user interfaces
CN106469050B (zh) 一种用例生成方法、页面生成方法及装置
Weyprecht et al. Model-driven development of simulation solution based on SysML starting with the simulation core.
CN110727428B (zh) 一种转换业务逻辑层代码的方法、装置和电子设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)