KR101984294B1 - 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법 - Google Patents

동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법 Download PDF

Info

Publication number
KR101984294B1
KR101984294B1 KR1020170174842A KR20170174842A KR101984294B1 KR 101984294 B1 KR101984294 B1 KR 101984294B1 KR 1020170174842 A KR1020170174842 A KR 1020170174842A KR 20170174842 A KR20170174842 A KR 20170174842A KR 101984294 B1 KR101984294 B1 KR 101984294B1
Authority
KR
South Korea
Prior art keywords
source code
analysis
error
analysis target
format
Prior art date
Application number
KR1020170174842A
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 KR1020170174842A priority Critical patent/KR101984294B1/ko
Application granted granted Critical
Publication of KR101984294B1 publication Critical patent/KR101984294B1/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/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Landscapes

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

Abstract

본 발명의 실시예에 따른 소스 코드 분석을 위한 분석 시스템은, 프로그래밍 언어 기반으로 실행 가능한 프로그램의 분석 대상 소스 코드를 입력 받는 입력부, 상기 분석 대상 소스 코드를 분석하기 위해 미리 저장된 프로그램의 소스 코드와 관련된 복수의 포맷들과 상기 각 포맷들에 대응하는 분석을 위한 적어도 하나의 옵션들을 고려하여, 상기 분석 대상 소스 코드와 기 저장된 분석 기준 소스 코드를 비교하여 일치 여부를 판단하거나 상기 분석 대상 소스 코드의 오류 발생 여부 및 오류 유형을 판단하는 판단부 및 상기 일치 여부에 대한 판단 결과 또는 상기 오류 발생 여부 및 오류 유형에 대한 판단 결과를 제공하는 결과 제공부를 포함할 수 있다.

Description

동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법 {System and method for analyzing source code based on dynamic analysis}
본 발명은 소스 코드 분석을 위한 분석 시스템 및 방법에 관한 것이고, 보다 상세하게는 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법에 관한 것이다.
최근 전 세계적으로 소프트웨어 교육이 화두가 되고 있으며, 소프트웨어 교육의 필요성은 국내에서도 끊임없이 대두되고 있다. 소프트웨어 교육을 위한 대표적인 방법으로 과제를 통한 학습이 있는데, 과제를 통한 학습이 효율적이기 위해서는 학습자가 제출한 프로그래밍 과제에 대해 교수자의 빠른 피드백을 필요로 한다. 그러나 현재 프로그래밍 과제의 채점 작업은 대부분 수작업으로 행해지고 있어 학습자에게 피드백을 주는데 오랜 시간이 소요된다.
일반적으로 테스팅 기법으로는 프로그램을 실행시키지 않고 분기문, 제어문의 위치 및 횟수를 판단하는 정적 테스팅 기법과 프로그램을 실행시켜 함수의 출력 값과 예상 결과 값을 비교하는 동적 테스팅 기법이 있다. 그러나 정적 테스팅 기반 채점 방식은 프로그램을 실행시키지 않고 채점을 하는 방식이므로 프로그램이 정상적으로 작동하는지에 대한 검증을 할 수가 없다.
이러한 문제점을 해결한 방식은 동적 테스팅 기법인데, 이를 사용한 자동 채점 시스템으로 Online judge가 있다. 하지만, Online judge는 오류의 여부만 확인 될 뿐 오류의 종류가 무엇인지는 확인할 수 없으며, 테스트할 함수 하나만을 테스트하기 때문에 내부 함수 호출을 테스트 할 수 없다는 단점이 있다.
PAGS(Programming Assignment Grading System)는 웹 기반의 동적 테스팅 방식으로 성능 평가, 스타일 평가가 가능하지만, 문자열 비교 방식으로 테스트하기 때문에 구분 문자(공백, 콤마, 탭 등의 경계기호 사용 개수)의 사용 불일치와 불필요한 문자 출력 등에 민감하게 반응하여 유사도가 낮아지는 문제를 가지고 있어 교수자의 수작업을 필요로 한다는 점이 단점이다.
한국 등록 특허 제10-1563494호 (등록)
상기 전술한 바와 같은 종래의 문제점을 해결하기 위해, 본 발명의 분석 시스템을 제공함으로써 다양한 환경에서 작성되는 소스 코드에 따른 다양한 과제 요구 사항과 언어의 특징에 맞게 테스트를 하기 위해 시스템 내에 프레임워크를 구현하여 필요한 기능들을 선택적으로 사용할 수 있도록 하는 것을 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 소스 코드 분석을 위한 분석 시스템은 프로그래밍 언어 기반으로 실행 가능한 프로그램의 분석 대상 소스 코드를 입력 받는 입력부, 상기 분석 대상 소스 코드를 분석하기 위해 미리 저장된 프로그램의 소스 코드와 관련된 복수의 포맷들과 상기 각 포맷들에 대응하는 분석을 위한 적어도 하나의 옵션들을 고려하여, 상기 분석 대상 소스 코드와 기 저장된 분석 기준 소스 코드를 비교하여 일치 여부를 판단하거나 상기 분석 대상 소스 코드의 오류 발생 여부 및 오류 유형을 판단하는 판단부 및 상기 일치 여부에 대한 판단 결과 또는 상기 오류 발생 여부 및 오류 유형에 대한 판단 결과를 제공하는 결과 제공부를 포함할 수 있다.
또한, 상기 판단부는, 상기 분석 대상 소스 코드의 오류 발생 여부를 판단하는 오류 발생 여부 판단부를 더 포함할 수 있고, 상기 오류 발생 여부 판단부는 상기 분석 대상 소스 코드가 오류를 발생하는 것으로 판단하면, 상기 발생된 오류의 유형을 검출할 수 있다.
또한, 상기 오류 발생 여부 판단부는, 상기 분석 대상 소스 코드 내 적어도 하나의 함수에 상기 오류 유형 검출을 위한 검출함수를 삽입하는 검출함수 삽입부, 상기 검출함수가 삽입됨에 따라 상기 적어도 하나의 함수의 출력값을 수집하는 출력값 수집부 및 상기 수집된 출력값에 따라 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출하는 오류 유형 검출부를 포함할 수 있다.
또한, 상기 오류 유형 검출부는, 상기 분석 시스템에 미리 저장된 적어도 하나의 오류 유형들을 고려하여 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출할 수 있다.
또한, 상기 판단부는, 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 동형 관계를 비교하거나 상기 분석 대상 소스 코드를 구성하는 함수의 출력 결과 값과 상기 분석 기준 소스 코드의 출력 결과 값을 비교하여 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 일치 여부를 판단하는 일치 여부 판단부를 더 포함할 수 있다.
또한, 상기 일치 여부 판단부는 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 동형 관계를 비교하는 동형 관계 비교부를 더 포함할 수 있고, 상기 동형 관계 비교부는 상기 분석 대상 소스 코드를 구성하는 적어도 하나의 함수 및 데이터 각각을 연결하는 노드와 함께 1차원 또는 2차원으로 배열하고, 상기 배열된 노드를 이용하여 상기 동형 관계를 비교할 수 있다.
또한, 상기 분석 대상 소스 코드가 작성된 포맷과 상기 분석 시스템의 포맷을 비교하여, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 포맷을 변환하는 포맷 변환부를 더 포함할 수 있다.
또한, 상기 포맷 변환부는, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 인코딩을 유니코드를 위한 가변 길이 문자 인코딩으로 변환하는 인코딩 변환부, 상기 분석 대상 소스 코드의 함수를 상기 분석 시스템에 호환 가능한 함수로 변환하는 함수 변환부 및 상기 분석 대상 소스 코드에 포함된 에러 문자를 제거하는 에러 문자 제거부를 더 포함할 수 있다.
본 발명의 또 다른 실시예에 따른 소스 코드를 분석하는 분석 방법은, 프로그래밍 언어 기반으로 실행 가능한 프로그램의 분석 대상 소스 코드를 입력 받는 단계, 상기 분석 대상 소스 코드를 분석하기 위해 미리 저장된 프로그램의 소스 코드와 관련된 복수의 포맷들과 상기 각 포맷들에 대응하는 분석을 위한 적어도 하나의 옵션들을 고려하여, 상기 분석 대상 소스 코드와 기 저장된 분석 기준 소스 코드를 비교하여 일치 여부를 판단하거나 상기 분석 대상 소스 코드의 오류 발생 여부 및 오류 유형을 판단하는 단계 및 상기 일치 여부에 대한 판단 결과 또는 상기 오류 발생 여부 및 오류 유형에 대한 판단 결과를 제공하는 단계를 포함할 수 있다.
또한, 상기 판단하는 단계는, 상기 분석 대상 소스 코드의 오류 발생 여부를 판단하는 단계 및 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드를 비교하여 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 일치 여부를 판단하는 단계를 더 포함할 수 있고, 상기 오류 발생 여부 판단 단계는 상기 분석 대상 소스 코드가 오류를 발생하는 것으로 판단하면, 상기 발생된 오류의 유형을 검출할 수 있다.
또한, 상기 오류 발생 여부 판단 단계는, 상기 분석 대상 소스 코드 내 적어도 하나의 함수에 상기 오류 유형 검출을 위한 검출함수를 삽입하는 단계, 상기 검출함수가 삽입됨에 따라 상기 적어도 하나의 함수의 출력값을 수집하는 단계 및 상기 수집된 출력값에 따라 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출하는 단계를 포함할 수 있다.
또한, 상기 오류 유형 검출 단계는, 미리 저장된 적어도 하나의 오류 유형들을 고려하여 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출할 수 있다.
또한, 상기 일치 여부 판단 단계는 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 동형 관계를 비교하는 단계를 더 포함할 수 있고, 상기 동형 관계 비교 단계는 상기 분석 대상 소스 코드를 구성하는 적어도 하나의 함수 및 데이터 각각을 연결하는 노드와 함께 1차원 또는 2차원으로 배열하고, 상기 배열된 노드를 이용하여 상기 동형 관계를 비교할 수 있다.
또한, 상기 분석 대상 소스 코드가 작성된 포맷과 상기 분석 시스템의 포맷을 비교하여, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 포맷을 변환하는 단계를 더 포함할 수 있고, 상기 포맷 변환 단계는, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 인코딩을 유니코드를 위한 가변 길이 문자 인코딩으로 변환하는 단계, 상기 분석 대상 소스 코드의 함수를 상기 분석 시스템에 호환 가능한 함수로 변환하는 단계 및 상기 분석 대상 소스 코드에 포함된 에러 문자를 제거하는 단계를 더 포함할 수 있다.
또한, 본 발명의 또 다른 목적을 달성하기 위하여 본 발명의 소스 코드를 분석하는 분석 방법이 컴퓨터에서 실행시키기 위한 컴퓨터 판독 가능 매체에 저장된 컴퓨터 프로그램을 제공할 수 있다.
본 발명의 따른 분석 시스템은 동적 테스팅 기반으로 프로그램의 콘솔 및 함수 출력 결과를 비교하는 테스트가 가능할 뿐만 아니라, 유닛 테스팅 기법을 활용하여 프로그램을 구성하는 각각의 함수에 대해 세부적인 채점도 가능하다.
또한, 본 발명의 분석 시스템은 프레임 워크 구조로 작성되어 있어 다양한 요구 사항과 과제에 맞게 채점할 수 있도록 여러 보조 기능을 제공한다.
도1은 본 발명의 일 실시예에 따른 소스 코드 분석 시스템(10)의 구성을 개략적으로 도시한 블록도이다.
도2는 본 발명의 일 실시예에 따른 프로세서(12)의 구성을 개략적으로 도시한 블록도이다.
도3은 본 발명의 일 실시예에 따른 판단부(300)의 구성을 개략적으로 도시한 도면이다.
도4 내지 도6은 본 발명의 일 실시예에 따른 판단부의 세부 구성을 예시하여 도시한 도면이다.
도7은 본 발명의 일 실시예에 따른 분석 방법을 시간의 흐름에 따라 도시한 흐름도이다.
도8은 본 발명의 일 실시예에 따른 분석 수행 단계를 보다 상세하게 도시한 흐름도이다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 첨부 도면에 기재된 내용을 참조하여야만 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 그러나, 본 발명은 여러 가지 상이한 형태로 구현될
수 있으며, 설명하는 실시예에 한정되는 것이 아니다. 그리고, 본 발명을 명확하게 설명하기 위하여 설명과 관계 없는 부분은 생략되며, 도면의 동일한 참조부호는 동일한 부재임을 나타낸다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "...부", "...기", "모듈", "블록"등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로구현될 수 있다.
이하, 본 발명의 일 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략할 수 있다.
이하에서는 본 발명의 실시예에 따른 소스 코드를 분석하는 분석 시스템(10) 및 방법의 구성을 관련된 도면을 참조하여 상세히 설명한다.
본 발명의 실시예에 따른 소스 코드 분석 시스템은 교수자가 등록하는 과제 및 테스트 케이스에 따라 학습자가 해당하는 과제를 입력함으로써, 입력된 과제를 분석함에 따라 평가 및 채점하는 것에 관한 것이다. 여기서, 상기 테스트 케이스는 교수자가 설정한 소스 코드에 해당하는 환경 포맷을 말하고, 상기 학습자가 입력하는 과제는 소스 코드이므로, 이하에서는 상기 테스트 케이스를 포맷이라 하고, 입력되는 상기 과제는 분석하고자 하는 분석 대상 소스 코드라하여 후술하도록 한다.
도1은 본 발명의 일 실시예에 따른 소스 코드 분석 시스템(10)의 구성을 개략적으로 도시한 블록도이다. 본 발명에 따른 소스 코드 분석 시스템(10)은 웹 서버(11)와 프로세서(12)를 포함하여 구성될 수 있고, 보다 상세하게 설명하면, 본 발명의 소스 코드 분석 시스템은 서버(11)를 통해 분석 대상이 되는 소스 코드와 분석 기준이 되는 소스 코드가 입력되면, 프로세서(12)가 상기 서버에 입력된 분석 대상 소스 코드 및 분석 기준 소스 코드를 전달받아 분석 대상 소스 코드를 분석한다. 일 실시예에 따른 본 발명의 소스 코드는 C/C++ 프로그래밍 언어를 기반의 소스 코드일 수 있다. 본 발명의 일 예로서, 상기 프로세서(120)는 웹 서버(11)로부터 입력되는 분석 대상 소스 코드를 기 등록된 기준 소스 코드 및 포맷을 기반으로 분석 및 평가하는 소스 코드 분석 장치로서 구현될 수 있다. 이하에서는 상기 프로세서를 소스 코드 분석 장치라 하여 설명하도록 한다.
도2는 본 발명의 일 실시예에 따른 소스 코드 분석 장치(12)의 구성을 개략적으로 도시한 블록도이고, 도3은 본 발명의 일 실시예에 따른 판단부(300)의 구성을 개략적으로 도시한 도면이며, 도4 내지 도6은 본 발명의 일 실시예에 따른 판단부의 세부 구성을 예시하여 도시한 도면이다.
도2에 도시된 바와 같이, 본 발명의 소스 코드 분석 장치(12)는 포맷 셋업부(100), 입력부(200), 판단부(300) 및 결과 제공부(400)를 포함할 수 있다.
또한, 본 발명의 또 다른 일 실시예에 따른 포맷 셋업부(100)는 분석 대상 소스 코드를 분석하기 위해 미리 저장된 프로그램의 소스 코드와 관련된 복수의 포맷들과 상기 각 포맷들에 대응하는 분석을 위한 적어도 하나의 옵션들을 저장 및 등록할 수 있다.
즉, 본 발명의 일 실시예에 따른 포맷 셋업부(100)는 분석 대상 소스 코드를 분석하기 위해서 분석 대상 소스 코드가 작성될 수 있는 다양한 케이스에 따른 컴퓨팅 환경과 관련된 포맷들을 저장 및 등록할 수 있다. 예컨대, 상기 컴퓨팅 환경과 관련된 포맷은 소스 코드의 에디터, 운영체제 및 컴파일러 등으로 예시될 수 있다.
그리고, 포맷 셋업부(100)는 상기 각 포맷들에 대응하는 옵션들을 저장 및 등록할 수 있는데, 여기서 상기 옵션은 예를 들어 컴퓨팅 환경별 소스 코드 내에 분석할 다양한 유형의 함수 또는 분석할 함수를 분석하기 위해 이용할 함수 등으로 예시될 수 있다. 또한, 포맷 셋업부(100)는 미리 결정된 각 포맷별 분석에서 필요한 데이터(예를 들어, 객체 및 함수 등)을 포함할 수 있다.
이와 같이 포맷 셋업부(100)에 저장 및 등록되어 있는 다양한 케이스에 따른 복수의 포맷들 및 옵션들은 여러 학습자들에 의해 다양한 포맷에서 작성된 복수의 각 분석 대상 소스 코드를 분석하는 경우에 해당하는 포맷을 참조할 수 있도록 판단부(300)에 전달할 수 있다.
본 발명의 실시예에 따른 입력부(200)는 분석하고자 하는 분석 대상 소스 코드를 입력 받는다. 예컨대, 본 발명의 입력부(200)는 학습자가 과제로서 입력하는 소스 코드를 웹 서버(11)에 입력하면, 상기 입력된 소스 코드를 웹 서버(11)로부터 입력 받는다. 또한, 입력부(200)를 통해 입력된 분석 대상 소스 코드는 소스 코드 내에 포함되어 있는 학습자 정보를 추출하여 학습자 별 폴더를 생성하여 자동으로 저장하도록 구현될 수 있다.
또한, 본 발명의 실시예에 따른 판단부(300)는 분석 대상 소스 코드를 기 저장된 분석 기준 소스 코드와 비교하여 일치 여부를 판단하거나 분석 대상 소스 코드의 오류 여부를 판단할 수 있다. 보다 상세한 설명을 위하여 도3 내지 도6을 참고하면, 본 발명의 실시예에 따른 판단부(300)는 포맷 변환부(310), 오류 발생 여부 판단부(320) 및 일치 여부 판단부(330)를 포함할 수 있다.
포맷 변환부(310)는 학습자로부터 분석 대상 소스 코드가 작성된 포맷과 본 발명의 평가 시스템에서 동작 가능한 포맷을 비교한 결과, 상기 비교한 두 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 포맷을 변환한다. 즉, 포맷 변환부(310)는 상기 분석 대상 소스 코드가 작성된 포맷과 본 시스템의 포맷의 차이, 예컨대, 에디터, 운영체제 및 컴파일러 등과 같은 차이로 인해 발생하는 오류를 검사하고, 본 발명의 시스템의 포맷에 맞게 일괄 변환할 수 있다.
본 발명의 일 실시예에 따른 포맷 변환부(310)는 인코딩 변환부(312), 함수 변환부(314) 및 오류 문자 제거부(316)를 포함할 수 있다. 인코딩 변환부(312)는 분석 대상 소스 코드의 포맷과 분석 기준 포맷 간의 비교 결과 일치하지 않는 경우, 상기 분석 대상 소스 코드의 인코딩을 확인 후, 해당 인코딩을 유니코드를 위한 가변 길이 문자 인코딩으로 변환할 수 있다. 여기서, 상기 유니코드를 위한 가변 길이 문자 인코딩이란 범용 변환 포맷으로서, 예컨대 본 발명의 소스 코드 분석 시스템에서 동작가능한 UTF-8으로 예시될 수 있다.
또한, 함수 변환부(314)는 분석 대상 소스 코드의 함수를 본 발명의 소스 코드 분석 시스템에서 호환 가능한 함수로 변환할 수 있다. 일 실시예에 따르면, 본 발명의 분석 시스템에 사전에 설정된 분석 기준 소스 코드와 분석 대상 소스 코드간 표준 및 비표준에 따른 함수 차이가 존재하는 경우, 분석 기준 소스 코드의 함수를 본 분석 시스템에서 호환 가능한 함수로 변환한다. 예컨대, VC++ 6.0의 strcpy_s와 g++의 strcpy의 함수의 경우, 두 함수의 동작 개념은 유사하지만, 전자의 경우는 버퍼 오버플로우(buffer overflow) 문제로 개선한 비표준 함수이고, 후자는 ANSI C++ 표준을 준수하는 함수이며, 상기 두 컴파일러는 서로의 함수를 호환하지 않기 때문에, 본 발명에서는 분석 기준 소스 코드의 컴파일러가 본 발명의 분석 시스템에서 호환 가능하지 않은 컴파일러인 경우, 그 함수를 변환하도록 한다.
본 발명의 오류 문자 제거부(316)는 분석 대상 소스 코드와 분석 기준 소스 코드간 운영체제의 차이로 인해 발생되는 텍스트 포맷의 불일치로 인한 오류 발생을 방지하기 위해, 분석 대상 소스 코드 내 오류 발생 가능성이 있는 문자(텍스트)를 제거할 수 있다.
또한, 본 발명의 포맷 변환부(310)는 분석 대상 소스 코드의 접근 권한을 변경할 수 있다. 즉, 학습자로부터 작성된 상기 분석 대상 소스 코드가 본 분석 시스템에서 접근이 가능하지 않은 경우에, 분석 대상 소스 코드의 접근 권한을 변경하도록 할 수 있다.
상술한 바와 같이, 본 발명의 포맷 변환부(310)는 인코딩 변환, 함수 변환, 접근 권한 변경, 오류 문자 제거 작업을 수행함에 따라 분석 대상 소스 코드의 포맷을 변환할 수 있고, 변환 결과를 결과 제공부(400)로 전달한다.
본 발명의 실시예에 따른 오류 발생 여부 판단부(320)는 분석 대상 소스 코드의 오류 발생 여부를 판단하고, 그 결과 상기 분석 대상 소스 코드가 오류를 발생하는 것으로 판단하면, 그 발생된 오류의 유형을 검출할 수 있다. 오류 발생 여부 판단부(320)는 검출함수 삽입부(322), 출력값 수집부(324) 및 오류 유형 검출부(326)를 포함할 수 있다.
검출함수 삽입부(322)는 평가 대상 소스 코드 내 적어도 하나의 함수에 발생된 오류의 유형을 검출하기 위한 검출함수를 삽입할 수 있다. 일 실시예에 따르면, 검출함수 삽입부(322)는 학습자가 작성한 분석 대상 소스 코드의 오류 발생 여부 및 오류 유형을 분석하기 위해, 상기 분석 대상 소스 코드 내 각 함수들에 검출함수를 삽입한다. 이때, 상기 검출함수는 시그널 핸들러(signal handler)일 수 있고, 상기 시그널 핸들러는 각 함수들의 전단에 삽입될 수 있다.
출력값 수집부(324)는 검출함수 삽입부로부터 검출함수가 삽입됨에 따라 상기 평가 대상 소스 코드 내 함수의 오류 출력값을 수집할 수 있다. 즉, 검출함수가 삽입된 함수들이 오류 발생 여부 판단을 위해 프로그램에서 수행됨에 따라 출력값을 출력한다. 여기서 상기 출력값은 출력 코드일 수 있고, 출력되는 출력 코드는 오류에 대한 출력 코드와 오류가 없는 정상 코드임을 알리는 출력 코드로 출력될 수 있다.
이때, 상기 분석 대상 소스 코드 내 함수가 출력하는 오류에 대한 출력 코드 또한 다양한 코드로 구분되어 출력될 수 있는데, 출력값 수집부(324)는 이와 같이 다양한 코드로 출력되는 출력값을 수집할 수 있다. 예를 들어, 오류에 따른 출력 중 '잘못된 메모리 참조'에 해당하는 오류는 "SIGSEGV"이라는 출력값으로 출력되고, '무한루프'에 해당하는 오류는 "SIGALRM"이라는 출력값으로 출력될 수 있다.
이에 따라, 오류 유형 검출부(326)는 수집된 출력값에 따른 결과를 검출하는데, 여기서 결과라 함은 상기 분석 대상 소스 코드 내 함수가 정상 코드인지 오류 코드인지를 판단할 수 있으며, 오류 코드인 경우, 오류 유형 또한 검출할 수 있다.
본 발명의 일 실시예에 따른 소스 코드 분석 시스템은 사전에 소스 코드에서 발생 가능한 오류 유형과 그에 따른 출력값이 정의된 오류 유형 정보를 데이터베이스에 저장함에 따라, 상기 분석 대상 소스 코드 분석 시, 출력된 출력값을 미리 저장된 오류 유형 정보를 기반으로 하여, 오류 유형을 검출할 수 있다.
오류 발생 여부 판단부(320)는 판단된 오류 발생 여부와 오류가 발생된 것으로 판단한 경우, 오류 유형 검출부(326)에 의해 검출된 적어도 하나의 오류의 유형들에 대한 결과를 결과 제공부(400)로 전달할 수 있다.
본 발명의 실시예에 따른 일치 여부 판단부(330)는 분석 대상 소스 코드와 분석 기준 소스 코드의 동형 관계를 비교하거나 분석 대상 소스 코드 내 적어도 하나 이상의 함수의 출력 결과 값과 분석 기준 소스 코드의 출력 결과 값을 비교하여 분석 대상 소스 코드와 분석 기준 소스 코드의 일치 여부를 판단한다.
본 발명의 일 실시예에 따른 일치 여부 판단부(330)는 동형 관계 비교부(332) 및 출력 결과 값 비교부(334)를 포함할 수 있다. 동형 관계 비교부(332)는 분석 대상 소스 코드와 분석 기준 소스 코드의 동형 관계를 비교하는데, 상기 두 소스 코드간 동형 관계를 비교하기 위해서, 분석 대상 소스 코드 내 함수들 및 데이터들 각각을 연결하는 노드(node)와 함께 1차원 또는 2차원으로 배열하고, 배열된 노드를 이용하여 두 소스 코드간 동형 관계를 비교할 수 있다.
보다 구체적으로 설명하면, 본 발명의 동형 관계 비교부(332)는 두 소스 코드가 동형인지 비교하기 위해, 분석 대상 소스 코드의 함수들을 2차원 연결 리스트(linked list)로 배열하고, Null이 확인되면 상기 함수 및 데이터들이 배열된 2차원 연결 리스트를 구성하는 객체들의 헤드(head)인 1차원 연결 리스트(linked list)를 시작으로 그 하위 그래프들의 동형관계를 비교한다. 이에 따라, 하위 그래프 중 구조 또는 출력 값이 다르게 출력된다면 상기 두 소스 코드는 동형관계가 아닌 것으로 판단될 것이고, 상기 객체들의 구조 또는 출력 값이 모두 동일하게 출력된다면 두 소스 코드는 동형관계로 판단될 수 있다. 일 실시예에 따른 동형 관계 비교부(332)는 두 소스 코드의 동형관계를 비교하기 위해서 isIsomorphic() 함수를 이용할 수 있다.
그리고, 본 발명의 실시예에 따른 출력 결과 값 비교부(334)는 분석 기준 소스 코드의 함수 출력 결과 값과 분석 대상 소스 코드의 함수 출력 결과 값을 비교함에 따라 상기 두 소스 코드를 비교할 수 있다. 일 예로서, 학습자가 입력한 분석 대상 소스 코드와 교수자가 등록한 분석 기준 소스 코드 각각을 실행시켜 출력된 결과를 방향지정(redirection)함에 따라 생성되는 파일을 비교하여, 두 파일이 일치하면 상기 두 소스 코드가 일치하는 것으로 판단하고, 상기 두 파일이 일치하지 않는다면 상기 두 소스 코드는 불일치하는 것으로 판단한다. 일 실시예에 따른 출력 결과 값 비교부(334)는 두 소스 코드를 비교하기 위해서 comparelog() 함수를 이용할 수 있다.
또 다른 일 실시예에 따르면, 본 발명의 일치 여부 판단부(330)는 사용자가 직접 설정하는 비교 방법에 따라 상기 분석 대상 소스 코드와 분석 기준 소스 코드의 일치 여부를 판단할 수 있다.
상술한 바와 같이, 본 발명의 두 소스 코드간 일치 여부 판단은 동형 관계 비교 또는 함수 출력 결과 값 비교 또는 기 등록된 비교 방법에 따라 판단될 수 있고, 상기 분석 대상 소스 코드를 일치 여부를 판단하기 위해 이용되는 방법은 사용자의 설정에 따라 선택적으로 이루어질 수 있다.
일치 여부 판단부(330)는 판단된 분석 대상 소스 코드의 일치 여부 판단 결과를 결과 제공부(400) 로 전달한다.
본 발명의 실시예에 따른 결과 제공부(400)는 포맷 변환, 일치 여부에 대한 판단 또는 오류 발생 여부 및 오류 유형에 대한 판단 결과를 사용자(학습자, 교수자)에게 제공할 수 있도록 한다.
결과 제공부(400)는 분석 대상 소스 코드의 포맷 변환 성공 여부와, 상기 분석 대상 소스 코드와 분석 기준 소스 코드의 일치 여부 그리고 분석 대상 소스 코드의 오류 발생 여부를 결과로서 제공할 수 있고, 더불어 오류가 발생했다면 검출된 오류의 유형까지 제공할 수 있다.
또 다른 예로서, 본 발명의 결과 제공부(400)는 상기 포맷 변환 성공 여부와, 상기 분석 대상 소스 코드와 분석 기준 소스 코드의 일치 여부 그리고 분석 대상 소스 코드의 오류 발생 여부 결과에 따라 분석 결과 점수로 산출하여, 점수로 제공할 수 있다. 예컨대, 분석 대상 소스 코드의 포맷 변환 시 수행되는 과정인 인코딩 변환, 함수 변환 및 에러 문자 제거 과정 각각의 변환 성공 여부에 따라 미리 설정된 각각의 가중치에 따라 성공 여부에 대한 점수를 산출함으로써, 사용자에게 산출된 점수를 제공할 수 있다.
다음으로, 상술한 바와 같은 본 발명의 소스 코드를 분석하는 분석 시스템을 이용하여, 분석 대상 소스 코드를 분석하는 방법을 도7 내지 도8을 참조하여 후술하도록 한다. 도7은 본 발명의 일 실시예에 따른 분석 방법을 시간의 흐름에 따라 도시한 흐름도이고, 도8은 본 발명의 일 실시예에 따른 분석 수행 단계를 보다 상세하게 도시한 흐름도이다.
도7을 참고하면, S700 단계에서, 본 발명의 포맷 셋업부(100)는 웹 서버(11)에 교수자 및 학습자를 포함하는 사용자로부터 입력된 분석 기준 소스 코드 및 분석 대상 소스 코드를 분석하기 위한 복수의 컴퓨팅 환경과 관련된 포맷들과 그에 따른 옵션들을 저장 및 등록하는 셋업(setup) 동작을 수행한다. 여기서 상기 포맷은 소스 코드의 에디터, 운영체제 및 컴파일러 등일 수 있고, 상기 옵션은 예를 들어 컴퓨팅 환경별 소스 코드 내에 분석할 다양한 유형의 함수 또는 분석할 함수를 분석하기 위해 이용할 함수 등을 포함할 수 있다.
S700 단계에서 입력될 분석 대상 소스 코드를 분석하기 위해 필요로 하는 포맷들을 사용자(교수자)로부터 입력 받아 셋업하고 나면, S710 단계에서 또 다른 사용자(학습자)로부터 분석 대상 소스 코드(과제)를 입력 받는다.
그리고, S720 단계에서, 분석 대상 소스 코드를 분석하기 위한 분석 유형을 선택할 수 있다. 즉, 본 발명의 일 실시예에 따르면 소스 코드를 분석하기 위한 분석 유형으로는, 포맷 변환, 오류발생 여부 판단, 그리고 일치 여부 판단을 통해 상기 소스 코드를 분석할 수 있는데, 상기 세가지 유형 중 하나만을 선택하여 분석 대상 소스 코드를 분석할 수도 있고, 사용자의 선택에 따라 세가지 유형을 모두 실시함으로써 분석할 수도 있다.
그리고, S730 단계에서 이전 단계에서 선택된 분석 유형에 따라 분석 대상 소스 코드의 분석을 수행한다. S730 단계의 보다 상세한 설명을 위하여 도8을 참고하면, 사용자의 선택에 따라 세 가지 분석 방법(포맷 변환(S732), 오류발생 여부 판단(S734), 일치 여부 판단(S736)) 중 적어도 하나를 통해 분석 대상 소스 코드를 분석할 수 있다.
여기서는, 세 가지 분석 방법을 모두 실시하여 분석을 한다고 가정하여 설명하도록 하겠다. 포맷 변환부(310)가 포맷 변환(S731, S732) 동작을 수행함에 따라 분석 대상 소스 코드의 포맷 변환의 성공 여부에 대한 결과를 다음 분석 동작이 이루어질 오류발생 여부 판단부(320)로 전달하고, 오류 발생 여부 판단부(320)는 분석 대상 소스 코드의 오류 발생 여부를 판단하고, 판단된 결과를 다음 분석 동작이 이루어질 일치 여부 판단부(330)로 전달한다. 이 때, 오류 발생 여부 판단부(320)는 오류 발생 여부에 대한 결과만을 전달하는 것이 아니라, 만약 분석 대상 소스 코드가 오류 발생하는 것으로 판단되면, 검출 함수를 이용하여 발생된 오류의 유형까지 분석하여, 분석된 적어도 하나의 오류의 유형에 대한 결과도 같이 전달한다. 다음으로, 일치 여부 판단부(330)는 분석 대상 소스 코드와 기 저장된 분석 기준 소스 코드의 일치 여부를 동형 관계를 비교하거나, 각 소스 코드의 출력 결과 값을 비교하여, 상기 두 소스 코드의 일치 여부를 판단하여, 판단 결과를 상기 포맷 변환부(310) 및 오류발생 여부 판단부(320)로부터 전달받은 결과들과 함께 결과 제공부(400)로 출력한다. 포맷 변환, 오류 발생 여부 판단 그리고 일치 여부를 판단하는 구체적인 방법은 상기에서 상세하게 설명한 바 여기서는 생략하도록 한다.
다음으로 S740 단계에서, 본 발명의 결과 제공부(400)는 분석 대상 소스 코드의 포맷 변환 성공 여부와, 상기 분석 대상 소스 코드와 분석 기준 소스 코드의 일치 여부 그리고 분석 대상 소스 코드의 오류 발생 여부에 대한 결과와, 오류가 발생했다면 검출된 오류의 유형까지 제공한다.
일 예로, 결과 제공부(400)로부터 산출된 분석 결과는 다시 웹 서버(11)로 전달되어, 사용자(교수자, 학습자)가 웹 서버(11)를 통해 분석 결과를 확인할 수 있도록 구현될 수 있다.
이상에서 설명한 본 발명의 실 시예를 구성하는 모든 구성요소들이 하나로 결합하거나 결합하여 동작하는 것으로 기재되어 있다고 해서, 본 발명이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다. 또한, 그 모든 구성요소들이 각각 하나의 독립적인 하드웨어로 구현될 수 있지만, 각 구성요소들의 그 일부 또는 전부가 선택적으로 조합되어 하나 또는 복수개의 하드웨어에서 조합된 일부 또는 전부의 기능을 수행하는 프로그램 모듈을 갖는 컴퓨터 프로그램으로서 구현될 수도 있다. 또한, 이와 같은 컴퓨터 프로그램은 USB 메모리, CD 디스크, 플래쉬 메모리 등과 같은 컴퓨터가 읽을 수 있는 기록매체(Computer Readable Media)에 저장되어 컴퓨터에 의하여 읽혀지고 실행됨으로써, 본 발명의 실시예를 구현할 수 있다. 컴퓨터 프로그램의 기록매체로서는 자기 기록매체, 광 기록매체 등이 포함될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리 범위에 포함되는 것으로 해석되어야 할 것이다.
10: 분석 시스템
11: 웹 서버
12: 프로세서, 분석 장치
100: 포맷 셋업부
200: 입력부
300: 판단부
310: 포맷 변환부
312: 인코딩 변환부
314: 함수 변환부
316: 오류 문자 제거부
320: 오류발생 여부 판단부
322: 검출함수 삽입부
324: 출력값 수집부
326: 오류 유형 검출부
330: 일치 여부 판단부
332: 동형관계 비교부
334: 출력 결과 값 비교부
400: 결과 제공부

