KR20050077395A - 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치 - Google Patents

소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치 Download PDF

Info

Publication number
KR20050077395A
KR20050077395A KR1020040005021A KR20040005021A KR20050077395A KR 20050077395 A KR20050077395 A KR 20050077395A KR 1020040005021 A KR1020040005021 A KR 1020040005021A KR 20040005021 A KR20040005021 A KR 20040005021A KR 20050077395 A KR20050077395 A KR 20050077395A
Authority
KR
South Korea
Prior art keywords
node
graph
tree structure
software
information
Prior art date
Application number
KR1020040005021A
Other languages
English (en)
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 KR1020040005021A priority Critical patent/KR20050077395A/ko
Publication of KR20050077395A publication Critical patent/KR20050077395A/ko

Links

Classifications

    • 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

Abstract

본 발명은 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한 장치에 관한 것으로서, 더욱 상세하게는 소프트웨어의 행위 분석 및 성능분석을 위한 실행흐름 그래프를 자동으로 생성하는 방법에 관한 것이다. 상기 목적을 달성하기 위하여, 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프 생성 장치는 소프트웨어 모니터링 데이터에서 함수별 정보를 추출하여 노드 정보로 저장하는 자료분석부;와 상기 노드 정보를 이용하여 트리 구조로 구성하는 작업관리부;와 상기 트리 구조에서 반복되는 함수의 노드들을 삭제하는 자료수정부; 및 상기 트리 구조를 그래프로 출력하는 그래프 작성부를 포함한다. 또한 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프 생성 방법은 지정된 파일의 소프트웨어 모니터링 데이터로부터 함수 정보를 추출하여 노드 정보를 저장하는 단계;와 상기 노드 정보를 이용하여 트리 구조로 구성하는 단계; 및 상기 트리 구조에서 반복되는 함수의 노드를 삭제하고, 상기 트리구조에 따른 그래프를 출력하는 단계를 포함한다.

Description

