KR101423110B1 - 소프트웨어의 오류 로그 분석 방법 및 시스템 - Google Patents

소프트웨어의 오류 로그 분석 방법 및 시스템 Download PDF

Info

Publication number
KR101423110B1
KR101423110B1 KR1020120122587A KR20120122587A KR101423110B1 KR 101423110 B1 KR101423110 B1 KR 101423110B1 KR 1020120122587 A KR1020120122587 A KR 1020120122587A KR 20120122587 A KR20120122587 A KR 20120122587A KR 101423110 B1 KR101423110 B1 KR 101423110B1
Authority
KR
South Korea
Prior art keywords
error
code
software
developer
build
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
KR1020120122587A
Other languages
English (en)
Other versions
KR20140056793A (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 KR1020120122587A priority Critical patent/KR101423110B1/ko
Publication of KR20140056793A publication Critical patent/KR20140056793A/ko
Application granted granted Critical
Publication of KR101423110B1 publication Critical patent/KR101423110B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Prevention of errors by analysis, debugging or testing of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/28Error detection; Error correction; Monitoring by checking the correct order of processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 소프트웨어에서 오류가 발생하는 경우에, 오류를 일으킨 원인이 되는 소스코드를 작성한 개발자를 특정하고, 그 개발자에게 오류의 발생 사실을 통지하도록 함으로써, 개발자가 오류 발생을 신속하게 인식하고 대처할 수 있게 하는 오류 로그 분석 방법 및 시스템을 제공하기 위한 것이다.
본 발명의 소프트웨어의 오류 로그 분석 방법은 복수의 개발자가 하나의 소프트웨어를 분산하여 개발하고, 개발된 소프트웨어의 오류 로그를 분석하는 시스템상에서 수행되는 소프트웨어의 오류 로그 분석 방법으로서, 각 코드의 개발자가 작성된 코드를 등록하는 시점에, 상기 작성된 코드의 버전 및 개발자의 식별자를 포함하는 코드 등록 정보를 메타데이터 저장소에 기록하는 단계, 복수의 코드가 하나의 소프트웨어로 빌드되는 시점에, 상기 소프트웨어를 구성하는 코드의 목록, 각 코드의 버전 및 상기 소프트웨어의 빌드 버전을 포함하는 소프트웨어 빌드 정보를 상기 메타데이터 저장소에 기록하는 단계, 상기 소프트웨어의 실행 중 발생한 오류에 대한 오류 로그를 수집하는 단계, 상기 오류 로그로부터 상기 소프트웨어의 빌드 버전 및 오류 발생 위치 정보를 추출하는 단계, 상기 소프트웨어의 빌드 버전 및 상기 오류 발생 위치 정보를 상기 메타데이터 저장소의 빌드 정보와 비교하여 오류와 관계된 코드를 특정하는 단계, 및 상기 오류와 관계된 코드의 버전을 상기 메타데이터 저장소의 코드 등록 정보와 비교하여 상기 오류와 관계된 코드를 작성한 개발자를 특정하는 단계를 포함한다.

Description

소프트웨어의 오류 로그 분석 방법 및 시스템{METHOD AND SYSTEM FOR ANALYZING ERROR LOG OF SOFTWARE}
본 발명은 소프트웨어에서 발생한 오류 로그를 분석하는 방법 및 시스템에 관한 것으로, 보다 구체적으로는 오류 로그가 발생한 부분의 코드를 작성한 프로그램 개발자를 특정하기 위한 방법 및 시스템에 관한 것이다.
소프트웨어의 기능이 많아지고 그 규모가 방대해짐에 따라, 다수의 개발자가 분업하여 부분별로 소스코드를 작성하고, 이를 연결하여 하나의 소프트웨어로 개발하는 것이 일반화되어 있다.
또한, 소프트웨어의 개발시에는 예상하지 못한 오류가 소프트웨어의 실행시에 발생할 가능성이 있으므로, 소프트웨어를 개발·배포한 후에도 오류의 발생 여부를 체크하여 오류를 수정하는 작업은 필수적이다. 이에, 사용자의 컴퓨터 또는 모바일 단말기에서 수행되는 소프트웨어들은 오류가 발생하는 경우에 네트워크를 통하여 오류 로그를 수집하도록 하는 것이 일반적으로 되어 있다.
소프트웨어의 개발 회사는 사용자 단말기로부터 수집된 오류 로그를 분석하여 오류의 원인을 밝혀내고 이를 수정하여 소프트웨어를 업데이트한다. 이때, 하나의 소프트웨어를 다수의 개발자가 분업하여 개발한 경우, 어느 개발자가 오류와 관계된 소스코드를 작성하였는지 알 수 없기 때문에, 관리자 또는 모든 개발자들이 오류를 분석하고 누가 작성한 소스코드와 관계된 오류인지를 찾아내어야 했다.
이에, 개발자가 자신이 작성한 소스코드에 의하여 오류가 발생하였음을 인식하는 데까지 상당한 시간이 소요되었고, 오류에 신속하게 대처할 수 없는 문제가 있었다.
본 발명은 소프트웨어에서 오류가 발생하는 경우에, 오류를 일으킨 원인이 되는 소스코드를 작성한 개발자를 특정하고, 그 개발자에게 오류의 발생 사실을 통지하도록 함으로써, 개발자가 오류 발생을 신속하게 인식하고 대처할 수 있게 하는 오류 로그 분석 방법 및 시스템을 제공하기 위한 것이다.
상술한 과제를 해결하기 위한 본 발명의 소프트웨어의 오류 로그 분석 방법은 복수의 개발자가 하나의 소프트웨어를 분산하여 개발하고, 개발된 소프트웨어의 오류 로그를 분석하는 시스템상에서 수행되는 소프트웨어의 오류 로그 분석 방법으로서, 각 코드의 개발자가 작성된 코드를 등록하는 시점에, 상기 작성된 코드의 버전 및 개발자의 식별자를 포함하는 코드 등록 정보를 메타데이터 저장소에 기록하는 단계, 복수의 코드가 하나의 소프트웨어로 빌드되는 시점에, 상기 소프트웨어를 구성하는 코드의 목록, 각 코드의 버전 및 상기 소프트웨어의 빌드 버전을 포함하는 소프트웨어 빌드 정보를 상기 메타데이터 저장소에 기록하는 단계, 상기 소프트웨어의 실행 중 발생한 오류에 대한 오류 로그를 수집하는 단계, 상기 오류 로그로부터 상기 소프트웨어의 빌드 버전 및 오류 발생 위치 정보를 추출하는 단계, 상기 소프트웨어의 빌드 버전 및 상기 오류 발생 위치 정보를 상기 메타데이터 저장소의 빌드 정보와 비교하여 오류와 관계된 코드를 특정하는 단계, 및 상기 오류와 관계된 코드의 버전을 상기 메타데이터 저장소의 코드 등록 정보와 비교하여 상기 오류와 관계된 코드를 작성한 개발자를 특정하는 단계를 포함한다.
또한, 상술한 과제를 해결하기 위한 본 발명의 소프트웨어의 오류 로그 분석 시스템은, 복수의 개발자의 단말기와 네트워크 연결된 시스템으로서, 상기 개발자의 단말기로부터 수신한 코드를 코드 저장소에 저장하고, 상기 코드를 작성한 개발자의 식별자 및 상기 코드의 버전을 포함하는 코드 등록 정보를 메타데이터 저장소에 저장하는 코드 등록부, 복수의 코드를 하나의 소프트웨어로 빌드하고, 상기 소프트웨어를 구성하는 코드의 목록, 각 코드의 버전 및 상기 소프트웨어의 빌드 버전을 포함하는 소프트웨어 빌드 정보를 상기 메타데이터 저장소에 저장하는 빌드 실행부, 상기 소프트웨어의 실행 중 발생한 오류의 오류 로그를 수집하는 로그 수집부, 상기 오류 로그로부터 상기 소프트웨어의 빌드 버전 및 오류 발생 위치 정보를 추출하고, 상기 소프트웨어의 빌드 버전 및 상기 오류 발생 위치 정보를 상기 메타데이터 저장소의 빌드 정보와 비교하여 오류와 관계된 코드를 특정하고, 상기 오류와 관계된 코드의 버전을 상기 메타데이터 저장소의 코드 등록 정보와 비교하여 상기 오류와 관계된 코드를 작성한 개발자를 특정하는 로그 분석부를 포함한다.
상술한 소프트웨어의 오류 로그 분석 방법 및 시스템에 따르면, 소프트웨어에서 오류가 발생한 경우에 오류와 관계된 코드를 작성한 개발자를 특정하고 자동적으로 오류 발생 정보를 통지할 수 있으므로, 개발자가 오류 발생 여부를 신속하게 인식하고 코드를 수정하도록 할 수 있는 효과가 있다.
도 1은 본 발명의 일실시예에 따른 소프트웨어의 오류 분석 시스템의 구성을 나타내는 블록 다이어그램이다.
도 2는 본 발명의 일실시예에 따른 코드의 등록 과정을 나타내는 순서도이다.
도 3은 본 발명의 일실시예에 따른 실행 코드의 빌드 과정을 나타내는 순서도이다.
도 4는 본 발명의 일실시예에 따른 오류 로그 수집 및 분석 과정을 나타내는 순서도이다.
도 5는 빌드 실행부에서 생성하는 빌드 정보를 예시적으로 나타내는 예시도이다.
도 6은 소프트웨어에서 생성되는 오류 로그를 예시적으로 나타내는 예시도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용되는 '모듈(module)' 또는 '~부(unit)'라는 용어는 소프트웨어 또는 하드웨어 구성 요소를 의미하며, 그 일 예로서 '모듈(module)' 또는 '~부(unit)'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.
도 1은 본 발명의 일실시예에 따른 소프트웨어의 오류 분석 시스템의 구성을 나타내는 블록 다이어그램이다. 이하, 도 1을 참조하여 본 발명의 일실시예에 다른 소프트웨어의 오류 분석 시스템의 전체적인 구성을 설명한다.
오류 분석 시스템(1)은 적어도 하나의 개발자 단말기(200)와 네트워크를 통하여 연결되어 있다. 개발자 단말기(200)는 일반적으로 프로그램 개발 툴이 설치되어 있는 PC일 수 있다. 적어도 하나의 개발자 단말기(200)로부터 각 개발자는 하나의 소프트웨어의 서로 다른 부분을 구성하는 소스코드를 동시에 작성할 수 있다.
또한, 오류 분석 시스템(1)은 적어도 하나의 실행 장치(300)와 네트워크를 통하여 연결되어 있다. 소프트웨어가 사용자 단말기에 배포되어 사용자 단말기 상에서 실행되는 타입인 경우에는, 각 실행 장치(300)는 상기 소프트웨어가 실행되는 사용자의 PC(300a) 또는 모바일 단말기(300b)일 수 있다. 소프트웨어가 사용자에게 웹 페이지 등을 제공하기 위한 웹 프로그램인 경우에는, 실행 장치(300)는 웹 서버(300c)일 수도 있다.
오류 분석 시스템(1)은 코드 등록부(10), 빌드 실행부(20), 로그 수집부(30), 로그 분석부(40), 오류 통지부(50) 및 오류 정보 제공부(60)를 포함한다. 또한, 오류 분석 시스템(1)은 코드 저장소(110), 메타데이터 저장소(120), 로그 저장소(130), 분석 결과 저장소(140) 및 개발자 정보 저장소(150) 등의 저장소를 더 포함한다.
코드 등록부(10), 빌드 실행부(20), 로그 수집부(30), 로그 분석부(40) 및 오류 통지부(50)는 각각 물리적으로 분리된 서버로 구현될 수도 있고, 하나의 물리적인 서버로 구현될 수도 있다. 또한, 각각의 저장소는 물리적으로 서로 분리된 데이터 서버로 구현될 수도 있고, 하나의 물리적인 데이터 서버로 구현될 수도 있다. 또한, 하나의 구성요소는 하나의 물리적 서버로 구현될 수도 있고, 다수의 물리적 서버를 통해 분산 처리되도록 구현될 수도 있다. 특히, 다수의 실행 장치(300)로부터 발생하는 방대한 양의 오류 로그를 효과적으로 수집하고 저장하기 위하여, 로그 수집부(30), 로그 분석부(40) 및 로그 저장소(130)는 분산 컴퓨팅 시스템 및 분산 데이터베이스로 구현될 수 있다. 각각의 구성요소 또는 전체의 시스템을 몇 개의 물리적 장치로 구현할 것인지는 데이터 처리 속도 또는 데이터 처리량 등에 따라 적절하게 정하여질 수 있다.
<코드 등록 과정>
도 2는 본 발명의 일실시예에 따른 코드의 등록 과정을 나타내는 순서도이다. 이하, 도 1 및 도 2를 참조하여 본 발명의 일실시예에 따른 코드의 등록 과정을 설명한다.
하나의 소프트웨어를 이루는 각 부분의 코드를 개발하는 개발자는 작성된 코드를 코드 등록부(10)에 등록(커밋, commit)한다. 이때, 등록되는 코드는 컴파일되기 이전의 코드인 소스코드인 것이 바람직하다. 그러나, 각 소스코드가 컴파일된 오브젝트 코드가 등록되어도 무방하다.
코드를 등록할 때, 개발자는 자신의 식별자(예컨대, ID)를 이용하여 코드 등록부(10)에 로그인되어 있을 수 있다. 여기에서, 식별자는 이름, 고유번호, ID, 이메일 주소 등이 될 수 있다. 그러나, 코드의 등록시에 개발자가 로그인되어 있지 않고 코드의 등록시에 자신의 식별자를 입력하도록 구현하더라도 무방하다.
또한, 코드의 등록시에 개발자는 자신의 연락처를 추가적으로 입력할 수 있다. 만일, 개발자의 연락처가 개발자 정보 저장소(150)에 미리 저장되어 있는 경우에는 코드의 등록시에 연락처를 입력하지 않을 수도 있다.
또한, 개발자는 어떠한 소프트웨어를 구성하기 위한 코드인지를 나타내는 소프트웨어의 명칭(또는 과제의 명칭), 및 소프트웨어 중 어느 부분에 관한 코드인지를 나타내는 모듈의 명칭을 입력할 수 있다.
코드 등록부(10)는 네트워크를 통하여 개발자 단말기(200)로부터 코드를 수신하고(S11), 개발자의 식별자, 소프트웨어의 명칭, 모듈의 명칭을 함께 수신한다(S12). 이어서, 코드 등록부(10)는 코드의 버전을 생성한다(S13). 코드의 버전은 예를 들어, 소수점을 포함하는 일련번호(v1.0.0, v1.0.1 등)로 생성될 수도 있고, 코드를 등록한 일자와 시간(2012/05/20, 14:10)으로 생성될 수도 있으나, 코드의 버전의 형식은 이에 한정되지 않고 다양한 형식을 가질 수 있다.
코드 등록부(10)는 수신된 코드를 코드 저장소(110)에 저장하고(S14), 코드 저장소(110)에 저장되는 코드와 연관된 소프트웨어의 명칭, 모듈의 명칭, 코드의 버전, 코드의 등록 일시, 코드 작성자 및 등록된 코드의 파일명 등을 포함하는 코드 등록 정보를 메타데이터 저장소(120)에 저장한다(S15).
본 실시예에서는, 코드를 수신하고(S11), 개발자의 식별자, 소프트웨어의 명칭, 모듈의 명칭을 수신하고(S12), 코드의 버전을 생성하고(S13), 코드를 저장하고(S14), 코드 등록 정보를 저장하는(S15) 순서로 기재하였으나, 본 발명은 이 순서에 한정되지 않는다. 예를 들어, 개발자의 식별자, 소프트웨어의 명칭, 모듈의 명칭을 먼저 수신한 후 코드를 수신하더라도 무방하다. 또한, 코드 등록 정보를 메타데이터 저장소(120)에 저장한 후, 코드를 코드 저장소(110)에 저장하더라도 무방하다.
코드 저장소(110)에 저장된 코드는 접근 권한을 가진 다른 개발자들이 열람할 수 있는 상태에 놓여지고, 다른 개발자들은 코드를 참조하여 자신의 코드를 작성하거나, 필요한 경우 등록된 코드를 수정하여 새로운 코드를 등록할 수 있다. 새로운 코드가 등록되는 경우에, 코드 등록부(10)는 코드의 버전을 갱신하여 코드를 등록함으로써 기존에 등록된 코드와 구별하도록 한다.
이와 같이, 하나의 소프트웨어를 구성하기 위한 각각의 코드는 각각의 개발자에 의해 작성, 수정되어 빌드될 때까지 축적된다.
<실행 코드 빌드 과정>
도 3은 본 발명의 일실시예에 따른 실행 코드의 빌드 과정을 나타내는 순서도이다. 이하, 도 1 및 도 3을 참조하여 본 발명의 일실시예에 따른 실행 코드의 빌드 과정을 설명한다.
빌드 실행부(20)는, 우선, 빌드 실행부(20)는 코드 저장소(110)에 저장된 다수의 코드 중에서 빌드에 사용될 코드를 선택한다(S21). 빌드에 사용될 코드는 관리자에 의하여 선택될 수 있고, 또는 각각의 모듈을 위한 다수의 코드 중 최신의 버전을 가지는 코드가 빌드에 사용될 코드로서 자동적으로 선택될 수 있다.
빌드 실행부(20)는 빌드 버전을 생성한다(S22). 빌드 버전은 다수의 코드가 결합되어 생성되는 실행 코드(소프트웨어)의 버전을 나타내는 것으로서, 각각의 코드의 버전을 나타내는 코드 버전과는 다르다. 빌드 버전은 예를 들어, 소수점을 포함하는 일련번호(v1.0.0, v1.0.1 등)로 생성될 수도 있고, 빌드를 수행한 일자와 시간(2012/05/20, 14:10)으로 생성될 수도 있으나, 빌드 버전의 형식은 이에 한정되지 않고 다양한 형식을 가질 수 있다.
빌드 실행부(20)는 선택된 코드들을 이용하여 하나의 소프트웨어로서의 실행 코드를 빌드한다(S23). 예컨대, 코드 저장소(110)에 저장된 코드가 소스코드인 경우에는 빌드 실행부(20)는 각각의 소스코드들을 컴파일하고 이를 하나 이상의 실행 코드로 변환한다. 또는, 코드 저장소(110)에 저장된 코드가 오브젝트 코드인 경우에는 빌드 실행부(20)는 오브젝트 코드들을 연결하여 하나 이상의 실행 코드로 변환한다. 이때, 변환된 실행 코드에는 빌드 버전이 수록된다.
빌드 실행부(20)는 빌드 정보를 생성하여 메타데이터 저장소(120)에 저장한다(S24). 도 5는 빌드 정보를 예시적으로 나타내는 예시도이다. 빌드 정보(500)는 상기 실행 코드를 구성하는 각 코드의 파일명 및 버전(530), 빌드 일시(520), 및 소프트웨어의 명칭 및 빌드 버전(510)을 포함할 수 있다(S24).
본 실시예에서는, 코드를 선택하고(S21), 빌드 버전을 생성하고(S22), 실행 코드를 생성하고(S23), 빌드 정보를 저장하는(S24) 순서로 기재하였으나, 본 발명은 이 순서에 한정되지 않는다. 예를 들어, 빌드 명령이 입력되면 빌드 버전을 먼저 생성하고, 빌드를 위한 코드를 선택하도록 구성하여도 무방하다. 또한, 빌드 정보를 메타데이터 저장소(120)에 저장한 후, 실행 코드를 생성하더라도 무방하다.
위의 과정으로 빌드된 실행 코드는 사용자용 소프트웨어로서 배포되어 실행 장치(300)에서 실행된다. 예컨대, 소프트웨어는 사용자의 PC(300a) 또는 모바일 단말기(300b)에 설치되어 각각의 사용자를 위하여 실행될 수 있고, 또는 웹 서버(300c)에 설치되어 다수의 사용자에게 웹 페이지를 제공하기 위하여 실행될 수도 있다.
<오류 로그 수집 및 분석 과정>
도 4는 본 발명의 일실시예에 따른 오류 로그 수집 및 분석 과정을 나타내는 순서도이다. 이하, 도 1 및 도 4를 참조하여 본 발명의 일실시예에 따른 오류 로그 수집 및 분석 과정을 설명한다.
실행 장치(300)에서 실행되는 소프트웨어(실행 코드)는, 실행 중 오류가 발생하는 경우에, 오류 로그를 생성하도록 구성된다. 도 6은 소프트웨어에서 생성되는 오류 로그를 예시적으로 나타내는 예시도이다. 오류 로그(600)에는 오류의 발생 일시(610), 소프트웨어의 명칭과 빌드 버전(620), 에러 코드(630) 및 오류의 발생 위치 정보(640a, 640b)가 포함될 수 있다. 오류의 발생 위치 정보는 예를 들어, 소프트웨어 내에서 오류를 발생시킨 명령어 또는 함수가 위치하는 위치정보(640a)일 수도 있고, 오류가 발생할 때까지 쌓인 콜스택 정보(640b)일 수 있다.
소프트웨어는 생성된 오류 로그를 오류 로그 분석 시스템(1)의 로그 수집부(30)로 전송하도록 구성된다.
로그 수집부(30)는 각각의 실행 장치(300)로부터 오류 로그를 수집하고(S31), 이를 로그 저장소(130)에 저장한다(S32). 로그 수집부(30)로 전송된 오류 로그를 바로 로그 분석부(40)로 전달하여 분석하도록 구성할 수도 있으나, 다수의 실행 장치(300)로부터 수집되는 방대한 양의 오류 로그를 로그 분석부(40)에서 바로 처리할 수 없을 수 있기 때문에, 로그 수집부(30)는 우선 오류 로그를 로그 저장소(130)에 저장하고, 이를 추후에 로그 분석부(40)에서 분석하는 것이 바람직하다.
로그 분석부(40)는 로그 저장소(130)에서 오류 로그를 하나씩 추출하여 오류 로그를 분석한다. 만일, 발생되는 오류 로그의 양이 많지 않은 경우에는 로그 저장소(130)를 통하지 않고 로그 수집부(30)에서 수집되는 오류 로그를 바로 분석하더라도 무방하다.
로그 분석부(40)는 오류 로그에서 소프트웨어 명칭 및 빌드 버전(620), 오류의 발생 위치 정보(640a, 640b) 및 에러 코드(630)를 파싱하여 추출한다(S33).
로그 분석부(40)는 오류 로그로부터 추출한 소프트웨어 명칭 및 빌드 버전(620)과 대응되는 빌드 정보를 메타데이터 저장소(120)에서 검색하여 추출한다(S34). 예를 들어, 도 5에 예시된 빌드 정보가 메타데이터 저장소(120)에서 추출된다.
또한, 로그 분석부(40)는 추출된 빌드 정보에 포함되어 있는 코드의 파일명 및 코드 버전 목록으로부터 오류의 발생 위치 정보에 대응되는 코드, 즉 오류와 관계된 코드의 파일명 및 코드 버전을 결정한다(S35). 이때, 오류와 관계된 코드는 하나의 코드일 수도 있으나, 여러 개의 코드일 수도 있다. 예컨대, 오류를 발생시킨 명령어 또는 함수가 포함된 코드(도 5, 6의 예시에서는 "False.java v2.1.3")가 오류와 관계된 코드로 특정될 수도 있고, 오류가 발생할 때까지 콜스택에 쌓여진 함수들이 속하는 코드(도 5, 6의 예시에서는 "DataSearcher.java v1.1.0", "Calc.java v2.1.3", "False.java v2.1.3")가 오류와 관계된 코드로 특정될 수도 있다.
로그 분석부(40)는 빌드 정보에 포함된 오류와 관계된 코드의 파일명 및 코드 버전에 대응하는 코드 등록 정보를 메타데이터 저장소(120)에서 검색하고, 검색된 코드 등록 정보에서 오류와 관계된 코드를 작성한 개발자의 식별자를 추출한다(S36).
추가적으로, 로그 분석부(40)는 분석된 오류 로그 정보, 예를 들어, 소프트웨어의 명칭, 빌드 버전, 오류 발생 위치, 에러 코드, 오류와 관계된 코드의 명칭, 오류와 관계된 코드의 버전, 오류와 관계된 코드를 작성한 개발자의 정보를 분석 결과 저장소(140)에 저장할 수 있다(S38). 또한, 로그 분석부(40)는 동일한 오류가 중복적으로 발생하는 경우에는 오류의 발생 횟수를 업데이트하며 기록할 수 있다.
이와 같은 과정을 통하여, 소프트웨어의 실행시에 오류가 발생하는 경우, 오류와 관계된 코드를 작성한 개발자를 특정할 수 있게 된다.
<오류 정보 통지 과정>
도 5는, 본 발명의 일실시예에 따른 오류 정보 통지 과정을 나타내는 순서도이다. 이하, 도 1 및 도 5를 참조하여 본 발명의 일실시예에 따른 오류 정보 통지 과정을 설명한다.
오류 통지부(50)는 로그 분석부(40)에 의해 검색된 개발자의 식별자를 이용하여 개발자 정보 저장소(150)에서 오류와 관계된 코드를 작성한 개발자의 연락처를 검색한다. 이때, 개발자의 연락처는 이메일 주소 또는 이동통신 단말기의 전화번호일 수 있다.
오류 통지부(50)는 검색된 개발자의 연락처로 오류 발생 정보를 포함하는 전자 메시지를 송신한다(S37). 이때, 오류 발생 정보는 소프트웨어 명칭, 빌드 버전, 및 코드의 버전을 포함할 수 있다. 또한, 개발자의 연락처가 이메일 주소인 경우, 전자 메시지는 이메일일 수 있고, 개발자의 연락처가 이동통신 단말기의 전화번호인 경우에는 SMS(Short Message Service) 또는 MMS(Multimedia Message Service)일 수도 있다.
한편, 동일한 빌드 버전의 소프트웨어의 동일한 위치에서 동일한 에러 코드의 오류가 중복적으로 발생하는 경우, 이미 오류의 발생 사실을 알고 있는 개발자에게 중복적으로 오류 발생 정보를 전송하는 것은 불필요할 수 있다. 이에, 오류 통지부(50)는 오류 발생 정보를 통지한 후에 특정 소프트웨어의 특정 위치에서 특정 에러 코드의 오류 발생 정보를 통지하였음을 저장하고, 오류 발생 정보를 통지하기 전에 동일한 오류에 대하여 오류 정보를 개발자에게 통지하였는지를 확인하고 기통지된 적이 없는 경우에만 개발자에게 오류 정보를 통지할 수도 있다.
또한, 발생한 오류에 관계된 코드가 이미 수정되어 새로운 버전의 코드가 작성된 경우에는, 오류 정보가 개발자에게 통지되지 않게 구성될 수도 있다.
또한, 오류 통지부(50)는 오류 정보 제공 페이지에 발생된 오류에 대한 개발자의 코멘트를 입력할 수 있도록 하는 폼을 생성하고 이를 전자 메시지에 포함시켜서 개발자에게 전송할 수 있다. 폼에는 소프트웨어의 명칭, 빌드 정보, 오류와 관계된 코드의 명칭 및 버전, 에러 코드, 개발자의 식별자 또는 이름 등의 정보가 미리 입력되어 있고, 개발자는 오류에 대한 코멘트만을 입력하여 간단하게 오류 정보를 오류 정보 제공 페이지에 등록할 수 있다.
<오류 정보 제공 페이지>
오류 정보 제공부(60)는 발생한 오류에 대하여, 전반적 통계, 모듈별/코드별 통계, 오류별 통계 및 현재 해결 상태 등을 나타내는 오류 정보 제공 페이지를 생성하여 개발자들에게 제공할 수 있다. 또한, 각 오류에 대하여 개발자들이 코멘트를 남길 수 있는 양식을 추가적으로 제공할 수 있다.
상술한 소프트웨어의 오류 로그 분석 방법 및 시스템에 따르면, 소프트웨어에서 오류가 발생한 경우에 오류와 관계된 코드를 작성한 개발자를 특정하고 자동적으로 오류 발생 정보를 통지할 수 있으므로, 개발자가 오류 발생 여부를 신속하게 인식하고 코드를 수정하도록 할 수 있는 효과가 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (8)

  1. 복수의 개발자가 하나의 소프트웨어를 분산하여 개발하고, 개발된 소프트웨어의 오류 로그를 분석하는 시스템상에서 수행되는 소프트웨어의 오류 로그 분석 방법으로서,
    각 코드의 개발자가 작성된 코드를 등록하는 시점에, 상기 작성된 코드의 버전 및 개발자의 식별자를 포함하는 코드 등록 정보를 메타데이터 저장소에 기록하는 단계,
    복수의 코드가 하나의 소프트웨어로 빌드되는 시점에, 상기 소프트웨어를 구성하는 코드의 목록, 각 코드의 버전 및 상기 소프트웨어의 빌드 버전을 포함하는 소프트웨어 빌드 정보를 상기 메타데이터 저장소에 기록하는 단계,
    상기 소프트웨어의 실행 중 발생한 오류에 대한 오류 로그를 수집하는 단계,
    상기 오류 로그로부터 상기 소프트웨어의 빌드 버전 및 오류 발생 위치 정보를 추출하는 단계,
    상기 소프트웨어의 빌드 버전 및 상기 오류 발생 위치 정보를 상기 메타데이터 저장소의 빌드 정보와 비교하여 오류와 관계된 코드를 특정하는 단계, 및
    상기 오류와 관계된 코드의 버전을 상기 메타데이터 저장소의 코드 등록 정보와 비교하여 상기 오류와 관계된 코드를 작성한 개발자를 특정하는 단계를 포함하는, 소프트웨어의 오류 로그 분석 방법.
  2. 제 1 항에 있어서,
    상기 오류 발생 위치 정보는 오류 발생 시점까지의 콜스택 정보를 포함하고,
    상기 콜스택에 쌓인 함수들이 속하는 코드를 상기 오류와 관계된 코드로 특정하는 것을 특징으로 하는, 소프트웨어의 오류 로그 분석 방법.
  3. 제 1 항에 있어서,
    상기 특정된 개발자에게 상기 발생한 오류의 정보를 통지하는 것을 특징으로 하는, 소프트웨어의 오류 로그 분석 방법.
  4. 제 3 항에 있어서,
    상기 특정된 개발자에게 상기 발생된 오류에 관한 코멘트를 오류 정보 제공 페이지에 등록할 수 있게 하는 폼을 포함하는 전자 메시지를 전송하는 것을 특징으로 하는, 소프트웨어의 오류 로그 분석 방법.
  5. 복수의 개발자의 단말기와 네트워크 연결된 시스템으로서,
    상기 개발자의 단말기로부터 수신한 코드를 코드 저장소에 저장하고, 상기 코드를 작성한 개발자의 식별자 및 상기 코드의 버전을 포함하는 코드 등록 정보를 메타데이터 저장소에 저장하는 코드 등록부,
    복수의 코드를 하나의 소프트웨어로 빌드하고, 상기 소프트웨어를 구성하는 코드의 목록, 각 코드의 버전 및 상기 소프트웨어의 빌드 버전을 포함하는 소프트웨어 빌드 정보를 상기 메타데이터 저장소에 저장하는 빌드 실행부,
    상기 소프트웨어의 실행 중 발생한 오류의 오류 로그를 수집하는 로그 수집부,
    상기 오류 로그로부터 상기 소프트웨어의 빌드 버전 및 오류 발생 위치 정보를 추출하고, 상기 소프트웨어의 빌드 버전 및 상기 오류 발생 위치 정보를 상기 메타데이터 저장소의 빌드 정보와 비교하여 오류와 관계된 코드를 특정하고, 상기 오류와 관계된 코드의 버전을 상기 메타데이터 저장소의 코드 등록 정보와 비교하여 상기 오류와 관계된 코드를 작성한 개발자를 특정하는 로그 분석부를 포함하는, 소프트웨어의 오류 로그 분석 시스템.
  6. 제 5 항에 있어서,
    상기 오류 발생 위치 정보는 오류 발생 시점까지의 콜스택 정보를 포함하고,
    상기 로그 분석부는 상기 콜스택에 쌓인 함수들이 속하는 코드를 상기 오류와 관계된 코드로 특정하는 것을 특징으로 하는, 소프트웨어의 오류 로그 분석 시스템.
  7. 제 5 항에 있어서,
    상기 특정된 개발자에게 상기 발생한 오류의 정보를 통지하는 오류 통지부를 더 포함하는 것을 특징으로 하는, 소프트웨어의 오류 로그 분석 시스템.
  8. 제 7 항에 있어서,
    상기 오류 통지부는, 상기 특정된 개발자에게 상기 발생된 오류에 관한 코멘트를 오류 정보 제공 페이지에 등록할 수 있게 하는 폼을 포함하는 전자 메시지를 전송하는 것을 특징으로 하는, 소프트웨어의 오류 로그 분석 시스템.
KR1020120122587A 2012-10-31 2012-10-31 소프트웨어의 오류 로그 분석 방법 및 시스템 Expired - Fee Related KR101423110B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120122587A KR101423110B1 (ko) 2012-10-31 2012-10-31 소프트웨어의 오류 로그 분석 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120122587A KR101423110B1 (ko) 2012-10-31 2012-10-31 소프트웨어의 오류 로그 분석 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20140056793A KR20140056793A (ko) 2014-05-12
KR101423110B1 true KR101423110B1 (ko) 2014-07-29

Family

ID=50887870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120122587A Expired - Fee Related KR101423110B1 (ko) 2012-10-31 2012-10-31 소프트웨어의 오류 로그 분석 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101423110B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106339315B (zh) * 2016-08-19 2019-03-22 东软集团股份有限公司 定位缺陷的方法及装置
CN114764386A (zh) * 2021-11-22 2022-07-19 深圳市珍爱捷云信息技术有限公司 线上监控报警方法、装置、电子设备和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070001622A (ko) * 2005-06-29 2007-01-04 주식회사 팬택 램을 이용한 오류 코드 저장 방법 및 이를 구비한 이동통신단말기
KR20070005186A (ko) * 2005-07-05 2007-01-10 엘지전자 주식회사 휴대단말기의 로그 기록장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070001622A (ko) * 2005-06-29 2007-01-04 주식회사 팬택 램을 이용한 오류 코드 저장 방법 및 이를 구비한 이동통신단말기
KR20070005186A (ko) * 2005-07-05 2007-01-10 엘지전자 주식회사 휴대단말기의 로그 기록장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
김만기, '소프트웨어 오류 수집 및 분류의 자동화를 통한 유지보수 개선 방안', 서강대학교석사학위논문. 2011년 *

Also Published As

Publication number Publication date
KR20140056793A (ko) 2014-05-12

Similar Documents

Publication Publication Date Title
US10621212B2 (en) Language tag management on international data storage
US20080215389A1 (en) Model oriented business process monitoring
CN102687124A (zh) 分析查询优化器性能的设备和方法
US9928055B1 (en) Validating development software by comparing results from processing historic data sets
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
US20160321068A1 (en) Populating a Software Catalogue with Related Product Information
CN112699279B (zh) 组件自动化处理方法、装置、设备和存储介质
CN109542444B (zh) Java应用的监控方法、装置、服务器和存储介质
CN110851324B (zh) 基于日志的巡检处理方法、装置以及电子设备、存储介质
CN112506923B (zh) 对应业务的方法调用链路确定方法、装置、电子设备
CN103109293A (zh) 一种用户行为处理系统及方法
CN112162954B (zh) 用户操作日志生成、路径的定位方法、装置、设备及介质
CN103649924A (zh) 嵌入式装置、程序产生装置和程序
KR101423110B1 (ko) 소프트웨어의 오류 로그 분석 방법 및 시스템
CN110351131B (zh) 一种用于分布式链路的监控方法、装置和电子设备
CN111488144A (zh) 一种数据处理方法以及设备
CN113111669B (zh) 基于增量的前端多语言国际化翻译方法及装置
JP5537599B2 (ja) 業務システムにおけるバージョンアップ管理方法
CN114064467A (zh) 资源分析方法、装置、电子设备及存储介质
CN113641523B (zh) 一种日志处理方法及装置
CN112464242A (zh) 一种网页平台漏洞采集方法、系统、终端及存储介质
CN115543675A (zh) 一种代码异常处理方法、装置、计算机设备和存储介质
Shah et al. CloudScent: a model for code smell analysis in open-source cloud
CN112860284B (zh) 设备远程升级的sp升级包生成方法、装置及计算机设备
CN102063347B (zh) 一种磁带数据恢复方法及系统

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20121031

PA0201 Request for examination
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20131204

Patent event code: PE09021S01D

PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20140623

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20140718

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20140721

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20170704

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20180704

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20180704

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20190701

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20200706

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20210705

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20220630

Start annual number: 9

End annual number: 9

PR1001 Payment of annual fee

Payment date: 20230704

Start annual number: 10

End annual number: 10

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20250429