Claims (15)

  1. 프로그래밍 언어 기반으로 실행 가능한 프로그램의 분석 대상 소스 코드를 입력 받는 입력부;
    상기 분석 대상 소스 코드를 분석하기 위해 미리 저장된 프로그램의 소스 코드와 관련된 복수의 포맷들과 상기 각 포맷들에 대응하는 분석을 위한 적어도 하나의 옵션들을 고려하여, 상기 분석 대상 소스 코드와 기 저장된 분석 기준 소스 코드를 비교하여 일치 여부를 판단하거나 상기 분석 대상 소스 코드의 오류 발생 여부 및 오류 유형을 판단하는 판단부; 및
    상기 일치 여부에 대한 판단 결과 또는 상기 오류 발생 여부 및 오류 유형에 대한 판단 결과를 제공하는 결과 제공부;
    를 포함하는 소스 코드 분석을 위한 분석 시스템.
  2. 제1항에 있어서,
    상기 판단부는,
    상기 분석 대상 소스 코드의 오류 발생 여부를 판단하는 오류 발생 여부 판단부를 더 포함하고,
    상기 오류 발생 여부 판단부는 상기 분석 대상 소스 코드가 오류를 발생하는 것으로 판단하면, 상기 발생된 오류의 유형을 검출하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  3. 제2항에 있어서,
    상기 오류 발생 여부 판단부는,
    상기 분석 대상 소스 코드 내 적어도 하나의 함수에 상기 오류 유형 검출을 위한 검출함수를 삽입하는 검출함수 삽입부;
    상기 검출함수가 삽입됨에 따라 상기 적어도 하나의 함수의 출력값을 수집하는 출력값 수집부; 및
    상기 수집된 출력값에 따라 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출하는 오류 유형 검출부;
    를 포함하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  4. 제3항에 있어서,
    상기 오류 유형 검출부는,
    상기 분석 시스템에 미리 저장된 적어도 하나의 오류 유형들을 고려하여 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  5. 제1항에 있어서,
    상기 판단부는,
    상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 동형 관계를 비교하거나 상기 분석 대상 소스 코드를 구성하는 함수의 출력 결과 값과 상기 분석 기준 소스 코드의 출력 결과 값을 비교하여 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 일치 여부를 판단하는 일치 여부 판단부를 더 포함하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  6. 제5항에 있어서,
    상기 일치 여부 판단부는 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 동형 관계를 비교하는 동형 관계 비교부를 더 포함하고,
    상기 동형 관계 비교부는 상기 분석 대상 소스 코드를 구성하는 적어도 하나의 함수 및 데이터 각각을 연결하는 노드와 함께 1차원 또는 2차원으로 배열하고, 상기 배열된 노드를 이용하여 상기 동형 관계를 비교하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  7. 제1항에 있어서,
    상기 분석 대상 소스 코드가 작성된 포맷과 상기 분석 시스템의 포맷을 비교하여, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 포맷을 변환하는 포맷 변환부를 더 포함하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  8. 제7항에 있어서,
    상기 포맷 변환부는,
    상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 인코딩을 유니코드를 위한 가변 길이 문자 인코딩으로 변환하는 인코딩 변환부;
    상기 분석 대상 소스 코드의 함수를 상기 분석 시스템에 호환 가능한 함수로 변환하는 함수 변환부; 및
    상기 분석 대상 소스 코드에 포함된 에러 문자를 제거하는 에러 문자 제거부;
    를 더 포함하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 시스템.
  9. 분석 시스템이 수행하는 소스 코드 분석을 위한 분석 방법에 있어서,
    프로그래밍 언어 기반으로 실행 가능한 프로그램의 분석 대상 소스 코드를 입력 받는 단계;
    상기 분석 대상 소스 코드를 분석하기 위해 미리 저장된 프로그램의 소스 코드와 관련된 복수의 포맷들과 상기 각 포맷들에 대응하는 분석을 위한 적어도 하나의 옵션들을 고려하여, 상기 분석 대상 소스 코드와 기 저장된 분석 기준 소스 코드를 비교하여 일치 여부를 판단하거나 상기 분석 대상 소스 코드의 오류 발생 여부 및 오류 유형을 판단하는 단계; 및
    상기 일치 여부에 대한 판단 결과 또는 상기 오류 발생 여부 및 오류 유형에 대한 판단 결과를 제공하는 단계;
    를 포함하는 소스 코드 분석을 위한 분석 방법.
  10. 제9항에 있어서,
    상기 판단하는 단계는,
    상기 분석 대상 소스 코드의 오류 발생 여부를 판단하는 단계; 및
    상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드를 비교하여 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 일치 여부를 판단하는 단계;를 더 포함하고,
    상기 오류 발생 여부 판단 단계는 상기 분석 대상 소스 코드가 오류를 발생하는 것으로 판단하면, 상기 발생된 오류의 유형을 검출하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 방법.
  11. 제10항에 있어서,
    상기 오류 발생 여부 판단 단계는,
    상기 분석 대상 소스 코드 내 적어도 하나의 함수에 상기 오류 유형 검출을 위한 검출함수를 삽입하는 단계;
    상기 검출함수가 삽입됨에 따라 상기 적어도 하나의 함수의 출력값을 수집하는 단계; 및
    상기 수집된 출력값에 따라 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출하는 단계;
    를 포함하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 방법.
  12. 제11항에 있어서,
    상기 오류 유형 검출 단계는,
    미리 저장된 적어도 하나의 오류 유형들을 고려하여 상기 분석 대상 소스 코드의 검출된 오류 유형을 검출하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 방법.
  13. 제10항에 있어서,
    상기 일치 여부 판단 단계는 상기 분석 대상 소스 코드와 상기 분석 기준 소스 코드의 동형 관계를 비교하는 단계를 더 포함하고,
    상기 동형 관계 비교 단계는 상기 분석 대상 소스 코드를 구성하는 적어도 하나의 함수 및 데이터 각각을 연결하는 노드와 함께 1차원 또는 2차원으로 배열하고, 상기 배열된 노드를 이용하여 상기 동형 관계를 비교하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 방법.
  14. 제9항에 있어서,
    상기 분석 대상 소스 코드가 작성된 포맷과 상기 분석 시스템의 포맷을 비교하여, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 포맷을 변환하는 단계를 더 포함하고,
    상기 포맷 변환 단계는, 상기 분석 대상 소스 코드의 포맷과 상기 분석 시스템의 포맷이 일치하지 않는 경우, 상기 분석 대상 소스 코드의 인코딩을 유니코드를 위한 가변 길이 문자 인코딩으로 변환하는 단계, 상기 분석 대상 소스 코드의 함수를 상기 분석 시스템에 호환 가능한 함수로 변환하는 단계 및 상기 분석 대상 소스 코드에 포함된 에러 문자를 제거하는 단계를 더 포함하는 것을 특징으로 하는 소스 코드 분석을 위한 분석 방법.
  15. 제9항 내지 제14항 중 어느 한 항에 따른 소스 코드 분석을 위한 분석 방법을 컴퓨터에서 수행하기 위한 컴퓨터에서 판독 가능한 프로그램이 기록된 저장 매체.
KR1020170174842A 2017-12-19 2017-12-19 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법 KR101984294B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170174842A KR101984294B1 (ko) 2017-12-19 2017-12-19 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170174842A KR101984294B1 (ko) 2017-12-19 2017-12-19 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR101984294B1 true KR101984294B1 (ko) 2019-05-30

Family

ID=66675798

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170174842A KR101984294B1 (ko) 2017-12-19 2017-12-19 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101984294B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202494A (ja) * 2004-01-13 2005-07-28 Mitsubishi Electric Corp 静的解析結果分析システムおよび静的解析結果分析装置
KR20060113168A (ko) * 2005-04-29 2006-11-02 엘지전자 주식회사 표준 코딩 규칙 적용을 위한 소스 코드 분석방법
KR20110070743A (ko) * 2009-12-18 2011-06-24 한국전자통신연구원 정적 분석 도구 통합 관리 장치 및 시스템
KR101563494B1 (ko) 2015-05-28 2015-10-27 소프트포럼 주식회사 파일 변경에 따른 실시간 소스코드 보안 약점 탐지 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202494A (ja) * 2004-01-13 2005-07-28 Mitsubishi Electric Corp 静的解析結果分析システムおよび静的解析結果分析装置
KR20060113168A (ko) * 2005-04-29 2006-11-02 엘지전자 주식회사 표준 코딩 규칙 적용을 위한 소스 코드 분석방법
KR20110070743A (ko) * 2009-12-18 2011-06-24 한국전자통신연구원 정적 분석 도구 통합 관리 장치 및 시스템
KR101563494B1 (ko) 2015-05-28 2015-10-27 소프트포럼 주식회사 파일 변경에 따른 실시간 소스코드 보안 약점 탐지 장치 및 방법

Similar Documents

Publication Publication Date Title
US10049031B2 (en) Correlation of violating change sets in regression testing of computer software
US20070061113A1 (en) Enabling Test Script Play Back in Different Locales
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
CN109710518A (zh) 脚本审核方法及装置
CN113190220A (zh) Json文件差异化对比方法及装置
JPWO2018069950A1 (ja) ログ分析方法、システムおよびプログラム
CN111133396B (zh) 生产设备监视装置、生产设备监视方法以及记录介质
JP6440895B2 (ja) ソフトウェア分析装置及びソフトウェア分析方法
Li et al. Automatic identification of assumptions from the hibernate developer mailing list
KR101984294B1 (ko) 동적 분석을 기반으로 하는 소스 코드 분석을 위한 분석 시스템 및 방법
JP2013182468A (ja) パラメータ値設定誤り検出システム、パラメータ値設定誤り検出方法およびパラメータ値設定誤り検出プログラム
CN112270110A (zh) 面向工业互联网平台组件的兼容性测试方法及系统
JP2009129204A (ja) コード検査システム及びコード検査方法及びプログラム
CN108763092B (zh) 一种基于交叉验证的代码缺陷检测方法及装置
WO2019225007A1 (ja) 入力ミス検知装置、入力ミス検知方法および入力ミス検知プログラム
CN113868137A (zh) 埋点数据的处理方法、装置、系统和服务器
CN115543832A (zh) 一种软件代码标准性的检测方法、系统、设备及存储介质
US7689399B1 (en) Automatic extraction of design properties
Mahfoodh et al. Identifying duplicate bug records using word2vec prediction with software risk analysis
JP2021096685A (ja) テスト実行プログラム、テスト実行方法、およびテスト実行装置
US20220253529A1 (en) Information processing apparatus, information processing method, and computer readable medium
CN116383834B (zh) 针对源码漏洞检测工具异常的检测方法以及相关设备
JP2018116517A (ja) 開発支援装置、開発支援方法、およびプログラム
CN111382267B (zh) 一种问题分类方法、问题分类装置及电子设备
JP2000057014A (ja) テスト装置、テストケース評価装置、およびテスト結果解析装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant