소프트웨어 재사용 성공 예측을 위한 분류 기법 평가
초록
본 논문은 소프트웨어 재사용 가능성을 성공·실패로 구분하기 위해 여러 머신러닝 분류 기법을 비교·평가한다. 코드 복잡도, 결합도, 문서화 수준 등 15개의 정량적 메트릭을 수집한 1,200개의 오픈소스 컴포넌트를 대상으로 데이터 전처리, 특성 선택, 10‑fold 교차 검증을 수행하였다. 결정트리, 랜덤포레스트, 서포트벡터머신, 인공신경망, 나이브베이즈 등 5가지 알고리즘의 정확도, 정밀도, 재현율, F1‑스코어를 비교한 결과, 랜덤포레스트가 87 %의 전체 정확도와 0.84의 F1‑스코어로 가장 우수한 성능을 보였다. 연구 결과는 재사용 가능성 예측 모델 구축에 실용적인 가이드를 제공한다.
상세 분석
본 연구는 소프트웨어 재사용 성공 여부를 사전에 예측함으로써 재사용 전략 수립과 비용 절감을 지원하고자 한다. 데이터 수집 단계에서는 GitHub와 Apache 저장소에서 추출한 1,200개의 모듈을 대상으로 15개의 정량적 메트릭(예: 라인 수, 사이클 복잡도, 클래스 수, 메서드 수, 응집도, 결합도, 테스트 커버리지, 문서 길이, 버전 히스토리 등)을 자동화 스크립트를 이용해 추출하였다. 이후 결측값을 평균값으로 대체하고, 각 메트릭을 Z‑score 정규화하여 스케일 차이를 제거하였다. 특성 선택은 상관관계 분석과 L1 정규화를 결합한 방법으로 수행했으며, 최종적으로 9개의 핵심 특성이 모델 입력으로 채택되었다.
분류 알고리즘으로는 전통적인 결정트리(C4.5), 앙상블 기반 랜덤포레스트, 커널 기반 서포트벡터머신(RBF 커널), 다층 퍼셉트론(2‑hidden layer, ReLU 활성화), 그리고 확률 기반 나이브베이즈를 선택하였다. 각 모델은 동일한 10‑fold 교차 검증 프로토콜을 적용했으며, 클래스 불균형 문제를 해결하기 위해 SMOTE를 이용한 오버샘플링을 수행하였다. 평가 지표는 정확도 외에도 정밀도, 재현율, F1‑스코어, ROC‑AUC를 포함하였다.
실험 결과, 랜덤포레스트가 전체 정확도 87 %와 ROC‑AUC 0.91을 기록하며 가장 높은 성능을 보였다. 서포트벡터머신은 정밀도 0.81에 비해 재현율이 0.68으로 다소 편향된 경향을 보였으며, 인공신경망은 학습 데이터에 과적합되는 현상이 관찰되어 검증 세트에서 성능이 약간 감소하였다. 나이브베이즈는 가장 낮은 정확도 71 %와 F1‑스코어 0.69를 기록했으며, 이는 메트릭 간 독립성 가정이 현실과 크게 차이기 때문으로 해석된다.
또한 특성 중요도 분석을 통해 결합도, 테스트 커버리지, 문서화 수준이 재사용 성공을 예측하는 데 가장 큰 영향을 미치는 변수임을 확인하였다. 이러한 인사이트는 개발 팀이 재사용 가능성을 높이기 위해 코드 구조와 문서 품질을 개선하는 데 실질적인 지침을 제공한다. 연구의 한계로는 데이터가 오픈소스 프로젝트에 국한되어 있어 상용 소프트웨어에 대한 일반화 가능성이 제한적이며, 메트릭 선택이 기존 연구에 의존했기 때문에 새로운 품질 지표를 포함하지 못했다는 점을 들 수 있다. 향후 연구에서는 산업 현장 데이터를 확보하고, 딥러닝 기반 시계열 모델이나 그래프 신경망을 적용하여 복합적인 의존 관계를 더 정밀하게 모델링하는 방안을 제시한다.