소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한 장치{Method of making a graph of executing stream of software and device thereof}
본 발명은 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한 장치에 관한 것으로서, 더욱 상세하게는 사용자에게 소프트웨어 행위에 대한 이해하기 쉬운 다이어그램을 제공하고, 함수별 소요 시간 등의 정보를 제공할 수 있는 실행흐름 그래프를 자동으로 생성하는 방법 및 이를 이용한 장치에 관한 것이다.
소프트웨어 실행흐름 그래프의 자동생성 방법은, 추상적인 구조와 상기 구조를 자동적으로 생성하는 알고리즘이 필요하며, 상기 그래프 생성 알고리즘은 그래프의 종류 및 그래프의 응용분야에 따라 다양한 유형으로 구분된다.
먼저, 그래프의 종류에 따라 사이클(cycle) 방향 그래프(directed graph), 비사이클(acycle) 방향 그래프, 사이클 무방향 그래프(undirected graph), 비사이클 무방향 그래프, 트리 및 평면(planar) 그래프 등으로 구분되며, 그래프의 응용분야에 따라 소프트웨어 공학(software engineering), 컴퓨터 네트워크(computer network) 및 그래픽스(graphics) 등으로 나뉘어 진다.
특히, 소프트웨어 공학분야에서는 서로 다른 표현기법의 추상적인 구조들을 제공하는 컴퓨터 지원 소프트웨어 공학(Computer Aided Software Engineering) 예를 들면, 자료흐름도(data-flow diagram), 구조도(structure chart), 흐름도(flowchart), 상태 이행도(state transition diagram), 개체-관계도(entity relationship diagram)등이 있다.
상기의 컴퓨터 지원 소프트웨어 공학 툴(tool)들은 사용자가 그래프를 직접 생성하고 처리할 수 있는 사용자 인터페이스를 제공한다.
도1a 내지 도1c는 종래의 소프트웨어 성능 분석도구에서 소스를 분석한 결과를 보여주는 도면이다.
도 1a는 Gprof, VTune, Quantify등의 성능 분석 도구에서 소프트웨어 실행 함수의 스택 정보를 기록, 분석하여 방향 그래프를 평면적으로 배치하는 방법으로 실행 기록을 분석한 결과를 보여주는 도면이고, 도 1b는 Source Insight 등의 소스 분석 도구에서 함수 내의 제어 흐름 구조를 이해하고 분석하기 위해 방향 그래프를 계층적으로 배치하는 방식으로 소스를 분석한 결과를 보여주는 도면이다.
또한 도 1c는 aiCall 도구에서 소스를 분석한 결과를 보여주는 도면으로 소스 내에서 제어 그래프를 사용하는 방법을 사용하는데, 상기 방법의 기본 골격은 함수 간의 호출 관계를 이용하는 것으로 하나의 노드 내부에서 해당 노드에 맵핑되는 소프트웨어의 내부 구조를 보여 줄 수 있는 장점이 있다.
그러나 도1a 내지 도1c 에서 살펴본 바와 같이 종래기술에 의한 소프트웨어의 실행흐름 분석 방식은 함수간의 계층적 관계 및 함수 간의 호출 관계는 제공하나, 함수 간의 실행 순서와 함수의 호출 레벨에 대한 정보를 제공하지 않으므로 소프트웨어의 실행 흐름을 파악하기 위해서는 사용자가 소프트웨어의 실행 흐름을 파악하기 위해서는 사용자가 코드 분석 작업 및 실행 추적 작업을 일일이 해야 하는 문제가 있다.
본 발명은 함수간의 실행순서 및 소요시간 등의 정보가 표현되는 실행흐름 그래프를 제공하여 사용자가 소프트웨어의 실행흐름과 병목지점을 동시에 파악할 수 있게 하여 소프트웨어의 분석을 용이하게 할 수 있도록 하는 데에 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프 생성 장치는, 분석하려는 파일의 소프트웨어 모니터링 데이터에서 함수별 정보를 추출하여 노드 정보로 저장하는 자료분석부;와 상기 노드 정보를 이용하여 트리 구조로 구성하는 작업관리부;와 상기 트리 구조에서 반복되는 함수의 노드들을 삭제하는 자료수정부; 및 상기 트리 구조를 그래프로 출력하는 그래프 작성부를 포함한다.
또한 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프 생성 방법은 지정된 파일의 소프트웨어 모니터링 데이터로부터 함수 정보를 추출하여 노드 정보를 저장하는 단계;와 상기 노드 정보를 이용하여 트리 구조로 구성하는 단계; 및 상기 트리 구조에서 반복되는 함수의 노드를 삭제하고, 상기 트리구조에 따른 그래프를 출력하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도2는 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프를 생성하는 장치의 구성요소를 보여주는 도면이다.
도2에서 도시한 바와 같이, 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프를 생성하는 장치는 소프트웨어 모니터링 데이터(5)를 포함한 파일을 지정하고 그래프 생성을 지시하고 감독하는 그래픽 인터페이스부(3)와 상기 그래픽 인터페이스부(3)의 지시에 의해 그래프 생성 작업을 진행하는 작업관리부(40)와 상기 파일을 읽어 함수별 정보를 추출하여 노드 정보로 저장하는 자료분석부(42)와 상기 노드 정보를 이용하여 트리 구조를 작성하는 자료관리부(46)와 상기 트리에서 반복되는 함수를 정리하는 자료수정부(47)와 상기 정리된 트리를 그래프로 출력하는 그래프 작성부(48)를 포함한다.
상기 소프트웨어 모니터링 데이터(5)는 함수의 실행시간을 분석할 수 있는 정보를 포함하는데, 함수의 시작을 표현하는 라인은 시작시간 및 시작표시 정보를 갖고, 함수의 종료를 표현하는 라인은 종료 시간 및 종료 표시 정보를 포함하도록 구현할 수 있다. 또한 함수가 실행된 순서대로 계층을 표시하여 함수와 함수의 소요시간을 나열할 수도 있다.
상기 정보는 성능 분석 도구의 실행 흐름 그래프에서 어느 함수가 병목현상(bottleneck)을 유발하는지를 보여줄 수 있다. 또한 함수가 반복되어 실행될 경우 해당 함수의 최대 소요 시간, 최소 소요 시간, 평균 시간 등의 통계치를 추출하여 표시할 수 있다.
상기 소프트웨어 모니터링 데이터(5)의 정보들이 기록되는 시간 정보 등을 소프트웨어의 실행되는 행위를 통해 모니터링하고 기록하는 방법에 대해서는 이하 설명한다.
소프트웨어의 성능을 분석하기 위해 Tau라는 도구에서는 PDT, TAU, Vampir로 이루어진 장치를 이용한다. 우선 분석 대상이 되는 소프트웨어의 소스 코드에 실행 흐름을 추적하기 위한 추가적인 코드는 PDT를 통해 삽입됨에 따라, TAU는 상기 추가적인 코드를 삽입한 소스 코드를 컴파일하고 나서, 분석 대상인 소프트웨어를 실행 시킬 때, 각 함수가 어느 정도의 시간을 소요했는지 등의 정보를 제공해주는 프로파일링 데이터와 실제 어떤 순서로 함수를 실행했는지를 보여주는 함수 실행 목록과 각기 걸린 시간 등을 제공해주는 이벤트 트레이스 데이터를 제공해 준다. 상기 데이터들을 토대로 Vampir는 해당 정보를 시간 선에 따라 프로세스 별로 보여주거나, 각 함수에서 시간을 어느 정도 사용했는지를 보여주는 Summary Chart 또는 하나의 함수에서 어떤 다른 함수를 호출했는지를 보여 주는 Call Tree들을 보여 준다.
사용자가 실행되는 소프트웨어에서 모니터링 기록을 취할 수 있는 방법은 두가지 이다. 첫 번째는 분석하고자 하는 소프트웨어에 tau instrumentor 명령을 사용하여 PDT 도구로 하여금 해당 파일에 프로파일링 등의 실행 흐름 추적을 위한 API함수를 삽입하는 방법이다. 두번째는 자동으로 실행되는 Dynaint 라는 프로그램을 사용하여 소프트웨어의 실행흐름을 모니터링 하는 방법이다.
해당 모니터링의 기본 원리는 분석하고자 하는 소프트웨어에 있는 각 함수의 시작 부분과 종료 부분을 사전에 표기할 수 있도록 장치를 마련한 후, 해당 소프트웨어를 실행하여 함수의 시작 시간과 종료 시간의 기록을 저장 매체에 남기는 방식이다. 이 때 기록을 임시로 저장하여 함수와 함수의 실행 순서, 함수에서의 소요 시간으로 기록을 변경할 수도 있다.
상기의 방법들을 사용하면 소프트웨어를 실행시킨 후 이벤트의 흐름을 담고 있는 텍스트 파일과 각 쓰레드별로 사용한 함수와 각 함수가 실행할 때 소요한 시간 정보를 추출할 수 있게 된다.
상기 그래픽 인터페이스부(3)는 해당 CASE TOOL에서 분석할 파일을 지정하고 해당 자료를 이용한 그래프 생성을 지시하고 결과를 조회하는 작업을 한다.
상기 자료 분석부(42)에서는 소프트웨어의 소스에 대한 정보 혹은 소프트웨어의 모니터링 결과에 대한 정보를 읽어들여 함수의 레벨, 함수의 실행 순서 등의 정보를 노드에 입력하여 스택(43)에 저장하는 작업을 한다.
상기 자료관리부(45)는 상기 스택(43)에 저장된 노드정보를 통해 트리 구조를 생성하고, 바람직하게는 이진트리 구조로 구현한다. 이때, 이진트리의 각 노드들의 수준을 달리하여 구현할 수 있는데, 하나의 하위 노드는 동등수준으로, 다른 하나의 하위 노드는 하위 수준으로 구성하는 방식이 가능하다.
상기 자료수정부(47)에서는 소프트웨어의 함수들의 실행흐름에 대한 사용자의 분석을 돕기 위해 여러 번 반복되는 함수를 줄이거나 디테일한 부분을 삭제하는 등의 부가적인 작업을 한다.
상기 그래프 작성부(49)는 노드와 에지를 이용하여 트리구조를 그래프로 출력하는데 상기 에지는 각 노드들의 레벨 정보를 이용하여 노드들을 연결하는데 에지 생성부(49)에 의해 출력된다. 에지의 출력 방법은 여러가지 구현방법이 가능한데 일례로, 노드와 자식노드(pFirstChild node)의 연결은 오른쪽 방향의 화살표로 표현하고, 노드와 이웃노드(pSibling node)의 연결은 아래쪽 방향의 화살표로 표현되도록 구현할 수 있다. 또한 자식노드를 아래쪽 방향의 화살표로 표현하고, 이웃노드를 위쪽 방향의 화살표로 표현되도록 구현할 수 있다. 즉, 두 구별되는 노드 종류가 서로 구별되는 방향을 가지도록 표현한다.
도 3은 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프를 생성하는 방법을 보여주는 도면이다.
도 3에서 도시한 바와 같이, 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프를 생성하는 방법은 지정된 파일의 소프트웨어 모니터링 데이터(5)로부터 함수 정보를 추출하여 노드 정보를 저장하는 단계(S31)와 상기 노드 정보를 이용하여 트리 구조로 구성하는 단계(S33)와 상기 트리 구조에서 반복되는 노드를 삭제하고, 상기 트리구조에 따른 그래프를 출력하는 단계(S35)를 포함하여 이루어진다.??
상기 노드정보를 저장하는 단계(S31)에서는 함수의 시작시간, 종료시간 등과 같은 시간정보와 노드간의 계열정보(노드들의 상위 또는 하위를 결정할 수 있는 정보로 예를들어, n+1 레벨의 노드는 n 레벨 노드의 자식노드 또는 자식노드의 이웃노드에 해당) 노를 보여주는 레벨정보를 소프트웨어 실행시 판단하여 노드정보로 저장한다.
상기 트리 구조로 구성하는 단계(S33)는 도 4에 도시한바와 같이, 소프트웨어 모니터링 데이터(5)를 읽어 각 라인에 시작표시가 되어 있는지 종료표시가 되어 있는 지를 판단(S41)한다. 판단결과, 함수의 시작표시가 되어있는 라인 정보이면 함수의 노드를 스택에 넣는데(S410), 이때 노드 정보에 레벨과 상위노드에 대한 정보를 기록한다.
한편, 함수의 종료표시가 되어있는 라인 정보인 경우 상기 함수의 노드를 스택에서 꺼내는데(S414), 이 노드를 제 1 노드로 정의한다. 다음으로 스택에 노드가 남아있는지 판단(S43)하여 노드가 있으면 스택에 저장된 노드 중 가장 나중에 저장된 노드를 꺼내고(S430), 상기 꺼낸 노드에서 상기 제1노드와 동일한 레벨을 갖는 노드를 제 2 노드로 정의한다. 그리고 상기 제2 노드에 자식노드(pFirstChild node)가 있는지 판단(S45)하는데, 자식노드가 있으면 제1노드를 제2노드의 이웃노드로 기록하여 스택에 삽입(S450)하고, 자식노드가 없으면 제1노드를 제2노드의 자식노드로 기록하여 스택에 삽입(S452)하게 된다.
상기 과정을 구체적인 실시예로 살펴보면, 도 5a와 같은 함수들의 계층구조가 존재하는 경우, 상기 함수들의 소프트웨어 모니터링 데이터(5)는 도 5b에 도시한바와 같이 작성된다. 즉, A 노드가 시작되고 A 노드의 자식노드들인 a, b, c 노드들이 실행되고 난 후에, A 노드의 이웃노드들인 B,C 노드들이 실행된다. 각 노드들은 시작라인과 종료라인이 있으며 시작라인에는 시작시간과 시작표시에 대한 정보를 포함하도록 구현되며, 종료라인에는 종료시간과 종료표시에 대한 정보를 포함하도록 구현된다.
상기 도5b와 같이 작성된 소프트웨어 모니터링 데이터(5)를 상기 노드 정보들이 스택에 트리구조로 저장되게 되는데, 저장되는 과정을 보여주는 도면이 도5c이다. 도 5c에서 도시한 바와 같이, 우선 Main 함수가 스택에 저장(S1)되고, 소프트웨어 모니터링 데이터(5)에서 첫번째와 두번째라인의 시작표시에 의해 A 노드와 a 노드가 스택에 저장된다.(S2,S3) 세번째라인에서 a 노드의 종료표시가 나오면 a 노드는 스택에서 빠지고, 스택에 노드가 남아 있으므로 A 노드도 스택에서 빠진다.
A 노드는 아들노드가 없으므로 a 노드는 A 노드의 아들노드로 설정되어 스택에 저장 (S4)된다.
마찬가지로 네번째 라인에서는 b 노드가 스택에 저장되고(S5), 다섯번째 라인에서는 b 노드와 상위노드가 스택에서 빠져나온다. 이때, 상위노드에서 b노드와 동일한 레벨을 갖는 노드는 a 노드이므로, a 노드의 자식노드의 존재여부를 판단하게 된다. a 노드는 자식노드가 없으므로 b노드는 a노드의 이웃노드로 기록되어 저장된다. 여섯번째와 일곱번째 라인에서 c 노드는 상기 b 노드와 같은 방식으로 트리 구조로 포함된다.(S6)
8번째 라인에서는 A 노드의 종료표시가 있으므로 A 노드가 스택에서 빠져나오고, 스택에 남아있는 M 노드(Main node)는 아들노드가 없으므로 A노드는 M노드의 아들노드로 기록되어 스택에 저장된다. 아홉번째라인에 의해 B 노드가 스택에 저장(S8)되고, 열번째라인에 의해 B노드는 스택에서 빠져나오게 되는데 B노드는 A노드와 같은레벨을 가지므로 B 노드는 A 노드의 이웃노드로 기록되어 스택에 저장(S9)된다. 마지막으로 열한번째와 열두번째라인에 의해 C 노드는 상기 B 노드와 같은 방식으로 트리 구조에 포함되는데, B 노드는 A 노드의 이웃노드로 기록되어 스택에 저장(S10)되게 되고 전체 트리구조가 완성된다.
상기 그래프를 출력하는 단계(S35)는 트리 구조에서 반복되는 함수에 대한 노드 목록을 삭제하는 단계(S350)와 정리된 트리 구조를 그래프로 출력하는 단계(S353)를 포함한다.
상기 반복되는 함수에 대한 노드 목록을 삭제하는 단계(S350)는 도 6에서 도시한 바와 같이, 체크할 노드가 존재하고(S602) 상기 체크할 노드가 자식노드를 갖고 있으면(S604) 체크할 노드의 자식노드들 중 중복되는 함수를 삭제(S606)하여 정리한다. 그 후 체크할 노드의 이웃노드가 존재하는지 판단(S620)하고 판단 결과 체크할 노드의 이웃노드가 있으면 체크할 노드의 이웃노드가 자식노드를 갖고 있으지 판단한다.(S622) 상기 판단결과 상기 체크할 노드의 이웃노드가 자식노드를 갖고 있으면 그 자식노드들 중 중복되는 함수를 삭제($624)한다. 상기 삭제되는 함수는 중복되는 함수로 소프트웨어 프로그램에서 for문이나 while 문 등에 의해 함수가 반복적으로 실행되는 경우 동일한 함수가 계속되어 호출되므로 동일한 함수가 중복되어 나타나게 된다.
상기 체크할 노드와 체크할 노드의 이웃노드를 정리하고 난 뒤 두 노드의 자식노드들이 구성하는 트리구조를 비교(S640)하여 동일 여부를 판단(S642)하게 되는데, 상기 판단결과 두 노드의 트리구조들이 동일한 경우 이웃노드 및 이웃노드의 하위 트리구조를 삭제(S646)한다. 이때, 삭제되는 이웃 노드 및 이웃 노드 하위트리의 시간 정보 등은 체크할 노드 및 체크할 노드에 추가(S644)된다.
상기 과정은 체크할 노드와 모든 이웃노드들에 적용되는데 체크할 노드와 모든 이웃노드들의 아들노드들을 정리하고, 체크할 노드와 모든 이웃노드들 각각 비교하여 동일한 노드와 트리구조를 가지고 있는 노드들의 존재여부를 판단하게 되는 것이다.
상기 과정을 좀더 구체적으로 살펴보면, 도7a에서 도시한 바와 같은 트리구조를 가질 경우, 체크할 노드는 시간 정보 4를 갖는 A노드(70)가 된다. 체크할 노드의 자식노드들 중 a 노드가 중복되고, 상기 체크할 노드의 이웃노드인 A 노드(72)는 자식노드들 중 b 노드가 중복된다. 또한 다른 이웃노드인 A노드(74)는 자식노드들 중 a 노드가 중복되나, B노드(76)의 자식노드들 중 중복되는 노드는 존재하지 않는다.
상기 중복된 자식노드들을 삭제한 후의 트리 구조를 보여주는 도면이 도 7b 이다. 도 7b에서 점선 표시의 노드들은 삭제된 노드이고 삭제된 노드의 시간 정보는 중복되는 다른 노드에 합쳐진다.
체크할 노드와 체크할 노드의 이웃노드들을 정리한 후, 체크할 노드와 상기 체크할 노드의 이웃노드들을 비교하게 되는데, 비교결과 체크할 노드인 A 노드(70)와 이웃노드인 A 노드(72)가 중복되므로 도 7c에서 도시한 바와 같이, 이웃노드인 A 노드(72)와 A 노드(72)의 하위 트리구조들이 모두 삭제되고, 이웃노드와 이웃노드의 하위 트리구조들의 시간정보는 체크노드와 체크노드의 하위 노드에 합쳐지게 된다. 이때 체크할 노드와 이웃노드들의 비교는 모든 노드들이 비교될 수 있도록 조합을 통해 구현되는 것이 바람직하다.
상기 정리된 트리 구조를 그래프로 출력하는 단계(S353)는 도8에서 도시한 바와 같이, 메인노드인 입력노드를 출력하는 단계(S82)와 입력노드의 자식노드인 체크 노드를 출력하는 단계(S84)와 체크노드들의 이웃노드들을 출력하는 단계(S860)로 이루어진다.
상기 체크노드를 출력하는 단계(S84)는 우선 체크노드를 입력노드의 자식노드로 이동(S840)시키고 체크노드가 그래프인지를 판단(S844)한다. 판단결과 체크노드가 그래프이면 그래프를 출력(S845)하고, 자식노드가 없는 단순노드인 경우 입력노드와 체크노드를 출력하고, 두 노드의 레벨을 비교하여 연결시켜 주는 에지를 출력(S846)한다.
상기 체크노드의 이웃노드들을 출력하는 단계(S86)는 우선 체크노드를 입력노드의 이웃노드로 이동(S860)시키고 체크노드가 그래프인지를 판단(S864)한다. 판단결과 체크노드가 그래프이면 그래프를 출력(S865)하고, 자식노드가 없는 단순노드인 경우 입력노드와 체크노드를 출력하고, 두 노드의 레벨을 비교하여 연결시켜 주는 에지를 출력(S866)한다. 상기 과정은 체크노드의 모든 이웃노드들의 그래프가 출력될 때까지 반복되어 동작한다.
상기 그래프는 노드가 자식노드를 포함하고 있는 구조를 말하며 노드로만 구성된 단순노드와 구별된다. 상기 그래프 출력은 상기 과정들(S82, S84, S86)이 반복적으로 동작되는 것으로 이해될 수 있는데, 입력노드가 그래프의 최상위 노드로 변경되는 것이 차이일 뿐이다. 예를들어, 노드가 그래프인 경우 노드를 입력노드로 하고, 상기 노드의 자식노드를 체크노드로 하여 그래프 또는 노드를 출력한다. 또한 자식노드의 이웃노드들에 대해서도 상기 출력과정을 반복하게 된다. 따라서, 각 노드들의 자식노드들이 계속 존재하는 경우, 상기 그래프 출력과정은 반복될 것이다. 도8에서는 상기 반복 작업을 그래프 출력이라는 단계(S845, S865)로 표시하였다. 결과적으로 그래프의 트리구조가 복잡할수록 상기 과정들(S82, S84, S86)의 반복이 증가하고, 상기 반복은 순환문 등으로 작성하여 구현할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한 장치에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
본 발명은 함수간의 실행순서 및 소요시간 등의 정보가 표현되는 실행흐름 그래프를 제공하여 사용자가 소프트웨어의 실행흐름과 병목지점을 동시에 파악할 수 있게 하여 소프트웨어의 분석을 용이하게 할 수 있는 장점이 있다.
또한, 수작업으로 분석, 작성하던 소프트웨어의 실행흐름도를 자동화할 수 있는 장점도 있다.
도 1a는 종래의 소프트웨어 성능 분석도구인 Gprof, VTune, Quantify등에서 소스를 분석한 결과를 보여주는 도면이다.
도 1b는 종래의 소프트웨어 성능 분석도구인 Source Insight에서 소스를 분석한 결과를 보여주는 도면이다.
도 1c는 종래의 소프트웨어 성능 분석도구인 aiCall 에서 소스를 분석한 결과를 보여주는 도면이다.
도 2는 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프를 생성하는 장치의 구성요소를 보여주는 도면이다.
도 3은 본 발명의 일실시예에 따른 소프트웨어의 실행흐름 그래프를 생성하는 방법을 보여주는 도면이다.
도 4는 본 발명의 일실시예에 따른 트리 구조를 생성하는 방법을 보여주는 도면이다.
도 5a는 본 발명의 일실시예에 따른 트리 구조를 생성하는 방법의 구체적인 예를 보여주기 위한 함수의 계층적 구조를 보여주는 도면이다.
도 5b는 도5a에서 제시된 함수들의 계층적 구조를 표시하는 노드정보를 갖고있는 소프트웨어 모니터링 데이터를 보여주는 도면이다.
도 5c는 본 발명의 일실시예에 따른 트리 구조를 생성하는 단계별 동작과정의 구체적 예를 보여주는 도면이다.
도 6은 본 발명의 일실시예에 따른 트리구조에서 반복되는 함수의 노드들을 삭제하는 과정을 보여주는 도면이다.
도 7a는 본 발명의 일실시예에 따른 트리구조에서 반복되는 함수의 노드들을 삭제하는 과정의 구체적 예를 보여주는 도면이다.
도 7b는 도 7a의 트리구조에서 체크노드와 체크노드의 이웃노드들의 중복된 자식노드들을 삭제하는 과정을 보여주는 도면이다.
도 7c는 도 7b의 트리구조에서 정리된 체크노드와 체크노드의 이웃노드를 비교하여 삭제하는 과정을 보여주는 도면이다.
도 8은 본 발명의 일실시예에 따른 트리 구조를 그래프로 출력하는 단계를 보여주는 도면이다.
<도면의 주요 부분에 관한 부호의 설명>
40: 작업관리부 42: 자료분석부
45: 자료관리부 47: 자료수정부
48: 그래프작성부

Claims (13)

  1. 분석하려는 파일의 소프트웨어 모니터링 데이터에서 함수별 정보를 추출하여 노드 정보로 저장하는 자료분석부;
    상기 노드 정보를 이용하여 트리 구조로 구성하는 작업관리부;
    상기 트리 구조에서 반복되는 함수의 노드들을 삭제하는 자료수정부; 및
    상기 트리 구조를 그래프로 출력하는 그래프 작성부를 포함하는 소프트웨어의 실행흐름 그래프 생성 장치.?????
  2. 제 1항에 있어서,
    상기 모니터링 데이터는 시작시간 및 시작표시 또는 종료 시간과 종료표시를 포함하는 것을 특징으로 하여 이루어지는 소프트웨어의 실행흐름 그래프 생성 장치.
  3. 제 1항에 있어서,
    상기 모니터링 데이터는 함수가 실행되는데 소요되는 시간을 포함하는 것을 특징으로 하여 이루어지는 소프트웨어의 실행흐름 그래프 생성 장치.
  4. 제 1항에 있어서,
    상기 트리 구조는 이진트리 구조로 작성되는 것을 특징으로 하여 이루어지는 소프트웨어의 실행흐름 그래프 생성 장치.
  5. 제 1항에 있어서,
    상기 그래프 작성부는 노드의 계층 정보에 따라, 상기 노드들을 연결하는 에지를 출력하는 에지생성부를 더 포함하는 것을 특징으로 하는 소프트웨어의 실행흐름 그래프 생성 장치.
  6. 지정된 파일의 소프트웨어 모니터링 데이터로부터 함수 정보를 추출하여 노드 정보를 저장하는 단계;
    상기 노드 정보를 이용하여 트리 구조로 구성하는 단계; 및
    상기 트리 구조에서 반복되는 함수의 노드를 삭제하고, 상기 트리구조에 따른 그래프를 출력하는 단계를 포함하는 소프트웨어의 실행흐름 그래프 생성 방법.?????
  7. 제 6항에 있어서,
    상기 모니터링 데이터는 시작시간 및 시작표시 또는 종료 시간과 종료표시를 포함하는 것을 특징으로 하여 이루어지는 소프트웨어의 실행흐름 그래프 생성 방법.
  8. 제 6항에 있어서,
    상기 모니터링 데이터는 함수가 실행되는데 소요되는 시간을 포함하는 것을 특징으로 하여 이루어지는 소프트웨어의 실행흐름 그래프 생성 방법.
  9. 제 7항 또는 제 8항에 있어서,
    상기 트리 구조는 이진트리 구조로 작성되는 것을 특징으로 하여 이루어지는 소프트웨어의 실행흐름 그래프 생성 방법.
  10. 제 9항에 있어서,
    상기 트리 구조를 생성하는 단계에서 상기 소프트웨어 모니터링 데이터에서 시작표시가 되어 있는 라인인 경우, 상기 라인이 표시하는 노드에 레벨 및 상위 노드 정보를 기록하여 저장하고,
    종료 표시가 되어 있는 라인인 경우, 상기 라인이 표시하는 제 1 노드에 포함된 함수들의 실행시간을 계산하고,
    상기 제1 노드에 앞서 저장된 제2 노드에 자식노드가 존재하는지 판단하여,
    상기 자식노드가 존재하면 상기 제 1노드를 상기 제2 노드의 이웃노드로, 상기 자식노드가 존재하지 않으면 자식노드로 설정하여 저장하는 소프트웨어의 실행흐름 그래프 생성 방법.
  11. 제 9항에 있어서,
    상기 반복되는 노드의 삭제는 체크할 노드의 자식노드에 대한 구조에서 중복되는 노드들을 삭제하고,
    상기 체크할 노드의 이웃노드에 대한 구조에서 중복되는 노드들을 삭제하고,
    상기 체크할 노드와 이웃노드를 비교하여, 상기 노드들의 구조가 동일하면 상기 이웃노드의 정보를 체크할 노드에 추가하고, 상기 이웃노드를 삭제하는 소프트웨어의 실행흐름 그래프 생성 방법.
  12. 제 9항에 있어서,
    상기 체크할 노드와 이웃노드의 비교는 체크할 노드와 체크할 노드의 모든 이웃노드들을 모두 비교할 수 있는 소프트웨어의 실행흐름 그래프 생성 방법.
  13. 제 9항에 있어서,
    상기 그래프의 출력은 입력노드를 출력하는 단계;
    상기 입력노드의 자식노드를 체크노드로 지정하고, 상기 체크노드의 그래프를 출력하는 단계; 및
    상기 체크노드의 이웃노드들에 대한 그래프를 출력하는 단계를 포함하는 소프트웨어의 실행흐름 그래프 생성 방법.
KR1020040005021A 2004-01-27 2004-01-27 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치 KR20050077395A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040005021A KR20050077395A (ko) 2004-01-27 2004-01-27 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040005021A KR20050077395A (ko) 2004-01-27 2004-01-27 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치

Publications (1)

Publication Number Publication Date
KR20050077395A true KR20050077395A (ko) 2005-08-02

Family

ID=37264894

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040005021A KR20050077395A (ko) 2004-01-27 2004-01-27 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치

Country Status (1)

Country Link
KR (1) KR20050077395A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7913259B2 (en) * 2006-03-31 2011-03-22 Sap Ag Task-graph for process synchronization and control
KR20130094932A (ko) * 2012-02-17 2013-08-27 (주)에프엑스기어 포트-에지 시스템을 이용한 노드 그래프 생성 방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7913259B2 (en) * 2006-03-31 2011-03-22 Sap Ag Task-graph for process synchronization and control
KR20130094932A (ko) * 2012-02-17 2013-08-27 (주)에프엑스기어 포트-에지 시스템을 이용한 노드 그래프 생성 방법

Similar Documents

Publication Publication Date Title
US7409679B2 (en) System and method for computer-aided graph-based dependency analysis
Memon et al. Regression testing of GUIs
US8266580B2 (en) Editing, creating, and verifying reorganization of flowchart, and transforming between flowchart and tree diagram
Elkoutbi et al. Generating user interface prototypes from scenarios
US20060195817A1 (en) Visual workflow modeling tools for user interface automation
CN110928772A (zh) 一种测试方法及装置
Tran et al. Refactoring of Simulink diagrams via composition of transformation steps
CN112685011B (zh) 一种基于Vue的AI应用可视化编排方法
CN111079244A (zh) 一种基于行为树的分布式仿真平台
JPH09258971A (ja) アイコンプログラミング装置
Urli et al. A visual support for decomposing complex feature models
Grati et al. Extracting sequence diagrams from execution traces using interactive visualization
CN111985014B (zh) 一种基于标准图集的建模方法及系统
CN111708699A (zh) 针对Android应用程序的智能化集成检测系统
KR20050077395A (ko) 소프트웨어의 실행흐름 그래프 생성 방법 및 이를 이용한장치
CN115545401B (zh) 基于可视化指标模型配置的城市体检评估方法、系统及计算机设备
KR101664761B1 (ko) 프로젝트 데이터 작성 장치
US20130346141A1 (en) Workflow modeling with workets and transitions
US7281241B2 (en) System and method for visual debugging of constraint systems
CN113254006A (zh) 机器人交互的方法、系统、装置、电子设备以及存储介质
JP2016042317A (ja) ソフトウェア設計支援装置、および方法
JP2004310317A (ja) 業務支援装置
Memon Automated GUI regression testing using AI planning
KR101488188B1 (ko) 시퀀스 다이어그램의 생성 방법 및 시스템
CN111767412B (zh) 用于知识图谱构建的数据映射方法及系统、电子设备

Legal Events

Date Code Title Description
WITN Withdrawal due to no request for examination