KR102605212B1 - 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈 - Google Patents

동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈 Download PDF

Info

Publication number
KR102605212B1
KR102605212B1 KR1020210141792A KR20210141792A KR102605212B1 KR 102605212 B1 KR102605212 B1 KR 102605212B1 KR 1020210141792 A KR1020210141792 A KR 1020210141792A KR 20210141792 A KR20210141792 A KR 20210141792A KR 102605212 B1 KR102605212 B1 KR 102605212B1
Authority
KR
South Korea
Prior art keywords
patch
patches
final
score
equation
Prior art date
Application number
KR1020210141792A
Other languages
English (en)
Other versions
KR20230057712A (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 KR1020210141792A priority Critical patent/KR102605212B1/ko
Priority to US17/560,031 priority patent/US11822915B2/en
Publication of KR20230057712A publication Critical patent/KR20230057712A/ko
Application granted granted Critical
Publication of KR102605212B1 publication Critical patent/KR102605212B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/658Incremental updates; Differential updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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/3628Software debugging of optimised code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 실시 형태에 따른 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법은, 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계; 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함한다.

Description

동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈{METHOD FOR SELECTING THE LAST PATCH FROM AMONG A PLURALITY PATCHES FOR SAME LOCATION AND THE LAST PATCH SELECTION MODULE}
본 발명은 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈에 관한 것으로, 다수의 패들 중 사용자에게 가장 적합한 하나의 패치를 제공할 수 있는 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈에 관한 것이다.
APR(Automatic Program Repair) 시스템은 프로그램에 존재할 수 있는 버그에 대해 수정 코드를 자동으로 생성하는 시스템이다.
APR 시스템은 다수의 수정 코드를 생성하여 출력하는데, 이를 다수의 패치 코드 또는 패치라고 한다.
종래의 APR 시스템은 다수의 패치들을 실제로 사용자에게 모두 보여주고 사용자의 선택을 기다리는데, 이는 효율적이지 않다. 따라서, 다수의 패치들 중 사용자에게 보여주기 위한 목적으로 어떤 패치가 가장 효율적인지를 자동으로 판단 방법이 필요하다.
본 발명은 APR 시스템에 의해 생성된 다수의 후보 패치들 중 가장 효율적인 패치를 자동으로 선택하여 출력하는, 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법을 제공한다.
또한, 다수의 후보 패치들을 평가하여 각 패치별로 점수를 부여하고 점수가 가장 높은 패치만 선별하여 사용자에게 보여줄 수 있는 최종 패치 선택 모듈을 제공한다.
본 발명의 실시 형태에 따른 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법은, 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계; 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함한다.
본 발명의 다른 실시 형태에 따른 최종 패치 선택 모듈은, 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 패치 생성부; 및 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하고, 상기 다수의 패치들 중에서 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 패치 선택부;를 포함한다.
본 발명의 실시 형태에 따른 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈을 사용하면, APR 시스템에 의해 생성된 다수의 후보 패치들 중 가장 효율적인 패치를 자동으로 선택하여 출력할 수 있는 이점이 있다.
또한, 다수의 후보 패치들을 평가하여 각 패치별로 점수를 부여하고 점수가 가장 높은 패치만 선별하여 사용자에게 보여줄 수 있는 이점이 있다.
또한, 최종 패치를 알아서 하나만 선택하게 함으로서 완전 자동화가 가능하고, 여러 개를 선택할 수 있게 하더라도 사용자 친화적인 시스템을 개발하는데 도움이 될 수 있는 이점이 있다.
도 1은 본 발명의 실시 형태에 따른 최종 패치 선택 모듈(100)의 개략적으로 도시한 블록도이다.
도 2는 도 1에 도시된 패치 선택부(150)가 다수의 패치들(#1, #2, #3,..., #n) 중 최종 패치를 선별하는 방법을 설명하기 위한 순서도이다.
이하 첨부한 도면들을 참조하여 본 발명의 실시 형태들을 보다 상세하게 설명한다. 본 발명의 구성요소 중 종래기술에 의하여 통상의 기술자가 명확하게 파악할 수 있고 용이하게 재현할 수 있는 것에 관하여는 본 발명의 요지를 흐리지 않기 위하여 그 구체적인 설명을 생략하도록 한다.
도 1은 본 발명의 실시 형태에 따른 최종 패치 선택 모듈(100)의 개략적으로 도시한 블록도이다.
도 1을 참조하면, 본 발명의 실시 형태에 따른 최종 패치 선택 모듈(100)은 패치 생성부(110)과 패치 선택부(150)을 포함한다.
패치 생성부(110)는 APR 기술을 이용하여 소프트웨어의 동일 위치에 대한 다수의 패치들(#1, #2, #3,..., #n)을 자동으로 생성하여 출력한다.
패치 선택부(150)는 패치 생성부(110)로부터 출력된 다수의 패치들(#1, #2, #3,..., #n)을 수신하고, 수신된 다수의 패치들(#1, #2, #3,..., #n) 중 가장 적합한 최종 패치를 선별하고, 선별된 최종 패치를 출력한다.
패치 선택부(150)가 다수의 패치들(#1, #2, #3,..., #n) 중 최종 패치를 선별하는 기준은, 코드 변화율, 코드 복잡도 및 문맥 유사도를 포함한다.
코드 변화율은 기존 코드가 수정된 경우가 가장 높은 점수를 부여받는다. 코드가 삭제되거나 추가되면 그 양에 반비례하여 점수가 낮아진다. 여기서, 점수범위는 0 내지 100일 수 있다. 점수는 소프트웨어 특성에 맞게 수정될 수 있다.
코드 복잡도는 추가되거나 수정된 코드가 논리식을 포함하는 경우에 더 복잡한 코드로 판단하여 점수를 낮게 평가한다. 여기서, 점수범위는 0 내지 100일 수 있다. 점수는 소프트웨어 특성에 맞게 수정될 수 있다.
문맥 유사도는 패치된 코드가 기존 문맥(구조적, 코드 모양)과 얼마나 유사한지를 평가하여 유사성이 높을 경우에 높은 점수를 부여한다. 여기서, 점수범위는 0 내지 100일 수 있다. 점수는 소프트웨어 특성에 맞게 수정될 수 있다.
이하, 도 2를 참조하여 패치 선택부(150)가 다수의 패치들(#1, #2, #3,..., #n) 중 최종 패치를 선별하는 방법을 상세히 설명한다.
도 2는 도 1에 도시된 패치 선택부(150)가 다수의 패치들(#1, #2, #3,..., #n) 중 최종 패치를 선별하는 방법을 설명하기 위한 순서도이다.
도 2를 참조하면, 도 1의 패치 선택부(150)가 다수의 패치들(#1, #2, #3,..., #n) 중 최종 패치를 선별하는 방법은, 각 패치 별로 최종 점수를 계산하는 단계(S200) 및 다수의 패치들 중 최종 점수가 가장 큰 패치를 출력하는 단계(S400)를 포함한다.
각 패치 별로 최종 점수를 계산하는 단계(S200)는, 각 패치(#1, #2, #3,..., #n) 별로 코드 변화율을 계산하는 단계(S210), 코드 복잡도를 계산하는 단계(S230), 문맥 유사도를 계산하는 단계(S250) 및 최종 점수를 계산하는 단계(S270)를 포함할 수 있다.
코드 변화율을 계산하는 단계(S210)는 해당 패치의 코드 변화율을 계산하는 단계이다. 패치의 각 라인은 삭제, 추가, 수정 여부가 표시된다. 각 항목에 대해 다음의 <수학식 1>과 같이, 0점에서부터 100점 구간으로 점수화할 수 있다.
위 <수학식 1>과 관련하여, 몇 가지 예를 들면,
예1) 전체 변경 5라인 중 5라인이 삭제된 경우: 0점
예2) 전체 변경 5라인 중 2라인이 삭제되고 3라인이 수정된 경우: 60점
예3) 전체 변경 5라인 중 5라인이 수정된 경우: 100점
코드 복잡도를 계산하는 단계(S230)는 추가되거나 수정한 코드에 대해서만 계산한다. 코드 복잡도는 패치 파일 분산 점수, 수정 간 분산 점수 및 논리 복잡도에 기초하여 계산될 수 있다. 이하, 패치 파일 분산 점수, 수정 간 분산 점수 및 논리 복잡도를 계산하는 방법을 상세히 설명한다.
먼저, '패치 파일 분산 점수'를 계산하는 방법을 설명한다.
버그 유형에 따라 따라 다수의 파일이 패치되어야 하는 경우가 있다. 많은 파일이 변경되는 것은 패치 검토 입장에서 부담되므로, 다음의 <수학식 2>와 같이, 파일이 많을수록 더 적은 점수를 부여받도록 조정할 수 있다.
다음으로, '수정 간 분산 점수'를 계산하는 방법을 설명한다.
수정 간 분산 점수는, 하나의 파일에 대해 수정 지점들이 얼마나 분산되어 있는지를 평가한다. 좋은 패치는 특정 문제 해결을 위해 고립되는 경우가 많으므로, 분산 값이 너무 높다면 낮은 점수를 부여한다. 수정 간 분산 점수를 계산하는 식은 아래의 <수학식 3>과 같다.
위 <수학식 3>에서, 현재 패치의 분산값은, 현재 패치가 수정한 각 파일들 별로 변경에 대한 분산 값('파일 내 변경에 대한 분산'이라 함)을 계산하고, 이들의 평균 값을 계산하면 얻을 수 있다. 예를 들어, 현재 패치가 파일 3개를 수정한 경우, 3개의 파일 별로 수정된 코드가 얼마나 분산되어 있는지를 평가(파일 내 변경에 대한 분산)한 후, 이들을 평균한 값이 현재 패치의 분산값이 된다.
상기 '파일 내 변경에 대한 분산 값'은, 아래 <수학식 4>와 같이, 각 변경 파일 내의 변경 위치에 대한 분산 값의 평균이다.
위 <수학식 4>에서, N은 파일 하나의 모든 수정 위치 개수, n은 파일 하나의 모든 수정 위치 개수(N과 동일, 시그마에서 메타심볼 N 대신 사용), xi는 현재 파일의 i번째 수정 라인 위치, m은 현재 파일의 수정 라인 평균 위치, fi는 가중치 효과를 위한 보조식(일반적으로 상수 1)이다.
위 <수학식 3>에서, 수정 간 분산 점수를 0점에서부터 100점 사이로 점수화하기 위해서는 최대 분산값을 알아야 한다. 따라서, 다른 패치들의 분산 값을 모두 구한 후 계산한다.
다음으로, '논리 복잡도'를 계산하는 방법을 설명한다.
패치에 프로그램의 조건식(if 문, while문등에 포함된 조건, 또는 논리 계산식에 포함된 조건)이 많으면, 더 구체적인 패치를 만들었다는 의미가 있지만, 한편으로는 읽고 이해하기 어렵다는 의미도 있다. 조건의 개수를 경계지어 많은 조건이 포함된 경우 더 낮은 점수를 부여한다.
구체적으로, 논리 복잡도의 점수는 다음의 1) 내지 4)에 의해 결정될 수 있다.
1) 논리연산자 개수와 조건문 개수의 합이 3개 미만이면 100점
2) 논리연산자 개수와 조건문 개수의 합이 5개 미만이면 50점
3) 논리연산자 개수와 조건문 개수의 합이 7개 미만이면 25점
4) 그외는 0점
'최종 코드 복잡도'는, 앞서 계산된 분산 점수들과 논리 복잡도를 기초로 계산될 수 있다. 구체적으로, 최종 코드 복잡도는 다음의 <수학식 5>를 이용하여 계산될 수 있다.
문맥 유사도를 계산하는 단계(S250)는 수정되기 전 코드와 패치가 적용된 후의 그래프 유사도를 기반하여 다음과 같이 계산할 수 있다.
코드의 구조가 많이 변경되었다는 것은, 원래 코드의 제어흐름과 많이 달라졌음을 의미하며, 보통의 패치는 기존 코드 구조를 유지한채로 진행되는 경우가 많다. 따라서 유사하지 않으면 낮은 점수를 부여한다.
문맥 유사도는 다음의 <수학식 6>에 의해 계산될 수 있다.
위 <수학식 6>에서, 그래프유사도는 보통 0.0에서 1.0 사이의 값으로 정규화된 값을 갖는다. 1.0은 동일함을 의미하고, 0.0은 완전히 다름을 의미한다.
그래프유사도는 다양한 방법들이 제안되고 있으며, 본 발명의 실시 형태에서는 다음의 학술 논문에 개시된 것을 이용하였다.
Nikolic, M. (2010). Measuring Similarity of Graphs and their Nodes by Neighbor Matching. ArXiv, abs/1009.5290.
상기 학술 논문에 개시된 그래프유사도 측정 방법을 간단하게 설명하면 다음과 같다.
<위 수학식 7>에서, i는 Graph1의 노드를 의미하고, j는 Graph2의 노드를 의미한다. i, j가 유사하다는 것은 i의 이웃노드가 j의 이웃노드와 비슷함을 의미한다. 따라서, 이웃노드 유사도 Sin과 Sout을 평균내어 그래프의 각 지점의 유사도를 구한다.
Sin과 Sout은 인점 노드들의 유사도를 모두 더해가면서 계산한다.
최종 점수를 계산하는 단계(S270)는 S210에서 계산된 코드 변화율, S230에서 계산된 코드 복잡도 및 S250에서 계산된 문맥 유사도 값에 기초하여 계산한다. 구체적으로는 다음의 <수학식 9>와 같이, 코드 변화율, 코드 복잡도 및 문맥 유사도 각각에 소정의 가중치를 곱한 후 모두를 더한 점수가 최종 점수가 될 수 있다.
위 <수학식 9>에서, 가중치1, 가중치2, 및 가중치3은 백분율로 사전에 미리 사용자에 의해 정의된 값일 수 있다. 여기서, 가중치1, 가중치2, 및 가중치3은 최종 점수의 목적에 따라 다르게 설정될 수 있다.
예를 들어, 최종 점수의 목적이 가장 적은 변화 우선 점수인 경우, 가중치1은 0.6이고, 가중치2는 0.2이고, 가중치3은 0.2일 수 있다. 또는, 최종 점수의 목적이 단순 논리 우선 점수인 경우, 가중치1은 0.2이고, 가중치2는 0.6이고, 가중치3은 0.2일 수 있다. 또는, 최종 점수의 목적이 조화 점수인 경우, 가중치1은 0.33이고, 가중치2는 0.33이고, 가중치3은 0.33일 수 있다.
앞서 상술한 S200 단계를 통해 각 패치 별로 최종 점수를 도 1의 패치 선택부(150)가 계산하면, 상기 패치 선택부(150)는 각 패치 별 점수 중 가장 큰 최종 점수를 갖는 패치를 최종 패치로 선택하고, 선택된 최종 패치를 출력한다.
한편, 본 발명의 일 실시 형태에 따른 동일한 위치에 대한 후보 패치들 중 최종 패치를 선택하는 패치 선택 방법은, 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독가능 기록매체를 통하여 실시될 수 있다. 상기 컴퓨터 판독가능 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 기록매체는 실시 형태를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크와 같은 자기-광 매체 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 실시 형태들에 설명된 특징, 구조, 효과 등은 본 발명의 적어도 하나의 실시 형태에 포함되며, 반드시 하나의 실시 형태에만 한정되는 것은 아니다. 나아가, 각 실시 형태에서 예시된 특징, 구조, 효과 등은 실시 형태들이 속하는 분야의 통상의 지식을 가지는 자에 의해 다른 실시 형태들에 대해서도 조합 또는 변형되어 실시 가능하다. 따라서 이러한 조합과 변형에 관계된 내용들은 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
또한, 이상에서 실시 형태를 중심으로 설명하였으나 이는 단지 예시일 뿐 본 발명을 한정하는 것이 아니며, 본 발명이 속하는 분야의 통상의 지식을 가진 자라면 본 실시 형태의 본질적인 특성을 벗어나지 않는 범위에서 이상에 예시되지 않은 여러 가지의 변형과 응용이 가능함을 알 수 있을 것이다. 즉, 실시 형태에 구체적으로 나타난 각 구성 요소는 변형하여 실시할 수 있는 것이다. 그리고 이러한 변형과 응용에 관계된 차이점들은 첨부된 청구 범위에서 규정하는 본 발명의 범위에 포함되는 것으로 해석되어야 할 것이다.
100: 패치 선택 모듈
110: 패치 생성부
150: 패치 선택부

