KR100987124B1 - 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법 - Google Patents
메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법 Download PDFInfo
- Publication number
- KR100987124B1 KR100987124B1 KR1020090007596A KR20090007596A KR100987124B1 KR 100987124 B1 KR100987124 B1 KR 100987124B1 KR 1020090007596 A KR1020090007596 A KR 1020090007596A KR 20090007596 A KR20090007596 A KR 20090007596A KR 100987124 B1 KR100987124 B1 KR 100987124B1
- Authority
- KR
- South Korea
- Prior art keywords
- defect
- metric
- class
- module
- prediction model
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3616—Software analysis for verifying properties of programs using software metrics
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
본 발명은 측정된 메트릭 값의 변환과정을 통하여 기존의 결함 예측 모형이 대규모 시스템에서도 적합한 예측력을 가질 수 있는 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법을 제공하기 위한 것으로서, 실험대상인 소스 파일을 파싱하고 메트릭으로 측정하여 정제된 메트릭 측정값을 검출하는 메트릭 측정값 입력 모듈과, 상기 메트릭 측정값 입력 모듈에서 검출된 메트릭 측정값을 정규화 과정을 수행하거나, 또는 표준 정규화 과정을 수행하여 정규화된 메트릭 값을 산출하는 정규화 모듈과, 내제된 결함 예측 모형과 상기 정규화 모듈에서 정규화된 메트릭 값을 바탕으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출하는 결함 예측 모듈과, 버그 추적 시스템(Bug Tracking System)에 존재하는 결함 정보를 기반으로 소스 내용 중에서 결함 있는 것으로 등록된 클래스의 이름을 이용하여 실험대상의 실제 결함 유무에 대한 정보를 수집하는 결함 정보 수집 모듈과, 상기 결함 예측 모듈에서 결함 예측 모형에 의해서 예측된 결과값과 상기 결함 정보 수집 모듈에서 수집된 실제 결함이 있는 클래스의 정보를 바탕으로 결함 예측 모형의 예측력을 평가하는 예측력 평가 모듈을 포함하는데 있다.
객체지향 메트릭, 결함 예측 모형, 소프트웨어 결함, 정규화
Description
본 발명은 소프트웨어의 결함을 예측하거나 기존의 결함 예측 모형을 범용적으로 적용하기 위하여 예측력을 개선시키는 계산 장치 및 계산 방법에 관한 것이다.
치열한 경쟁 속에서 사업을 영위하는 기업 입장에서는 시장에서 도태되지 않기 위하여 경쟁 회사와 비교하여 우위에 있는 소프트웨어 제품을 더 빠른 시간에 개발해야만 한다. 이와 같은 개발 환경의 영향으로 개발된 소프트웨어 내부에 결함이 포함된 채로 소비자에게 전달되는 일들이 빈번하게 일어나고 있다. 휴대폰 사례의 경우에 이용자들은 갑작스럽게 휴대폰이 꺼지는 경우를 경험하곤 한다. 이런 일을 경험하게 되면 고객은 일반적으로 제품에 대한 신뢰도에 의문을 가지게 되고 심각한 경우에 회사에 대한 불신으로 이어지게 된다.
따라서 제품이 개발된 후 배포하기 이전 단계에서 소프트웨어의 결함을 발견하는 것이 중요하다. 결함을 발견하는데 널리 사용되는 방법에는 정적 분석(Static Analysis), 코드 검사(Code Inspection), 테스팅(Testing) 등이 있다. 정적 분석은 소스코드를 자동으로 분석하여 결함이 발생될 부분을 알려주는 기법이며, 코드 검사는 개발자 이외의 사람이 직접 소스코드를 분석하여 결함이 있는 부분을 발견하는 것이며, 테스팅은 개발 소프트웨어에 특정 입력값을 전달 후 예상되는 결과값을 출력하는지를 확인하는 방법이다. 그러나 이와 같은 방법들은 개발 단계 후반, 즉 소스코드가 개발이 진행된 상태에서 수행할 수 있기 때문에 결함을 발견하더라도 그것을 수정하는데 많은 비용이 발생하게 된다.
이 문제를 해결하기 위하여 지난 10년간 개발 단계 초기에 소프트웨어의 결함을 예측하는 연구들이 수행되었다. 이 연구들에서는 디자인 단계의 산출물을 대상으로 메트릭을 측정하여 결함과의 관계를 발견하였다. 이때 객체지향 패러다임을 사용한 소프트웨어 개발의 증가로 인하여 연구에 사용된 메트릭은 대부분 객체지향 메트릭이 였으며 소프트웨어의 크기 및 복잡도가 함께 사용되기도 하였다. 또한 연구자들은 예측 모형을 구축하는데 주로 로지스틱 회귀분석을 사용하였다. 로지스틱 회귀분석을 이용하면 결함이 발생하기 쉬운 클래스와 그렇지 않은 클래스를 분류할 수 있다.
특히 최근 3년간 Gyimothy, Zhou 그리고 Olague가 로지스틱 회귀모형을 사용하여 대규모 시스템의 결함을 예측하였다. 우선 Gyimothy는 대형 오픈 소스 소프트웨어인 모질라를 대상으로 결함 예측모형을 개발하였다. 결함 예측 모형을 개발하기 위한 기법으로 로지스틱 회귀분석과 함께 머신 러닝 기법을 적용하여 예측률을 높이고자 하는 시도를 하였다. 그 결과 로지스틱 회귀분석으로 개발된 예측모형은 정확성(Correctness)이 기계학습(Machine Learning)으로 개발된 모형에 비하여 높았다. 또한 Zhou는 NASA에서 개발한 소프트웨어를 대상으로 결함의 심각도별로 예측 모형을 개발하였다. 그 결과 로지스틱 회귀분석으로 만들어진 예측 모형은 높은 심각도의 결함보다 낮은 심각도의 결함에 대하여 예측률이 높았다. 또한 Olague는 반복적인 개발 혹은 기민한 개발 프로세스를 이용하여 개발된 시스템을 대상으로 CK, MOOD 메트릭 모음을 이용하여 결함 예측 모형을 만들었으며, CK 메트릭 모음을 이용한 결함 예측 모형의 예측률이 MOOD 메트릭 모음을 이용한 결함 예측 모형의 예측률보다 높았다.
이와 같은 연구 결과가 개발 현장에서 폭 넓게 활용되기 위해서는 결함 예측 모형이 범용성을 가져야 한다. 그러나 기존의 연구들은 특정 소프트웨어에서 수집한 결함 및 메트릭 데이터를 바탕으로 결함 예측 모형을 구축한 후 이 모형을 동일한 소프트웨어에 적용하여 모형의 범용성에 관한 검증이 이루어지지 않았다. 따라서 연결 결함 예측 모형이 개발 현장에서 널리 사용되기 위해서 범용성을 가지는지 유무를 판별하기 위한 실험이 필요하다.
본 발명은 기존의 정의된 결함 예측 모형을 범용적으로 타 시스템에 적용하기 위하는데 목적이 있다. 범용성을 통해서 얻을 수 있는 이점은 크게 두 가지이다 우선 소프트웨어의 개발 비용이 절감 된다. 왜냐하면 결함 예측 모형을 개발 시스템에 맞게 새로 개발하려면 결함 정보에 대한 관리를 위해 별도의 관리 시스템이 필요하다. 또한 결함 예측 모형의 개발에 필요한 통계적인 작업 절차와 도구가 필 요하기 때문에 다른 시스템의 결함 예측 모형을 사용하면 불필요한 개발 시스템 구축 비용이 발생 하지 않는다. 다음으로 소프트웨어 특성이 다른 새로운 시스템을 개발 할 경우 기존의 결함 정보는 존재하지 않기 때문에 이런 경우에 기존의 결함 예측 모형을 범용적으로 사용하여 효율적으로 결함 유무를 판별하는데 이점이 있다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 측정된 메트릭 값의 변환과정을 통하여 기존의 결함 예측 모형이 대규모 시스템에서도 적합한 예측력을 가질 수 있는 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적은 결함 예측 모형의 예측력을 높여서 결함이 발생할 것으로 예상되는 모듈에 소프트웨어 개발 자원을 집중 관리하여 개발 비용의 효율적인 관리가 가능한 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법을 제공하는데 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 장치의 특징은 실험대상인 소스 파일을 파싱하고 불필요한 정보를 제거한 후에 메트릭으로 측정하여 정제된 메트릭 측정값을 검출하는 메트릭 측정값 입력 모듈과, 상기 메트릭 측정값 입력 모듈에서 검출된 메트릭 측정값을 정규화 과정을 수행하거나, 또는 표준 정규화 과정을 수행하여 정규화된 메트릭 값을 산출하는 정규화 모듈과, 내제된 결함 예측 모형과 상기 정규화 모듈에서 정규 화된 메트릭 값을 바탕으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출하는 결함 예측 모듈과, 버그 추적 시스템(Bug Tracking System)에 존재하는 결함 정보를 기반으로 소스 내용 중에서 결함 있는 것으로 등록된 클래스의 이름을 이용하여 실험대상의 실제 결함 유무에 대한 정보를 수집하는 결함 정보 수집 모듈과, 상기 결함 예측 모듈에서 결함 예측 모형에 의해서 예측된 결과값과 상기 결함 정보 수집 모듈에서 수집된 실제 결함이 있는 클래스의 정보를 바탕으로 결함 예측 모형의 예측력을 평가하는 예측력 평가 모듈을 포함하는데 있다.
바람직하게 상기 예측력 평가 모듈의 결함 예측 모형의 예측력 평가 기준으로는 전체 클래스 중에서 예측 모형에 의하여 정확히 분류된 클래스가 차지하는 비율을 나타내는 정밀성(Precision)과, 예측 모형에 의하여 결함으로 분류된 전체 클래스 중에서 실제로도 결함인 클래스가 차지하는 비율을 나타내는 정확성(Correctness)과, 실제로 존재하는 총결함 중에서 예측 모형에서 결함으로 분류한 클래스에 존재하는 결함으로 비율을 나타내는 완전성(Completeness)을 사용하는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 방법의 특징은 (a) 실험 대상인 소스 파일을 수집하고 메트릭으로 측정하여 정제된 메트릭 측정값을 검출하는 단계와, (b) 상기 검출된 메트릭 측정값을 일정한 크기로 나누어 단일화시켜 정규 분포화를 만드는 정규화 과정을 수행하거나, 또는 상기 정규 분포들을 하나의 표준 형태의 표준 정규 분포화를 만드는 표준 정규화 과정을 수행하여 정규화된 메트릭 값을 산출하는 단계와, (c) 상 기 산출된 정규화된 메트릭 값과 내제된 결함 예측 모형의 임계값을 기반으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출하는 단계와, (d) 상기 (a) 내지 (c)단계와는 독립적으로, 실험대상의 실제 결함 유무에 대한 정보를 수집하는 단계와, (e) 상기 (c) 단계에서 예측된 클래스 정보와, 상기 (d) 단계에서 수집된 실제 결함 있는 클래스 정보를 바탕으로 결함 예측 모형의 예측력을 평가하는 단계를 포함하는데 있다.
바람직하게 상기 (c) 단계는 수식 에서 클래스의 결함 발생 확률( )을 계산하는 단계와, 상기 계산된 결함 발생 확률과 내제된 결함 예측 모형의 임계값을 비교하는 단계와, 상기 비교결과, 임계값이 결함 확률( )과 같거나 큰 경우 결함이 있는 것으로 판단하고, 임계값보다 결함 확률( ) 이 작으면 결함이 없는 것으로 판단하는 단계를 포함하며, 이때, 는 독립변수인 객체지향 메트릭의 측정값, 은 의 회귀계수이며, 값의 범의는 0부터 1까지인 것을 특징으로 한다.
바람직하게 상기 수식에서 사용되는 로지값은 사용되는 결함 예측 모형에 따른 로지스틱 회귀 모형식에서 표현된 로지값을 적용하여 사용하는 것을 특징으로 한다.
바람직하게 상기 (d) 단계는 이클립스 웹사이트에서 제공하는 버그질 라(bugzilla) 및 NASA와 PROMISE에서 제공하는 파일에서 결함 정보를 수집하는 단계와, 상기 수집된 결함 정보를 이용하여 소스 내용 중에서 결함이 있는 것으로 등록된 클래스의 이름을 추출하는 단계와, 상기 클래스의 이름이 한 번씩 추출될 때 마다 결함의 수를 1씩 증가시키는 단계와, 메트릭 측정값에 존재하지 않는 클래스나 잘못된 클래스의 이름이 추출되면 실제 결함 정보에서 해당 클래스의 이름을 제거하는 단계를 포함하는 것을 특징으로 한다.
바람직하게 상기 (e) 단계에서의 예측력 평가 기준은 정밀성(Precision), 정확성(Correctness) 그리고 완전성(Completeness)을 사용하며, 정확성과 완전성 사이의 절충관계(trade-off)를 통한 절충점을 임계값으로 결정하여 모델의 정확성 및 완전성을 계산하는 것을 특징으로 한다.
이상에서 설명한 바와 같은 본 발명에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법은 다음과 같은 효과가 있다.
첫째, 타 시스템에서 측정된 메트릭 값을 변환하는 과정을 커여 결함 예측 모형을 타 시스템에 범용적으로 적용할 수 있는 효과가 있다.
둘째, 측정된 메트릭 값의 변환과정 및 평가도구를 통하여 기존의 결함예측 모형의 예측력을 높일 수 있는 효과가 있다.
셋째, 예측력이 높아짐에 따라 더욱 정확하게 결함이 발생할 것으로 예상되는 모듈에 소프트웨어 개발 자원을 집중 관리 할 수 있어 개발 비용의 효율적인 관리가 가능해지는 효과가 있다.
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 따라서, 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1 은 본 발명의 실시예에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 장치의 구조를 나타낸 블록도이다.
도 1과 같이, 소프트웨어 결함 예측 계산 장치는 메트릭 측정값 입력 모듈(10)과, 정규화 모듈(20)과, 결함 예측 모듈(30)과, 결함 정보 수집 모듈(40)과, 예측력 평가 모듈(50)을 포함한다.
상기 메트릭 측정값 입력 모듈(10)은 실험대상인 소스 파일을 파싱하고 불필요한 정보를 제거한 후에 CK 메트릭으로 측정하여 정제된 메트릭 측정값을 검출한 후, 다음 모듈인 정규화 모듈(20)에 전달한다. 이때, 상기 메트릭 측정은 Together 2007을 사용하며, 측정값은 XML 파일 형태로 출력된다.
상기 정규화 모듈(20)은 상기 메트릭 측정값 입력 모듈(10)에서 검출된 CK 메트릭 측정값을 일정한 크기로 나누어 단일화시켜 정규 분포화를 만드는 정규화 과정을 수행하거나, 또는 상기 정규 분포들을 하나의 표준 형태의 표준 정규 분포화를 만드는 표준 정규화 과정을 수행하여 정규화된 CK 메트릭 값을 산출한다.
상기 결함 예측 모듈(30)은 내제된 결함 예측 모형과 상기 정규화 모듈(20)에서 정규화된 CK 메트릭 값을 바탕으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출한다. 상기 결함 예측 모형은 Olague, Yuming 그리고 Gyimothy 모형이고, 각 모형별로 클래스의 결함을 판별하기 위한 임계값이 있다.
상기 결함 정보 수집 모듈(40)은 버그 추적 시스템(Bug Tracking System)에 존재하는 결함 정보를 기반으로 소스 내용 중에서 결함 있는 것으로 등록된 클래스의 이름을 이용하여 실험대상의 실제 결함 유무에 대한 정보를 수집한다. 참고로 상기 결함 정보는 이클립스 웹사이트에서 제공하는 버그 추적 시스템인 버그질라(bugzilla) 및 NASA와 PROMISE에서 제공하는 파일에서 수집된 정보이다.
상기 예측력 평가 모듈(50)은 상기 결함 예측 모듈(20)에서 결함 예측 모형에 의해서 예측된 결과값과 상기 결함 정보 수집 모듈(30)에서 수집된 실제 결함이 있는 클래스의 정보를 바탕으로 결함 예측 모형의 예측력을 평가한다. 이때 상기 결함 예측 모형의 예측력 평가 기준으로는 전체 클래스 중에서 예측 모형에 의하여 정확히 분류된 클래스가 차지하는 비율을 나타내는 정밀성(Precision)과, 예측 모형에 의하여 결함으로 분류된 전체 클래스 중에서 실제로도 결함인 클래스가 차지 하는 비율을 나타내는 정확성(Correctness)과, 그리고 실제로 존재하는 총결함 중에서 예측 모형에서 결함으로 분류한 클래스에 존재하는 결함으로 비율을 나타내는 완전성(Completeness)을 사용한다.
이와 같이 구성된 본 발명에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 장치의 계산 방법을 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다. 도 1과 동일한 참조부호는 동일한 기능을 수행하는 동일한 부재를 지칭한다.
도 2 는 본 발명의 실시예에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 방법을 설명하기 위한 흐름도이다.
도 2를 참조하여 설명하면, 먼저 메트릭 측정값 입력모듈(10)은 실험 대상인 Eclipse 3.3 소스 파일에서 기본적인 자료를 수집하여 메트릭으로 측정하여 정제된 메트릭 측정값을 검출한다(S10). 상기 메트릭 측정은 Together 2007으로 하였다. 그러나 기존의 다른 모형 연구에서는 자체 개발한 메트릭 측정도구를 사용하거나 상용 도구로 측정하고 있다. 이처럼 메트릭 측정에 사용하는 측정도구는 본 발명의 기술적 사상의 범위 내에서 다양한 실시예가 가능함에 주의하여야 한다. 그리고 실험의 대상으로 선정된 공개 소프트웨어인 이클립스(Eclipse)는 IBM, 노키아 등이 지원을 하고 있는 자바 기반의 오픈 소스 프로젝트로서 JAVA, C++ 개발을 위한 IDE(Integrated Development Evironment) 도구이다.
이어 정규화 모듈(20)은 상기 검출된 메트릭 측정값을 일정한 크기로 나누어 단일화시켜 정규 분포화를 만드는 정규화 과정을 수행하거나, 또는 상기 정규 분포 들을 하나의 표준 형태의 표준 정규 분포화를 만드는 표준 정규화 과정을 수행하여 정규화된 메트릭 값을 산출한다(S20).
그리고 결함 예측 모듈(30)은 상기 산출된 정규화된 메트릭 값과 내제된 결함 예측 모형의 임계값을 기반으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출한다(S30). 이때 사용된 예측 모형은 Olague, Yuming 그리고 Gyimothy 모형이고, 각 결함 예측 모형별로 클래스의 결함을 판별하기 위한 임계값이 있다.
이때, 실험 대상 클래스에서 결함 유무는 다음 수학식 1에서 클래스의 결함 발생 확률( )을 계산한다. 즉, 결함 예측 모형은 개별 클래스에서 임계값이 결함 확률( )과 같거나 큰 경우 결함이 있는 것으로 예측하고, 임계값보다 결함 확률( ) 이 작으면 결함이 없는 것으로 예측한다.
이때, 는 독립변수인 객체지향 메트릭의 측정값이며, 종속변수인 는 클래스에서 결함이 발견될 확률을 의미하며, 메트릭 측정값을 사용하여 계산된 확률이 임계값 이상이면 해당 클래스에는 결함이 있다고 간주한다. 값의 범의는 0부터 1까지이다. 은 의 회귀계수를 위미하며, 값이 크면 클수록 해당 독립변수가 클래스에서 결함을 발견할 확률에 영향력이 높다.
또한, 상기 수학식 1에서 사용되는 로지값은 사용되는 예측 모형에 따라 각 각 정의되는데, 수학식 2는 로지스틱 회귀 모형식으로 표현한 Olague 모형을 표현한 것으로, Olague 모형을 사용하여 클래스의 결함을 판별하는 경우에는 수학식 2의 예측모형에서 사용되는 로지값( )을 상기 수학식 1에 적용하여 클래스의 결함 발생 확률로 계산된다.
한편, 결함 정보 수집 모듈(40)은 상기 “S10”단계 내지 “S30”단계와는 독립적으로, 실험대상의 실제 결함 유무에 대한 정보를 수집한다. 이는 이클립스 웹사이트에서 제공하는 버그 추적 시스템인 버그질라에 존재하는 결함 정보를 URL을 통해서 수집하는데, 상기 URL로 제공하고 있는 결함 정보는 HTML 소스로부터 데이터를 수집한다. 그 외 결함 정보는 NASA와 PROMISE에서 제공하는 파일로 입수한다. 그리고 이렇게 수집된 정보를 이용하여 소스 내용 중에서 결함이 있는 것으로 등록된 클래스의 이름을 추출하며, 이름이 한 번씩 나올 때 마다 결함의 수를 1씩 증가시킨다. 그리고 메트릭 측정값에 존재하지 않는 클래스나 잘못된 클래스의 이름은 실제 결함 정보에서 해당 클래스의 이름을 제거한다(S40).
이어 예측력 평가 모듈(50)은 상기 결함 예측 모듈(20)에서 결함 예측 모형 에 의해서 예측된 클래스 정보와, 상기 결함 정보 수집 모듈(30)에서 수집된 실제 결함 있는 클래스 정보를 바탕으로 결함 예측 모형의 예측력을 평가하고, 예측력 평가와, 각 영역에 속한 클래스의 메트릭 값과, 결함 유무를 파일로 출력한다(S50). 이때 예측력의 평가 기준으로는 정밀성(Precision), 정확성(Correctness) 그리고 완전성(Completeness)을 사용한다.
상기 정밀성은 전체 클래스 중에서 예측 모형에 의하여 정확히 분류된 클래스가 차지하는 비율로서, 다음 수학식 2와 같이 나타낼 수 있다.
그리고 상기 정확성은 예측 모형에 의하여 결함으로 분류된 전체 클래스 중에서 실제로도 결함인 클래스가 차지하는 비율로서, 다음 수학식 3과 같이 나타낼 수 있다.
또한 상기 완전성은 실제로 존재하는 총결함 중에서 예측 모형에서 결함으로 분류한 클래스에 존재하는 결함으로 비율로서, 다음 수학식 4와 같이 나타낼 수 있다.
이때, A1~A4까지 영역은 분류된 자바 클래스들의 수이고, B1, B2는 해당 영 역에서 분류된 소스파일이 가지고 있는 실제 결함의 수이다.
예를 들어 결함 예측 모형의 정밀성이 60%로 계산된 경우에는 100개의 클래스 중 60개의 클래스를 결함이 있거나 없는 클래스로 예측하였음을 나타낸다. 다음으로 정확성이 60%로 계산된 경우에는 100개의 결함이 있는 클래스에서 60개의 클래스를 결함이 있다고 예측하였음을 나타낸다. 마지막으로 완전성이 60%로 계산된 경우에는 100개의 결함 중 60개의 결함을 예측하였음을 나타낸다. 참고로 정밀성, 정확성, 완전성을 이용하여 결함 예측 모형을 평가할 때 주의해야 할 사항으로는 정확성과 완전성 사이에는 절충관계(trade-off)가 있으므로 도 3과 같이, 절충점을 임계값으로 결정하여 모델의 정확성 및 완전성을 계산한다.
이와 같은 계산 장치 및 계산 방법을 통해 기존의 결함 예측 모형이 대규모 시스템에서도 적합한 예측력을 가질 수 있는 결과를 나타낼 수 있음을 이하의 실험 결과에서 알 수 있다.
도 4a는 비정규화된 메트릭 값으로 계산한 결함 발생 확률의 분포를 나타낸 그래프이고, 도 4b는 메트릭 값을 표준 정규화 시킨 후 Gyimothy 모형이 계산한 결함 발생 확률의 분포를 나타낸 그래프이다.
도 4a와 같이 비정규화된 메트릭 값으로 계산한 결함 발생 확률의 분포를 나타내는 그래프와 다르게 도 4b의 그래프는 결함 발생 확률의 평균을 중심으로 좌우로 고르게 분포하고 있는 것을 확인 할 수 있다. 따라서 임계값의 변화에 따라서 모형의 예측력의 변동성이 부드럽게 변화되는 것을 기대할 수 있다.
그리고 도 5는 NASA KCI 시스템의 표준 정규화된 메트릭 값을 이용하여 Gyimothy 모형으로 결함을 예측한 결과를 나타낸 그래프이다.
도 5와 같이 비정규화된 메트릭 값을 이용한 예측력 결과 실험에서는 결함으로 예측하지 못하였으나 정규화된 메트릭 값을 이용한 예측에서는 결함 예측의 정확성은 70.7%, 완전성은 70.5%를 나타내었다. 이는 Yuming이 NASA KCI 데이터를 바탕으로 구축한 결함 예측 모형에서 주중된 예측력과 비슷한 결과를 보였다.
또한 표 1은 메트릭 값을 정규화 시킨 후 결함 예측 모형을 실험 대상 시스템에 적용한 결과이다. 총 8번의 실험 중 6번에서 결함 예측 모형의 결과값을 해석할 수 있었다. 가장 주목해 본 모형은 Gyimothy 모형이다. 비정규화된 메트릭 값을 사용하여 예측한 실험에서 세 개의 시스템을 대상으로 결함 예측에 모두 실패하였으나 정규화된 메트릭 값을 사용해서는 세 개의 시스템 모두에서 결함을 예측하였다. Yuming의 모형에서도 Eclipse를 대상으로 결함 예측의 결과를 해설 할 수 있었다. 따라서 결함 예측 모형을 타 시스템에 적용할 경우에 먼저 결함 예측 모형이 계산한 결함 발생 확률 분포를 살펴보고 그 분포가 고르게 되어 있지 않은 경우에 메트릭 값을 표준 정규화시킨 후 시스템에 재적용해 보는 것이 예측력을 개선시킬 수 있는 방법으로 생각된다.
결함예측모형 | 실험대상시스템 | 정밀성 | 정확성 | 완전성 | 절충값 |
Olague | 주장된 예측력 | - | 82% | - | |
Eclipse 3.3 | 76.8% | 21.7% | 21.7% | 0.105 | |
NASA KCI | - | - | - | 0.044 | |
jEdit 4.0 | - | - | - | 0.039 | |
Yuming | 주장된 예측력 | 69.7% | 61.4% | 74.6% | |
Eclipse 3.3 | 38.3% | 34.3% | 34.3% | 0.488 | |
NASA KCI | 실험하지 않음 | ||||
jEdit 4.0 | 60.4% | 64.2% | 64.2% | 0.421 | |
Gyimothy | 주장된 예측력 | 69.6% | 72.6% | 65.2% | |
Eclipse 3.3 | 82.4% | 38.3% | 38.3% | 0.716 | |
NASA KCI | 71.7% | 70.7% | 70.5% | 0.579 | |
jEdit 4.0 | 59.9% | 63.7% | 63.7% | 0.332 |
상기에서 설명한 본 발명의 기술적 사상은 바람직한 실시예에서 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술적 분야의 통상의 지식을 가진자라면 본 발명의 기술적 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
도 1 은 본 발명의 실시예에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 장치의 구조를 나타낸 블록도
도 2 는 본 발명의 실시예에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산 방법을 설명하기 위한 흐름도
도 3 은 본 발명의 실시예에 따른 메트릭을 이용한 소프트웨어 결함 예측 계산에서 결함 예측 모형의 예측력 평가시 정확성 및 완전성 사이의 절출관계를 나타낸 흐름도
도 4a는 비정규화된 메트릭 값으로 계산한 결함 발생 확률의 분포를 나타낸 그래프
도 4b는 메트릭 값을 표준 정규화시킨 후 Gyimothy 모형이 계산한 결함 발생 확률의 분포를 나타낸 그래프
도 5는 NASA KCI 시스템의 표준 정규화된 메트릭 값을 이용하여 Gyimothy 모형으로 결함을 예측한 결과를 나타낸 그래프
*도면의 주요부분에 대한 부호의 설명
10 : 메트릭 측정값 입력 모듈 20 : 정규화 모듈
30 : 결함 예측 모듈 40 : 결함 정보 수집 모듈
50 : 예측력 평가 모듈
Claims (9)
- 실험대상인 소스 파일을 파싱하고 메트릭으로 측정하여 정제된 메트릭 측정값을 검출하는 메트릭 측정값 입력 모듈과,상기 메트릭 측정값 입력 모듈에서 검출된 메트릭 측정값을 정규화 과정을 수행하거나, 또는 표준 정규화 과정을 수행하여 정규화된 메트릭 값을 산출하는 정규화 모듈과,내제된 결함 예측 모형과 상기 정규화 모듈에서 정규화된 메트릭 값을 바탕으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출하는 결함 예측 모듈과,버그 추적 시스템(Bug Tracking System)에 존재하는 결함 정보를 기반으로 소스 내용 중에서 결함 있는 것으로 등록된 클래스의 이름을 이용하여 실험대상의 실제 결함 유무에 대한 정보를 수집하는 결함 정보 수집 모듈과,상기 결함 예측 모듈에서 결함 예측 모형에 의해서 예측된 결과값과 상기 결함 정보 수집 모듈에서 수집된 실제 결함이 있는 클래스의 정보를 바탕으로 결함 예측 모형의 예측력을 평가하는 예측력 평가 모듈을 포함하는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 장치.
- 제 1 항에 있어서,상기 결함 예측 모형은 Olague, Yuming 그리고 Gyimothy 모형 중 어느 하나 이고, 각 모형별로 클래스의 결함을 판별하기 위한 임계값이 정의되어 있는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 장치.
- 제 1 항에 있어서,상기 결함 정보는 이클립스 웹사이트에서 제공하는 버그질라(bugzilla) 및 NASA와 PROMISE에서 제공하는 파일에서 수집된 정보 중 어느 하나인 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 장치.
- 제 1 항에 있어서, 상기 예측력 평가 모듈의 결함 예측 모형의 예측력 평가 기준으로는전체 클래스 중에서 예측 모형에 의하여 정확히 분류된 클래스가 차지하는 비율을 나타내는 정밀성(Precision)과,예측 모형에 의하여 결함으로 분류된 전체 클래스 중에서 실제로도 결함인 클래스가 차지하는 비율을 나타내는 정확성(Correctness)과,실제로 존재하는 총결함 중에서 예측 모형에서 결함으로 분류한 클래스에 존재하는 결함으로 비율을 나타내는 완전성(Completeness)을 사용하는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 장치.
- (a) 실험 대상인 소스 파일을 수집하고 메트릭으로 측정하여 정제된 메트릭 측정값을 검출하는 단계와,(b) 상기 검출된 메트릭 측정값을 일정한 크기로 나누어 단일화시켜 정규 분포화를 만드는 정규화 과정을 수행하거나, 또는 상기 정규 분포들을 하나의 표준 형태의 표준 정규 분포화를 만드는 표준 정규화 과정을 수행하여 정규화된 메트릭 값을 산출하는 단계와,(c) 상기 산출된 정규화된 메트릭 값과 내제된 결함 예측 모형의 임계값을 기반으로 실험대상의 클래스별 결함 유무를 예측한 결과값을 도출하는 단계와,(d) 상기 (a) 내지 (c)단계와는 독립적으로, 실험대상의 실제 결함 유무에 대한 정보를 수집하는 단계와,(e) 상기 (c) 단계에서 예측된 클래스 정보와, 상기 (d) 단계에서 수집된 실제 결함 있는 클래스 정보를 바탕으로 결함 예측 모형의 예측력을 평가하는 단계를 포함하는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 방법.
- 제 5 항에 있어서, 상기 (c) 단계는상기 계산된 결함 발생 확률과 내제된 결함 예측 모형의 임계값을 비교하는 단계와,
- 제 6 항에 있어서,상기 수식에서 사용되는 로지값은 사용되는 결함 예측 모형에 따른 로지스틱 회귀 모형식에서 표현된 로지값을 적용하여 사용하는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 방법.
- 제 5 항에 있어서, 상기 (d) 단계는이클립스 웹사이트에서 제공하는 버그질라(bugzilla) 및 NASA와 PROMISE에서 제공하는 파일에서 결함 정보를 수집하는 단계와,상기 수집된 결함 정보를 이용하여 소스 내용 중에서 결함이 있는 것으로 등록된 클래스의 이름을 추출하는 단계와,상기 클래스의 이름이 한 번씩 추출될 때 마다 결함의 수를 1씩 증가시키는 단계와,메트릭 측정값에 존재하지 않는 클래스나 잘못된 클래스의 이름이 추출되면 실제 결함 정보에서 해당 클래스의 이름을 제거하는 단계를 포함하는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 방법.
- 제 5 항에 있어서,상기 (e) 단계에서의 예측력 평가 기준은 정밀성(Precision), 정확성(Correctness) 그리고 완전성(Completeness)을 사용하며, 정확성과 완전성 사이의 절충관계(trade-off)를 통한 절충점을 임계값으로 결정하여 모델의 정확성 및 완전성을 계산하는 것을 특징으로 하는 메트릭을 이용한 소프트웨어 결함 예측 계산 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090007596A KR100987124B1 (ko) | 2009-01-30 | 2009-01-30 | 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090007596A KR100987124B1 (ko) | 2009-01-30 | 2009-01-30 | 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100088399A KR20100088399A (ko) | 2010-08-09 |
KR100987124B1 true KR100987124B1 (ko) | 2010-10-11 |
Family
ID=42754621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090007596A KR100987124B1 (ko) | 2009-01-30 | 2009-01-30 | 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100987124B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012106626A2 (en) * | 2011-02-04 | 2012-08-09 | Wts Paradigm | System and method for evaluating computerized product customization tool and associate database(s) |
CN109948169B (zh) * | 2017-12-20 | 2021-05-18 | 中国中车股份有限公司 | 一种铁路货车故障预测与健康管理*** |
CN109886443A (zh) * | 2017-12-26 | 2019-06-14 | 广东电网有限责任公司电力调度控制中心 | 一种基于灰色***理论的故障预估*** |
KR102420514B1 (ko) * | 2021-05-10 | 2022-07-13 | 이화여자대학교 산학협력단 | 딥러닝을 이용한 하드웨어 및 소프트웨어 결함 탐지 방법 및 분석장치 |
-
2009
- 2009-01-30 KR KR1020090007596A patent/KR100987124B1/ko not_active IP Right Cessation
Non-Patent Citations (1)
Title |
---|
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 31, NO. 10 |
Also Published As
Publication number | Publication date |
---|---|
KR20100088399A (ko) | 2010-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10261870B2 (en) | Risk formula for erroneous software components detection | |
Zhou et al. | Examining the potentially confounding effect of class size on the associations between object-oriented metrics and change-proneness | |
US9824002B2 (en) | Tracking of code base and defect diagnostic coupling with automated triage | |
Arisholm et al. | Predicting fault-prone components in a java legacy system | |
Shang et al. | Automated detection of performance regressions using regression models on clustered performance counters | |
CN108388489B (zh) | 一种服务器故障诊断方法、***、设备及存储介质 | |
Raemaekers et al. | An analysis of dependence on third-party libraries in open source and proprietary systems | |
CN109308225B (zh) | 一种虚拟机异常检测方法、装置、设备及存储介质 | |
CN110990575B (zh) | 测试用例失败原因分析方法、装置及电子设备 | |
KR100987124B1 (ko) | 메트릭을 이용한 소프트웨어 결함 예측 계산 장치 및 계산 방법 | |
Zhao et al. | An empirical analysis of package-modularization metrics: Implications for software fault-proneness | |
Kanashiro et al. | Predicting software flaws with low complexity models based on static analysis data | |
Nagappan et al. | Preliminary results on using static analysis tools for software inspection | |
CN115952081A (zh) | 一种软件测试方法、装置、存储介质及设备 | |
US20150089481A1 (en) | Methods, systems and computer-readable media for quantifying a bug detection efficiency of a bug prediction technique | |
CN116954624B (zh) | 基于软件开发包的编译方法、软件开发***及服务器 | |
KR102461180B1 (ko) | 소프트웨어 안전성 분석 방법 및 장치 | |
CN115114124A (zh) | 主机风险的评估方法及评估装置 | |
Stringfellow et al. | Estimating the number of components with defects post‐release that showed no defects in testing | |
KR102426581B1 (ko) | 전장용 소프트웨어 안전성 분석 방법 및 장치 | |
Liu et al. | Change point software belief reliability growth model considering epistemic uncertainties | |
KR101675986B1 (ko) | 전장용 소프트웨어 안전성 분석 방법 및 장치 | |
CN114021514A (zh) | 一种spice电压或温度扫描仿真筛选瓶颈单元的方法 | |
Dash et al. | Maintainability Measurement in Object Oriented Paradigm. | |
CN113919609A (zh) | 一种配电网模型质量综合评估方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20131008 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140923 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |