Software quality is determined by the degree of failures generated during operation. Software fails when the remaining software defects are activated. Therefore, the number of remaining defects is an important measure of software quality and developers have to eliminate and minimize the remaining defects to improve effectively the quality.
To minimize defects and improve software quality cost-effectively, there are two points to be specially considered. First, Defects have to be eliminated as early as possible after their birth. If any defects are introduced and passed to next development phase, the cost of finding and fixing them is highly increasing. Second, more concerns about the troublesome components must be paid because the errors tend to cluster to specific components rather than being evenly distributed.
Defect detection aims at finding software defects early in the development process to reduce the costs of removing defects and the number of operational failures at last. The prediction of troublesome components is to provide software managers with a forecast of the quality of the operational software, and to flag components for detailed validation whose predicated factor values are grater than the target values.
Error detection method and quality prediction model are well known to practitioners and researchers as a promising method to improve quality cost-effectively. However, there are two areas that have been neglected: comparative evaluations of software inspection with other error detection methods and qualitative quality prediction model using software inspection data.
In this dissertation, we conducted two inspection experiments for comparing inspection with various defect detection methods under the identical environment and with the same program. Analysis of these empirical data presents the error detection capability and cost-effectiveness among them. And we then suggest an efficient qualitative quality prediction method and evaluate it with the inspection data collected from the two experiments. The proposed method is based on fuzzy logic.
소프트웨어의 품질은 개발이 완료된 후 운영과정에서 발생하는 고장(Failure)의 정도에 따라 결정되는데, 고장(Failure)은 소프트웨어에 남아있던 오류(Defects)가 실행 중 활성화(Activate)되어 나타나는 현상이다. 따라서 소프트웨어의 품질을 효과적으로 높이기 위해서는 남아 있는 오류를 효율적으로 줄일 수 있는 방법이 모색되어야 한다.
오류를 줄여 품질을 높이려는 노력과 관련하여 산업체에서 널리 통용되고 있는 다음 사항을 고려해야 한다. 첫째, 오류가 만들어지면 가능한 한 빨리 찾아서 없애야 한다는 점이다. 오류가 만들어져서 다음 단계로 전이될 경우, 오류를 정정하는 비용이 크게 증가되기 때문이다. 둘째, 오류가 균등 분포하기 보다 특정 부분에 몰리는 경향이 있으므로, 문제 부품을 예측하여 집중 관리를 해야 한다.
오류를 검출하기 위한 여러 방법들이 제안되었다. 이중 가장 널리 사용되고 있는 오류 검출 방법으로는 테스팅, 보팅, 자체 검사(Instrumentation), 자료 흐름 분석(Data Flow Analysis), 인스펙션, 워크쓰루 등이 있다. 이들 방법들을 모두 적용하여 개발한다면 높은 품질의 소프트웨어를 얻을 수 있을 것이다. 그러나 현실적으로 한정된 자원과 시간, 비용 안에서 품질을 최대한 높이려면, 이들 방법 중 어느 방법이 가장 효과적인지를 가려낼 수 있는 객관적인 자료들이 필요하다. 하지만 동일한 조건에서 각 방법의 성능을 비교한 실험은 몇몇 실험에 불과하다.
소프트웨어 인스펙션은 테스팅이나 보팅이 코드가 만들어진 후에 적용할 수 있다는 점과 달리 모든 개발 단계에서 사용할 수 있다는 장점이 있다. 특히 요구 분석 단계와 설계 단계에서는 거의 모든 프로젝트에서 인스펙션을 적용하고 있고 적용 사례를 통해 많은 좋은 결과들이 보고되어 있다. 최근에는 인스펙션 데이터를 통계적으로 분석하여 단계별 개발 절차와 산출물을 향상시키고 결과적으로 소프트웨어의 생산성과 품질을 향상시키려는 노력들이 이루어지고 있다.
본 논문에서는 인스펙션과 다른 방법들과의 비교를 위해 서로 다른 두개의 프로그램을 대상으로 인스펙션을 실시하고, 그 결과들을 비교하였으며, 이 인스펙션 데이터를 이용하여 소프트웨어 부품의 품질을 자동으로 예측할 수 있는 모델을 제시하였다. 그리고 제안 모델에 대한 시제품을 구현하고, 위에서 실시한 인스펙션 실험의 데이터를 가지고 제안 모델을 검증하고 성능을 평가하였다.