Claims (15)

  1. 패치 생성부가 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계;
    패치 선택부가 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및
    상기 패치 선택부가 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함하고,
    상기 코드 변화율은, 하기의 <수학식>에 의해 기초하여 점수화되는, 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법.
    <수학식>
  2. 삭제
  3. 삭제
  4. 패치 생성부가 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계;
    패치 선택부가 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및
    상기 패치 선택부가 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함하고,
    상기 코드 복잡도는, 패치 파일 분산 점수, 수정 간 분산 점수 및 논리 복잡도에 기초하여 점수화되고,
    상기 코드 복잡도는 하기의 <수학식>에 의해 기초하여 점수화되는, 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법.
    <수학식>
  5. 패치 생성부가 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계;
    패치 선택부가 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및
    상기 패치 선택부가 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함하고,
    상기 코드 복잡도는, 패치 파일 분산 점수, 수정 간 분산 점수 및 논리 복잡도에 기초하여 점수화되고,
    상기 패치 파일 분산 점수는 하기의 <수학식 1>에 기초하여 계산되고,
    상기 수정 간 분산 점수는 하기의 <수학식 2>에 기초하여 계산되고,
    상기 논리 복잡도는 하기의 <수학식 3>에 기초하여 계산되는, 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법.
    <수학식 1>

    <수학식 2>

    <수학식 3>
    논리연산자 개수와 조건문 개수의 합이 3개 미만 = 100점
    논리연산자 개수와 조건문 개수의 합이 5개 미만 = 50점
    논리연산자 개수와 조건문 개수의 합이 7개 미만 = 25점
    그외 = 0점
  6. 패치 생성부가 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계;
    패치 선택부가 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및
    상기 패치 선택부가 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함하고,
    상기 문맥 유사도는, 하기의 <수학식>에 의해 기초하여 점수화되는, 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법.
    <수학식>
  7. 패치 생성부가 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 단계;
    패치 선택부가 상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하는 단계; 및
    상기 패치 선택부가 상기 다수의 패치들 중에서, 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 단계;를 포함하고,
    상기 다수의 패치들 별 상기 최종 점수는, 하기의 <수학식>에 의해 기초하여 점수화되는, 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법.
    <수학식>
  8. 제 1 항, 제 4 항 내지 제 7 항 중 어느 한 항의 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법을 수행하기 위한, 컴퓨터 프로그램이 기록된 컴퓨터로 판독 가능한 기록 매체.
  9. 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 패치 생성부; 및
    상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하고, 상기 다수의 패치들 중에서 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 패치 선택부;를 포함하고,
    상기 패치 선택부는 상기 코드 변화율을 하기의 <수학식>에 의해 기초하여 점수화하는, 최종 패치 선택 모듈.
    <수학식>
  10. 삭제
  11. 삭제
  12. 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 패치 생성부; 및
    상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하고, 상기 다수의 패치들 중에서 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 패치 선택부;를 포함하고,
    상기 패치 선택부는 상기 코드 복잡도를 패치 파일 분산 점수, 수정 간 분산 점수 및 논리 복잡도에 기초하여 점수화하고,
    상기 패치 선택부는 상기 코드 복잡도를 하기의 <수학식>에 의해 기초하여 점수화하는, 최종 패치 선택 모듈.
    <수학식>
  13. 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 패치 생성부; 및
    상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하고, 상기 다수의 패치들 중에서 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 패치 선택부;를 포함하고,
    상기 패치 선택부는 상기 코드 복잡도를 패치 파일 분산 점수, 수정 간 분산 점수 및 논리 복잡도에 기초하여 점수화하고,
    상기 패치 선택부는,
    상기 패치 파일 분산 점수를 하기의 <수학식 1>에 기초하여 계산하고,
    상기 수정 간 분산 점수를 하기의 <수학식 2>에 기초하여 계산하고,
    상기 논리 복잡도를 하기의 <수학식 3>에 기초하여 계산하는, 최종 패치 선택 모듈.
    <수학식 1>

    <수학식 2>

    <수학식 3>
    논리연산자 개수와 조건문 개수의 합이 3개 미만 = 100점
    논리연산자 개수와 조건문 개수의 합이 5개 미만 = 50점
    논리연산자 개수와 조건문 개수의 합이 7개 미만 = 25점
    그외 = 0점
  14. 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 패치 생성부; 및
    상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하고, 상기 다수의 패치들 중에서 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 패치 선택부;를 포함하고,
    상기 패치 선택부는 상기 문맥 유사도를 하기의 <수학식>에 의해 기초하여 점수화하는, 최종 패치 선택 모듈.
    <수학식>
  15. 프로그램 내의 동일 위치에 대한 다수의 패치들을 생성하는 패치 생성부; 및
    상기 다수의 패치들 별로 코드 변화율, 코드 복잡도 및 문맥 유사도에 기초하여 최종 점수를 계산하고, 상기 다수의 패치들 중에서 가장 큰 최종 점수를 갖는 패치를 최종 패치로서 출력하는 패치 선택부;를 포함하고,
    상기 패치 선택부는 상기 다수의 패치들 별 상기 최종 점수를 하기의 <수학식>에 의해 기초하여 점수화하는, 최종 패치 선택 모듈.
    <수학식>
KR1020210141792A 2021-10-22 2021-10-22 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈 KR102605212B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020210141792A KR102605212B1 (ko) 2021-10-22 2021-10-22 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈
US17/560,031 US11822915B2 (en) 2021-10-22 2021-12-22 Method for selecting the last patch from among a plurality patches for same location and the last patch selection module

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210141792A KR102605212B1 (ko) 2021-10-22 2021-10-22 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈

Publications (2)

Publication Number Publication Date
KR20230057712A KR20230057712A (ko) 2023-05-02
KR102605212B1 true KR102605212B1 (ko) 2023-11-24

Family

ID=86057081

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210141792A KR102605212B1 (ko) 2021-10-22 2021-10-22 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈

Country Status (2)

Country Link
US (1) US11822915B2 (ko)
KR (1) KR102605212B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017151977A (ja) * 2016-02-23 2017-08-31 富士通株式会社 ソフトウエアプログラムの修復のための方法及びプログラム
JP2020126603A (ja) * 2019-02-05 2020-08-20 富士通株式会社 自動候補修正パッチ生成
JP2021034007A (ja) * 2019-08-23 2021-03-01 富士通株式会社 ソフトウェアパッチの自動検索及び識別

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8954367B2 (en) * 2007-08-23 2015-02-10 Dside Technologies, Llc System, method and computer program product for interfacing software engines
US10552302B2 (en) * 2014-07-03 2020-02-04 Opshub, Inc. System and method for analyzing risks present in a software program code
US10043009B2 (en) * 2014-09-24 2018-08-07 Intel Corporation Technologies for software basic block similarity analysis
US9965633B2 (en) * 2015-12-29 2018-05-08 Sap Se Using code similarities for improving auditing and fixing of SAST-discovered code vulnerabilities
US11257574B1 (en) * 2017-03-21 2022-02-22 OM1, lnc. Information system providing explanation of models
KR102114238B1 (ko) * 2018-10-11 2020-05-22 전석기 패치 환경을 이용한 멀웨어 판단 방법 및 시스템
US10754637B1 (en) * 2019-01-28 2020-08-25 International Business Machines Corporation Patch management in a hybrid computing environment
US11080179B2 (en) * 2019-04-24 2021-08-03 United States Of America As Represented By The Secretary Of The Navy Device, system, and method for automatically detecting and repairing a bug in a computer program using a genetic algorithm
US11048500B2 (en) * 2019-07-10 2021-06-29 International Business Machines Corporation User competency based change control
US11119751B2 (en) * 2019-07-16 2021-09-14 International Business Machines Corporation Self-learning optimized patch orchestration
CN110442517A (zh) * 2019-07-18 2019-11-12 暨南大学 一种自动程序修复中获取安全补丁的方法
US11113185B2 (en) * 2019-11-11 2021-09-07 Adobe Inc. Automated code testing for code deployment pipeline based on risk determination
US11093229B2 (en) * 2020-01-22 2021-08-17 International Business Machines Corporation Deployment scheduling using failure rate prediction
US11599980B2 (en) * 2020-02-05 2023-03-07 Google Llc Image transformation using interpretable transformation parameters
US11526424B2 (en) * 2020-05-15 2022-12-13 Microsoft Technology Licensing Llc. Automated program repair tool
US11366901B2 (en) * 2020-10-07 2022-06-21 Bank Of America Corporation System and method for identifying insider threats in source code
US20220148001A1 (en) * 2020-11-06 2022-05-12 Capital One Services, Llc Patching security vulnerabilities using machine learning
US11436001B2 (en) * 2020-11-24 2022-09-06 Red Hat, Inc. Mitigating software-update risks for end users
US20210182031A1 (en) * 2020-12-23 2021-06-17 Intel Corporation Methods and apparatus for automatic detection of software bugs
CN112685320B (zh) * 2021-01-09 2023-04-25 北京信息科技大学 一种基于多候选程序的软件缺陷修复方法及装置
US11847446B2 (en) * 2021-03-18 2023-12-19 Dell Products, L.P. Predictive build quality assessment
US12001836B2 (en) * 2021-08-02 2024-06-04 Wipro Limited Method and system for performing dynamic patch management in a virtual desktop infrastructure (VDI) platform
CN114897738A (zh) * 2022-05-25 2022-08-12 中国石油大学(华东) 一种基于语义不一致性检测的图像盲修复方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017151977A (ja) * 2016-02-23 2017-08-31 富士通株式会社 ソフトウエアプログラムの修復のための方法及びプログラム
JP2020126603A (ja) * 2019-02-05 2020-08-20 富士通株式会社 自動候補修正パッチ生成
JP2021034007A (ja) * 2019-08-23 2021-03-01 富士通株式会社 ソフトウェアパッチの自動検索及び識別

Also Published As

Publication number Publication date
US20230130772A1 (en) 2023-04-27
US11822915B2 (en) 2023-11-21
KR20230057712A (ko) 2023-05-02

Similar Documents

Publication Publication Date Title
US11475099B2 (en) Optimization apparatus and method for controlling thereof
US20160358068A1 (en) Reducing computations in a neural network
JP2018092614A (ja) データベースのための畳み込みニューラルネットワークモデルの決定装置及び決定方法
US8302041B1 (en) Implementation flow for electronic circuit designs using choice networks
US11487972B2 (en) Reward function generation method and computer system
JP2020046883A (ja) 分類装置、分類方法およびプログラム
US20210312309A1 (en) Abduction apparatus, abduction method, and computer-readable recording medium
US20220171828A1 (en) Selection of pauli strings for variational quantum eigensolver
US20110173145A1 (en) Classification of a document according to a weighted search tree created by genetic algorithms
US9053041B2 (en) System, method, and computer program product for performing graph coloring
KR102605212B1 (ko) 동일 위치에 대한 다수의 패치들 중 최종 패치를 선택하는 방법 및 최종 패치 선택 모듈
JP2009151371A (ja) 画像処理装置、画像処理方法およびプログラム
US20220027739A1 (en) Search space exploration for deep learning
JP7068242B2 (ja) 学習装置、学習方法およびプログラム
CN116663491A (zh) 基于bdd求解功能覆盖组条件约束语句的方法、设备和介质
JP2018120465A (ja) 関係分析装置および関係分析プログラム
US20140068339A1 (en) Systems and Methods for State Based Test Case Generation for Software Validation
US10103971B2 (en) Route search apparatus and route search method
US11886977B2 (en) Computing apparatus, computing method, storage medium, and table generating apparatus
US6654712B1 (en) Method to reduce skew in clock signal distribution using balanced wire widths
CN110457543B (zh) 一种基于端到端多视角匹配的实体消解方法和系统
JP5509952B2 (ja) シミュレーション方法、シミュレーション装置、プログラム、及び記憶媒体
US9123008B2 (en) Buildable part pairs in an unconfigured product structure
US11934970B2 (en) Abduction apparatus, abduction method, and computer-readable recording medium
US20230237036A1 (en) Data modification method and information processing apparatus

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