KR102485137B1 - 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템 - Google Patents

프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템 Download PDF

Info

Publication number
KR102485137B1
KR102485137B1 KR1020200169281A KR20200169281A KR102485137B1 KR 102485137 B1 KR102485137 B1 KR 102485137B1 KR 1020200169281 A KR1020200169281 A KR 1020200169281A KR 20200169281 A KR20200169281 A KR 20200169281A KR 102485137 B1 KR102485137 B1 KR 102485137B1
Authority
KR
South Korea
Prior art keywords
program code
error correction
location information
correction system
tokens
Prior art date
Application number
KR1020200169281A
Other languages
English (en)
Other versions
KR20220080311A (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 KR1020200169281A priority Critical patent/KR102485137B1/ko
Priority to US17/349,548 priority patent/US11579962B2/en
Publication of KR20220080311A publication Critical patent/KR20220080311A/ko
Application granted granted Critical
Publication of KR102485137B1 publication Critical patent/KR102485137B1/ko

Links

Images

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/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • 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
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 저장부에 저장된 프로그램 코드를 획득하는 단계, 상기 저장부에 저장된 프로그램 코드를 토큰화하는 단계, 상기 토큰화를 통해 생성된 토큰들에 대한 상기 프로그램 코드에서의 위치 정보를 매핑하는 단계, 상기 위치 정보가 매핑된 토큰들을 오류 자동 수정 시스템이 읽을 수 있는 숫자 형태의 벡터 데이터로 변환하는 단계, 상기 변환된 벡터 데이터를 오류 자동 수정 시스템의 입력으로 제공하는 단계, 상기 오류 자동 수정 시스템이 상기 벡터 데이터를 기반으로 상기 프로그램 코드를 읽고 이해한 후, 상기 프로그램 코드에 포함된 오류를 검출하고, 검출된 오류에 대한 오류 복원을 수행하여 수정된 프로그램 코드를 출력하는 단계를 포함하는 특징으로 하는 프로그램 코드의 오류 자동 수정 방법 및 이를 지원하는 시스템을 개시한다.

Description

프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템{Method for automatically fixing program errors and system supporting the same}
본 발명은 프로그램 오류 자동 수정에 관한 것으로, 더욱 상세하게는 프로그램 컴파일 과정에서 발생하는 오류 또는 컴파일 과정에서 찾을 수 없는 논리적인 오류를 자동으로 수정할 수 있는 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템에 관한 것이다.
종래 기술에는 프로그램의 소스코드에 대하여 다양한 종류의 오류를 검사하는 컴파일러의 기술이 있다. 컴파일러는 현재 언어에 대해 어휘적, 구문적, 의미적으로 검사하여 오류가 없을 경우에 목적코드를 생성하는 수단으로 이용된다. 종래 기술에 따른 프로그램 오류 검사 방법은, 어휘를 분석하고, 구문을 분석하고, 의미를 분석하여, 중간 코드를 생성한 후에, 코드를 최적화하여, 목적 코드를 생성한다. 그러나 상기 종래 기술은 단지 소스코드 내 일부의 오류에 대해 맞게 작성되었는가를 검사할 수 있을 뿐이며, 프로그램 내 논리적 오류와 같은 규칙 기반으로 검사하기 어려운 오류들에 대해서는 검사할 수 없다는 문제점이 있었다. 즉, 프로그램의 오류 수정을 위해 규칙 기반으로 작동하는 기존의 컴파일러는 변수 선언 누락이나 오타와 같은 오류를 검사해주지만 자동으로 수정해줄 수 없고, 논리적인 오류도 찾아줄 수 없는 문제점이 있었다.
본 발명은 프로그램 코드의 위치 정보 활용을 통해 프로그램 코드의 정확한 위치에 오류를 수정할 수 있으며, 사용자의 개입이 필요 없는 자동 오류 수정을 지원하는 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템을 제공함에 있다.
본 발명의 실시 예에 따른 프로그램 코드 오류를 자동 수정하는 컴퓨팅 시스템은 프로그램 코드를 저장하는 저장부, 상기 저장부에 저장된 프로그램 코드를 토큰화하고, 토큰들을 숫자 형태의 벡터로 변환하고, 토큰들에 대한 위치 정보를 매핑하는 전처리 시스템, 상기 전처리 시스템에 의해 전처리된 데이터를 입력으로 수신하고, 상기 프로그램 코드에 포함된 오류를 검출하고, 검출된 오류에 대한 오류 복원을 수행하여 수정된 프로그램 코드를 제공하는 오류 자동 수정 시스템을 포함할 수 있다.
여기서, 상기 전처리 시스템은 상기 프로그램 코드에 포함된 어휘소들에 대응하는 토큰들을 생성하되, 상기 토큰들을 상기 프로그램 코드에 대응하는 일정 시퀀스로 표현하는 토큰 처리기, 상기 프로그램 코드 상에서의 상기 토큰들의 위치 정보를 인코딩하는 위치 정보 인코더, 상기 토큰들을 상기 오류 자동 수정 시스템이 읽을 수 있는 숫자 형태의 벡터로 변환하는 벡터 변환기를 포함하는 것을 특징으로 한다.
추가로, 상기 오류 자동 수정 시스템은 상기 위치 정보를 기반으로 상기 검출된 오류에 대한 복원 코드 및 오류 복원 위치를 출력하는 것을 특징으로 한다.
또한, 상기 저장부는 상기 오류 자동 수정 시스템에 의해 수정된 프로그램 코드를 저장하는 것을 특징으로 한다.
본 발명의 실시 예에 따른 프로그램 코드의 오류 자동 수정 방법은, 저장부에 저장된 프로그램 코드를 획득하는 단계, 상기 저장부에 저장된 프로그램 코드를 토큰화하는 단계, 상기 토큰화를 통해 생성된 토큰들에 대한 상기 프로그램 코드에서의 위치 정보를 매핑하는 단계, 상기 위치 정보가 매핑된 토큰들을 오류 자동 수정 시스템이 읽을 수 있는 숫자 형태의 벡터 데이터로 변환하는 단계, 상기 변환된 벡터 데이터를 오류 자동 수정 시스템의 입력으로 제공하는 단계, 상기 오류 자동 수정 시스템이 상기 벡터 데이터를 기반으로 상기 프로그램 코드를 읽고 이해한 후, 상기 프로그램 코드에 포함된 오류를 검출하고, 검출된 오류에 대한 복원 코드 및 오류 복원을 수행하여 수정된 프로그램 코드를 출력하는 단계를 포함할 수 있다.
여기서, 상기 토큰화하는 단계는 상기 프로그램 코드에 포함된 어휘소들에 대응하는 토큰들을 생성하되, 상기 토큰들을 상기 프로그램 코드에 대응하는 일정 시퀀스로 표현하는 단계를 포함할 수 있다.
추가로, 상기 방법은 상기 위치 정보를 기반으로 상기 검출된 오류에 대한 복원 코드 및 오류 복원 위치를 출력하는 단계를 더 포함할 수 있다.
또한, 상기 방법은 상기 오류 자동 수정 시스템에 의해 수정된 프로그램 코드를 저장하는 단계를 더 포함할 수 있다.
본 발명에 따른 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템에 따르면, 본 발명은 프로그램 코드의 위치 정보 활용을 통해 정확한 위치에 오류 수정이 가능하기 때문에 오류가 없는 코드로 복원할 수 있도록 지원하며, 사용자의 개입이 없이도 하나 이상의 오류가 존재하는 프로그램의 일부/모든 오류를 자동으로 한 번에 수정 할 수 있도록 지원한다.
도 1은 본 발명의 실시 예에 따른 프로그램 오류 자동 수정을 처리하는 컴퓨팅 시스템 구성의 한 예를 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 전처리 시스템 구성의 한 예를 나타낸 도면이다.
도 3은 본 발명의 실시 예에 따른 프로그램 오류 자동 수정 방법의 한 예를 나타낸 도면이다.
하기의 설명에서는 본 발명의 실시 예를 이해하는데 필요한 부분만이 설명되며, 그 이외 부분의 설명은 본 발명의 요지를 흩트리지 않는 범위에서 생략될 것이라는 것을 유의하여야 한다.
이하에서 설명되는 본 명세서 및 청구범위에 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위해 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 바람직한 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
이하, 첨부된 도면을 참조하여 본 발명의 실시 예를 보다 상세하게 설명하고자 한다.
도 1은 본 발명의 실시 예에 따른 프로그램 오류 자동 수정을 처리하는 컴퓨팅 시스템 구성의 한 예를 나타낸 도면이다.
도 1을 참조하면, 본 발명의 실시 예에 따른 프로그램 오류 자동 수정을 지원하는 컴퓨팅 시스템(100)은 저장부(120), 전처리 시스템(150)(또는 전처리기, 전처리 프로세서), 오류 자동 수정 시스템(160)(또는 오류 자동 수정 장치, 오류 자동 수정 프로세서)을 포함할 수 있다. 이러한 구성의 컴퓨팅 시스템(100)은 프로그램 소스 코드에 하나 이상의 오류가 존재하는 경우, 적어도 하나 이상의 일부 또는 모든 오류를 수정할 수 있으며 이 과정에서 자동으로 수정된 코드를 복원할 수 있는 기능을 제공한다. 본 발명의 컴퓨팅 시스템(100)은 적어도 하나의 컴퓨팅 장치를 기반으로 구성될 수 있다. 예컨대, 상기 컴퓨팅 시스템(100)은 적어도 하나의 프로세서와 적어도 하나의 저장부를 포함하는 컴퓨팅 장치로 구성되고, 상기 적어도 하나의 프로세서가 상기 전처리 시스템(150) 및 오류 자동 수정 시스템(160)의 동작을 처리할 수 있다. 또는, 상기 컴퓨팅 시스템(100)은 복수개의 컴퓨팅 장치를 기반으로 구성될 수 있다. 예컨대, 컴퓨팅 시스템(100)은 전처리 시스템(150) 동작 처리를 위한 하나의 컴퓨팅 장치, 오류 자동 수정 시스템(160) 동작 처리를 위한 하나의 컴퓨팅 장치, 저장부(120) 기능을 지원하는 컴퓨팅 장치를 포함할 수 있다. 또한, 상기 컴퓨팅 시스템(100)은 복수개의 컴퓨팅 장치들이 네트워크로 연결된 상태로 구성될 수도 있다. 예컨대, 상기 컴퓨팅 시스템(100)은 상기 전처리 시스템(150)을 지원하는 서버 장치, 상기 오류 자동 수정 시스템(160)을 지원하는 서버 장치, 상기 저장부(120) 기능을 지원하는 저장 서버 장치를 포함하여 구성될 수 있고, 각각 서버 장치는 유선 또는 무선 네트워크 중 적어도 하나의 네트워크를 통해 연결될 수 있다.
상기 저장부(120)는 컴퓨팅 시스템(100)의 구동에 필요한 데이터의 저장 및 컴퓨팅 시스템(100) 구동에 필요한 적어도 하나의 프로그램의 저장을 지원할 수 있다. 상기 저장부(120)는 복수개의 메모리 영역 또는 복수개의 메모리 장치를 포함하여 구성될 수 있다. 예를 들어, 상기 저장부(120)는 전처리 시스템(150)에서의 토큰화 기능, 벡터 변환 기능 및 위치 정보 인코딩 기능을 지원할 수 있는 소프트웨어 모듈들을 저장하고, 적어도 하나의 프로세서의 제어에 따라, 해당 소프트웨어 모듈을 제공할 수 있다. 또한, 상기 저장부(120)는 오류 자동 수정 시스템(160)에서의 인공신경망 기반 오류 수정 기능을 지원할 수 있는 인공신경망 기반 딥 러닝을 수행하는 알고리즘을 저장할 수 있다. 또한, 상기 저장부(120)는 상기 인공신경망 기반 딥 러닝 알고리즘의 학습을 위한 데이터를 임시 저장할 수 있다. 특히, 상기 저장부(120)는 본 발명의 실시 예에 따른 프로그램 코드 오류 수정과 관련하여, 오류 수정할 프로그램 코드(121) 및 오류가 수정된 프로그램 코드(123)를 저장할 수 있다. 여기서, 상기 저장부(120)는 전처리 시스템(150)에 제공할 프로그램 코드(121)를 저장하는 메모리 영역 및 오류 자동 수정 시스템(160)이 출력한 수정된 프로그램 코드(123)를 저장하는 메모리 영역을 포함할 수 있다. 또는, 상기 저장부(120)는 상기 프로그램 코드(121)를 저장하는 메모리 장치와 상기 수정된 프로그램 코드(123)를 저장하는 메모리 장치를 각각 포함할 수도 있다.
상기 전처리 시스템(150)은 저장부(120)에 저장된 프로그램 코드(121)를 오류 자동 수정 시스템(160)에 제공하여 오류 자동 수정 시스템(160)이 해당 프로그램 코드(121)에 대한 시퀀스를 기반으로 이해를 수행하고, 이해된 사항들을 바탕으로 수정된 프로그램 코드(123)를 출력할 수 있도록, 상기 프로그램 코드(121)의 전처리를 수행할 수 있다. 즉, 상기 전처리 시스템(150)은 상기 프로그램 코드(121)를 상기 오류 자동 수정 시스템(160)이 학습하고 결과를 도출할 수 있는 형태로 변환할 수 있다. 이와 관련하여, 상기 전처리 시스템(150)은 도 2에 도시된 바와 같은 구성을 포함할 수 있다.
상기 오류 자동 수정 시스템(160)은 상기 전처리 시스템(150)이 제공한 데이터들에 대해 인공신경망 기반 딥 러닝 알고리즘을 이용하여 학습을 수행하고, 학습 수행에 따라, 전처리 시스템(150)이 제공한 데이터들에 대한 이해를 수행할 수 있다. 상기 오류 자동 수정 시스템(160)은 데이터들에 대한 이해를 기반으로 전처리 시스템(150)이 제공한 프로그램 코드(121)들에 대한 오류를 검출하고, 검출된 오류에 대한 자동 복원을 수행할 수 있다. 이와 관련하여, 상기 오류 자동 수정 시스템(160)은 특정 언어(예: C/C++ 프로그램 언어)로 작성된 프로그램 코드(121)에 대한 다양한 학습을 사전 수행하여, 프로그램 코드(121)의 컴파일 또는 실행 시 발생할 오류를 검출할 수 있다. 그리고 오류 자동 수정 시스템(160)은 학습된 데이터를 기반으로 프로그램 코드(121)의 오류를 자동 복원하고, 복원 결과를 출력할 수 있다. 여기서, 오류 자동 수정 시스템(160)이 전처리 시스템(150)이 제공한 프로그램 코드(121)에 포함된 위치 정보를 기반으로 오류 검출 및 복원된 코드의 위치를 안내함으로서, 어떠한 부분의 프로그램 코드에 오류가 발생하였고, 이를 어떻게 수정했는지를 개발자가 확인할 수 있도록 지원할 수 있다. 이와 관련하여, 상기 오류 자동 수정 시스템(160)은 적어도 저장부(120)와의 연계뿐만 아니라, 적어도 하나의 디스플레이를 포함할 수 있다. 상기 오류 자동 수정 시스템(160)은 연계된(또는 컴퓨팅 시스템(100)에 포함된) 디스플레이에 수정된 프로그램 코드(123)를 출력하고, 검출된 오류 영역 및 복원된 오류를 하이라이트하여 출력할 수 있다. 상술한 동작이 가능하도록, 상기 오류 자동 수정 시스템(160)은 인공신경망 기반의 딥 러닝에서, RNN(Recurrent Neural Network), LSTM(long short term memory), elman NN(Neural Network) 등을 기반으로 코드들에 대한 시퀀스 이해와 오류 검출, 검출된 오류에 대한 기억과, 복원 코드의 기억을 수행하고, 수정된 프로그램 코드(123)로서 저장부(120) 및 디스플레이 출력할 수 있다.
도 2는 본 발명의 실시 예에 따른 전처리 시스템 구성의 한 예를 나타낸 도면이다.
도 2를 참조하면, 상기 전처리 시스템(150)은 토큰 처리기(151), 벡터 변환기(153), 위치 정보 인코더(155)를 포함할 수 있다.
상기 토큰 처리기(151)는 저장부(120)에 저장된 프로그램 코드(121)에 대한 토큰화를 수행할 수 있다. 이와 관련하여, 토큰 처리기(151)는 프로그램 코드(121)에 대한 분석을 수행하고, 분석 결과를 기반으로 프로그램 코드(121)를 복수의 카테고리로 분류하고, 각 카테고리에 포함된 어휘소들을 토큰화할 수 있다. 예컨대, 상기 토큰 처리기(151)는 프로그램 코드(121)에 대하여 키워드, 식별자, 연산자 등 다양한 카테고리로 구분할 수 있다. 상기 토큰 처리기(151)는 분류된 카테고리 정보를 부가 정보로 활용해서 각 어휘소들을 토큰화할 수 있다.
상기 벡터 변환기(153)는 상기 토큰 처리기(151)에 의해 생성된 토큰들을 컴퓨터가 이해할 수 있는(또는 오류 자동 수정 시스템(160)이 장착된 컴퓨팅 장치 또는 프로세서가 이해할 수 있는) 숫자 형태의 벡터로 변환할 수 있다.
상기 위치 정보 인코더(155)는 상기 토큰 처리기(151)에 의해 토큰화된 어휘소들의 위치 정보를 인코딩할 수 있다. 이와 관련하여, 상기 위치 정보 인코더(155)는 프로그램 코드(121)에서 각 어휘소들에 대한 위치 정보를 수집하고, 토큰 처리기(151)에 의해 토큰화된 어휘소들의 프로그램 코드(121)에서의 위치를 확인할 수 있다. 상기 위치 정보 인코더(155)는 상기 어휘소들의 프로그램 코드(121)에서의 위치 정보를 인코딩하고, 인코딩된 정보를 매핑되는 어휘소들에 대응하는 토큰들에 부가 정보로서 기입할 수 있다. 또는, 위치 정보 인코더(155)는 벡터 변환기(153)가 시퀀스에 맞추어 배열된 어휘소들을 벡터로 변환한 값에 추가로, 위치 정보를 부가 정보로 기입할 수 있다. 상기 위치 정보 인코더(155)는 위치 정보가 추가된 데이터를 오류 자동 수정 시스템(160)의 입력으로 전달할 수 있다.
도 3은 본 발명의 실시 예에 따른 프로그램 오류 자동 수정 방법의 한 예를 나타낸 도면이다.
도 3을 참조하면, 본 발명의 프로그램 오류 자동 수정 방법과 관련하여, 컴퓨팅 시스템(100)의 전처리 시스템(150)은 301 단계에서, 프로그램 코드(121)를 수정하는 학습을 위해서 코드를 시퀀스로 표현하기 위해, 키워드, 식별자, 연산자 등과 같은 다양한 종류의 토큰으로 프로그램 코드(121)를 토큰화할 수 있다. 이와 관련하여, 컴퓨팅 시스템(100)의 전처리 시스템(150)은 저장부(120)에 저장된 프로그램 코드(121)를 획득하고, 상기 프로그램 코드(121)에 포함된 어휘소들을 추출하고, 추출된 어휘소들의 종류를 파악해서 각각에 대응하는 토큰들을 생성할 수 있다. 즉, 전처리 시스템(150)은 프로그램 코드(121)를 다양한 토큰으로 매핑하는 토큰화 작업을 한다.
303 단계에서, 컴퓨팅 시스템(100)의 전처리 시스템(150)은 위치 정보 인코딩을 수행할 수 있다. 상기 컴퓨팅 시스템(100)의 전처리 시스템(150)은 위치 정보 인코딩을 위하여, 프로그램 코드(121)에서의 각 어휘소들의 위치 정보를 확인하고, 어휘소들에 대응하여 생성된 토큰들의 위치 정보를 매핑할 수 있다. 상기 컴퓨팅 시스템(100)의 전처리 시스템(150)은 토큰들의 위치에 해당하는 위치 정보를 인코딩하고, 인코딩된 정보를 토큰들에 부가 정보로서 기입할 수 있다. 또는, 상기 컴퓨팅 시스템(100)의 전처리 시스템(150)은 시퀀스로 표현된 토큰들을 오류 자동 수정 시스템(160)이 읽을 수 있는 숫자 형태의 벡터로 변환하는 과정에서, 각 토큰들에 대응하여 인코딩된 위치 정보를 추가하여, 오류 자동 수정 시스템(160)에 제공할 수 있다.
한편 303 단계 이전 또는 이후에 컴퓨팅 시스템(100)의 전처리 시스템(150)은 301 단계에서 생성된 토큰들을 컴퓨터가 이해할 수 있는(또는 오류 자동 수정 시스템(160)이 장착된 컴퓨팅 장치 또는 프로세서가 이해할 수 있는) 숫자 형태의 벡터로 변환할 수 있다.
305 단계에서, 컴퓨팅 시스템(100)의 오류 자동 수정 시스템(160)은 전처리된 데이터에 대한 오류 자동 수정을 수행할 수 있다. 이와 관련하여, 오류 자동 수정 시스템(160)은 전처리 시스템(150)으로부터 전처리된 데이터를 수신할 수 있다. 상기 오류 자동 수정 시스템(160)은 인공신경망 기반의 딥 러닝 알고리즘을 기반으로 전처리된 데이터에 포함된 코드의 전체 시퀀스를 읽고 이해할 수 있다. 이와 관련하여, 상기 인공신경망 기반의 딥 러닝 알고리즘을 구동하는 프로세서(또는 오류 자동 수정 시스템(160))는 프로그램 코드(121)에 대한 사전 학습을 수행할 수 있다. 예컨대, 상기 오류 자동 수정 시스템(160)은 사전 학습 과정에서 프로그램 코드들의 변수 정의 패턴, 함수들의 역할과 목적과, 변수 및 함수들 운용을 통해 특정 목적의 출력이 필요한 경우, 사용되는 코드들의 배열에 관한 학습을 수행할 수 있다. 또는, 상기 오류 자동 수정 시스템(160)은 프로그램 코드의 시작과 출력에 필요한 코드 문법들에 대한 이해를 바탕으로, 잘못 기입된 문법이나 변수, 함수 등의 오류를 검출할 수 있다.
307 단계에서, 컴퓨팅 시스템(100)의 오류 자동 수정 시스템(160)은 코드 복원을 수행할 수 있다. 예컨대, 오류 자동 수정 시스템(160)은 검출된 오류를 확인하고, 오류에 대한 복원을 수행할 수 있다. 이와 관련하여, 오류 자동 수정 시스템(160)은 사전 학습을 통해 특정 입력이 있고, 이에 대하여 특정 출력이 필요한 경우, 필요로 하는 코드들에 대한 정의와 문법에 대한 이해를 바탕으로 검출된 오류에 대한 복원을 수행할 수 있다. 즉, 상기 복원은 인공신경망 기반의 딥 러닝 방식을 통해 수행될 수 있다. 이 과정에서, 상기 오류 자동 수정 시스템(160)은 오류 및 복원 위치를 위치 정보를 통해 확인하고, 위치 정보를 사용자가 확인할 수 있도록 제공할 수 있다.
상술한 바와 같이, 본 발명의 컴퓨팅 시스템(100)은 토큰화를 통해 코드를 시퀀스로 표현한 후, 컴퓨터가 이해할 수 있는 숫자 형태인 벡터로 바꾸고 위치 정보를 반영하기 위해 위치 정보 인코딩을 수행하는 전처리를 수행하고, 전처리가 된 데이터를 오류 자동 수정 시스템(160)에 입력으로 제공하여, 오류 자동 수정 시스템(160)이 코드의 전체 시퀀스를 읽고 이해하여 오류가 적어도 하나 이상 있을 경우 오류를 수정 하고 코드 복원을 통해 자동으로 오류가 수정된 코드를 얻을 수 있도록 지원할 수 있다. 이를 통해, 본 발명의 컴퓨팅 시스템(100)은 프로그램 코드(121)의 위치 정보를 활용하여 정확한 위치에 오류를 수정해주는 시스템을 제공하며, 사용자의 개입이 없이도 하나 이상의 오류가 존재하는 프로그램의 일부/모든 오류를 자동으로 수정할 수 있다.
한편, 본 명세서와 도면에 개시된 실시 예들은 이해를 돕기 위해 특정 예를 제시한 것에 지나지 않으며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형예들이 실시 가능하다는 것은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게는 자명한 것이다.
100: 컴퓨팅 시스템
120: 저장부
150: 전처리 시스템
151: 토큰 처리기
153: 벡터 변환기
155: 위치 정보 인코더
160: 오류 자동 수정 시스템

Claims (9)

  1. 프로그램 코드를 저장하는 저장부;
    상기 저장부에 저장된 프로그램 코드를 토큰화하고, 토큰들에 대한 위치 정보를 매핑하는 전처리 시스템;
    상기 전처리 시스템에 의해 전처리된 데이터를 입력으로 수신하고, 상기 프로그램 코드에 포함된 오류를 검출하고, 검출된 오류에 대한 오류 복원을 수행하여 수정된 프로그램 코드를 제공하는 오류 자동 수정 시스템;을 포함하되,
    상기 오류 자동 수정 시스템은
    상기 위치 정보를 기반으로 상기 검출된 오류에 대한 복원 코드 및 오류 복원 위치를 출력하는 것을 특징으로 하는 프로그램 코드 오류를 자동 수정하는 컴퓨팅 시스템.
  2. 제1항에 있어서,
    상기 전처리 시스템은
    상기 프로그램 코드에 포함된 어휘소들에 대응하는 토큰들을 생성하되, 상기 토큰들을 상기 프로그램 코드에 대응하는 일정 시퀀스로 표현하는 토큰 처리기;
    상기 프로그램 코드 상에서의 상기 토큰들의 위치 정보를 인코딩하는 위치 정보 인코더;
    상기 토큰들을 상기 오류 자동 수정 시스템이 읽을 수 있는 숫자 형태의 벡터로 변환하는 벡터 변환기;를 포함하는 것을 특징으로 하는 프로그램 코드 오류를 자동 수정하는 컴퓨팅 시스템.
  3. 삭제
  4. 제1항에 있어서,
    상기 저장부는
    상기 오류 자동 수정 시스템에 의해 수정된 프로그램 코드를 저장하는 것을 특징으로 하는 프로그램 코드 오류를 자동 수정하는 컴퓨팅 시스템.
  5. 저장부에 저장된 프로그램 코드를 획득하는 단계;
    상기 저장부에 저장된 프로그램 코드를 토큰화하는 단계;
    상기 토큰화를 통해 생성된 토큰들에 대한 상기 프로그램 코드에서의 위치 정보를 매핑하는 단계;
    상기 위치 정보가 매핑된 토큰들을 오류 자동 수정 시스템이 읽을 수 있는 숫자 형태의 벡터 데이터로 변환하는 단계;
    상기 변환된 벡터 데이터를 오류 자동 수정 시스템의 입력으로 제공하는 단계;
    상기 오류 자동 수정 시스템이 상기 벡터 데이터를 기반으로 상기 프로그램 코드를 읽고 이해한 후, 상기 프로그램 코드에 포함된 오류를 검출하고, 검출된 오류에 대한 오류 복원을 수행하여 수정된 프로그램 코드를 출력하는 단계;를 포함하되,
    상기 토큰화하는 단계는
    상기 프로그램 코드에 포함된 어휘소들에 대응하는 토큰들을 생성하되, 상기 토큰들을 상기 프로그램 코드에 대응하는 일정 시퀀스로 표현하는 단계;를 포함하는 것을 특징으로 하는 프로그램 코드의 오류 자동 수정 방법.
  6. 삭제
  7. 제5항에 있어서,
    상기 위치 정보를 기반으로 상기 검출된 오류에 대한 복원 코드 및 오류 복원 위치를 출력하는 단계;를 더 포함하는 것을 특징으로 하는 프로그램 코드의 오류 자동 수정 방법.
  8. 제5항에 있어서,
    상기 오류 자동 수정 시스템에 의해 수정된 프로그램 코드를 저장하는 단계;를 더 포함하는 것을 특징으로 하는 프로그램 코드의 오류 자동 수정 방법.
  9. 저장부에 저장된 프로그램 코드를 획득하는 단계;
    상기 저장부에 저장된 프로그램 코드를 토큰화하는 단계;
    상기 토큰화된 프로그램 코드를 오류 자동 수정 시스템이 읽을 수 있는 숫자 형태의 벡터 데이터로 변환하는 단계;
    상기 토큰화를 통해 생성된 토큰들에 대한 상기 프로그램 코드에서의 위치 정보를 매핑하는 단계;
    상기 변환된 벡터 데이터를 오류 자동 수정 시스템의 입력으로 제공하는 단계;
    상기 오류 자동 수정 시스템이 상기 벡터 데이터를 기반으로 상기 프로그램 코드를 읽고 이해한 후, 상기 프로그램 코드에 포함된 오류를 검출하고, 검출된 오류에 대한 오류 복원을 수행하여 수정된 프로그램 코드를 출력하는 단계;를 포함하는 특징으로 하는 프로그램 코드의 오류 자동 수정 방법.
KR1020200169281A 2020-12-07 2020-12-07 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템 KR102485137B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020200169281A KR102485137B1 (ko) 2020-12-07 2020-12-07 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템
US17/349,548 US11579962B2 (en) 2020-12-07 2021-06-16 Computing system and method for automated program error repair

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200169281A KR102485137B1 (ko) 2020-12-07 2020-12-07 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템

Publications (2)

Publication Number Publication Date
KR20220080311A KR20220080311A (ko) 2022-06-14
KR102485137B1 true KR102485137B1 (ko) 2023-01-06

Family

ID=81850004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200169281A KR102485137B1 (ko) 2020-12-07 2020-12-07 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템

Country Status (2)

Country Link
US (1) US11579962B2 (ko)
KR (1) KR102485137B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230214211A1 (en) * 2022-01-06 2023-07-06 Jpmorgan Chase Bank, N.A. Method and system for codebase modeling
KR102613919B1 (ko) * 2022-11-24 2023-12-13 고려대학교 산학협력단 널 포인터 예외를 수정하기 위한 방법
KR102664797B1 (ko) * 2023-03-15 2024-05-10 고려대학교 산학협력단 동적 타입 언어에서 발생하는 타입에러를 자동 수정하는 장치 및 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150135166A1 (en) * 2013-11-12 2015-05-14 Microsoft Corporation Source code generation, completion, checking, correction

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09185500A (ja) * 1995-12-28 1997-07-15 Nec Corp ソースプログラムの自動修正装置および自動修正方法
US8010843B2 (en) * 2005-12-14 2011-08-30 American Megatrends, Inc. System and method for debugging a target computer using SMBus
GB0810695D0 (en) * 2008-06-12 2008-07-16 Metaforic Ltd Anti-tampering MMU defence
US8954940B2 (en) * 2012-10-12 2015-02-10 International Business Machines Corporation Integrating preprocessor behavior into parsing
US10279470B2 (en) * 2014-06-12 2019-05-07 Play-i, Inc. System and method for facilitating program sharing
US9653185B2 (en) * 2014-10-14 2017-05-16 International Business Machines Corporation Reducing error correction latency in a data storage system having lossy storage media
US9904543B2 (en) * 2015-10-26 2018-02-27 Hewlett-Packard Development Company, L.P. Setting a build indicator to enable or disable a feature
US9946629B2 (en) * 2016-05-24 2018-04-17 International Business Machines Corporation System, method and apparatus for deriving root cause for software test failure
US20180373986A1 (en) * 2017-06-26 2018-12-27 QbitLogic, Inc. Machine learning using dynamic multilayer perceptrons
KR102546424B1 (ko) * 2018-12-11 2023-06-23 한국전자통신연구원 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150135166A1 (en) * 2013-11-12 2015-05-14 Microsoft Corporation Source code generation, completion, checking, correction

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Rahul Gupta 외 3명, "DeepFix: Fixing Common C Language Errors by Deep Learning", Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence, (2017.02.28)*

Also Published As

Publication number Publication date
US11579962B2 (en) 2023-02-14
KR20220080311A (ko) 2022-06-14
US20220179731A1 (en) 2022-06-09

Similar Documents

Publication Publication Date Title
KR102485137B1 (ko) 프로그램 오류 자동 수정 방법 및 이를 지원하는 시스템
US9459848B1 (en) Obtaining correct compile results by absorbing mismatches between data types representations
CN109857641B (zh) 对程序源文件进行缺陷检测的方法及装置
CN111443904B (zh) 一种生成可执行代码的方法及计算机可读存储介质
JP2017517821A (ja) ソフトウェアアーチファクトのデータベースのためのシステム及び方法
US20060200796A1 (en) Program development apparatus, method for developing a program, and a computer program product for executing an application for a program development apparatus
KR102546424B1 (ko) 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
CN116166236A (zh) 代码推荐方法、装置、计算机设备及存储介质
CN115935369A (zh) 使用源代码元素的数值数组表示来评估源代码的方法
JP6651974B2 (ja) 情報処理装置、コンパイル方法及びコンパイラプログラム
CN109359055B (zh) 一种数据测试的方法和设备
CN116595537A (zh) 一种基于多模态特征的生成式智能合约的漏洞检测方法
US8341607B2 (en) Condensing pattern matcher generation for intermediate language patterns
Chazalon et al. Iterative analysis of pages in document collections for efficient user interaction
KR20090011974A (ko) 컴파일 대상 파일 추출 방법
KR20080045545A (ko) 조건부 영역을 전처리하는 방법
KR101585044B1 (ko) 프로그래밍 언어 통합 처리 시스템
JP7045846B2 (ja) プログラミング言語変換支援装置、プログラミング言語変換支援方法、およびプログラム
CN113687833A (zh) 混合编译方法、混合编译系统、编译器及存储介质
KR20220109467A (ko) 요청 대화에서의 오류 정정 및 추출
KR102649150B1 (ko) 다중 오류 프로그램 소스 코드 자동 수정 장치 및 방법
KR102500395B1 (ko) 프로그램 소스코드의 버그를 정정하는 장치 및 방법
CN117149269A (zh) 一种克隆代码检测方法及装置
WO2022233246A1 (en) Methods, devices, and media for two-pass source code transformation
US20230376296A1 (en) Installation script auto-generation to create source code runtime environment

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant