소프트웨어 진화와 메트릭에 대한 아이리스 접근
초록
아이리스(Iris) 접근법은 객체지향 소프트웨어의 진화 과정에서 코드 규모와 복잡도가 지속적으로 증가한다는 가설을 검증하기 위해, 소프트웨어 변종들을 자동으로 수집·분석하고 새로운 성장·복잡도 메트릭을 제시한다. 그림‑쉐이프, Rhino, Mobile Media, ArgoUML 등 네 개 프로젝트의 다수 릴리즈에 적용한 실험 결과, LOC, 클래스·메서드 수, 상속·메서드 호출·속성 접근 등 다양한 메트릭이 시간에 따라 증가함을 확인하였다.
상세 분석
아이리스는 기존 연구가 주로 레만(Lemann) 법칙을 검증하거나 단일 시스템의 버전을 비교하는 데 머물렀던 점을 보완한다. 논문은 “소프트웨어 변종(variants)”이라는 개념을 도입해, 동일 프로젝트의 여러 릴리즈를 독립적인 변종으로 취급하고, 각 변종에 대해 정적 코드 분석을 수행한다. 분석 대상은 패키지·클래스·속성·메서드와 이들 간의 의존관계(상속, 메서드 호출, 속성 접근)이며, 이를 기반으로 13개의 메트릭을 추출한다. 기존 LOC, 클래스 수, 메서드 수 외에 새롭게 제안된 메트릭은 식별자 총수(NOID), 공용 메서드 수(NOPM), 정적 메서드 수(NOSM), 상속 관계 수(NOIR), 속성 접근 수(NOAA), 메서드 호출 수(NOMI) 등이다.
실험 설계는 네 개의 오픈소스 프로젝트를 선택했는데, 각각 규모가 다르다(ArgoUML‑대형, Rhino‑중형, Mobile Media‑소형, Drawing Shapes‑소형). 각 프로젝트는 초기 릴리즈부터 최신 릴리즈까지 3~16개의 버전을 포함한다. 메트릭 수집 결과는 모든 프로젝트에서 전반적인 성장 추세를 보였다. 예를 들어 Drawing Shapes는 LOC가 386에서 448로 16 % 증가했으며, 메서드 호출 수는 99에서 139로 40 % 상승했다. Rhino는 16버전에 걸쳐 LOC가 20 k에서 42 k로 두 배 이상 늘었고, 상속 관계와 메서드 호출도 지속적으로 증가했다.
아이리스는 메트릭 매트릭스를 구성해 버전별 메트릭을 행렬 형태로 정리하고, 이를 시각화(차트)하여 성장·복잡도 변화를 직관적으로 보여준다. 논문은 또한 기존 연구와의 차별점을 강조한다. 레만 법칙을 직접 검증하지는 않지만, 레만이 제시한 “지속적 변화·성장·복잡도”를 메트릭 수준에서 실증한다는 점에서 의미가 있다. 또한 기존 연구가 단일 시스템에 한정된 메트릭(예: CBO, DIT)만을 사용했던 반면, 아이리스는 코드 구조와 동적 의존성을 포괄하는 메트릭을 도입해 보다 풍부한 진화 양상을 포착한다.
한계점으로는 정적 분석에 의존해 런타임 동작이나 비기능적 변화(성능, 보안)까지는 반영하지 못한다는 점, 그리고 메트릭 간 상관관계 분석이 부족해 어느 메트릭이 복잡도 상승을 가장 잘 설명하는지 명확히 제시되지 않은 점을 들 수 있다. 향후 연구에서는 메트릭 가중치 모델링, 머신러닝 기반 예측, 그리고 레만 법칙과의 정량적 연계 등을 제안한다.
댓글 및 학술 토론
Loading comments...
의견 남기기