소프트웨어 인지 복잡도와 변수 스코프 기반 측정 모델
초록
본 논문은 프로그램을 현재 문과 이전 문 사이의 이진 관계 집합으로 모델링하고, 변수 스코프에 따른 정보 복잡도 수치(SICN)를 정의한다. 이를 기반으로 기능 분해 기반 인지 복잡도 지표를 제시하며, 제9개의 Weyuker 속성을 통해 이론적 타당성을 검증한다.
상세 분석
이 연구는 프로그램 구조를 “현재 문(statement)과 이전 문 사이의 임베디드 이진 관계”라는 수학적 관점에서 재정의한다. 기존의 제어 흐름 그래프(CFG)나 데이터 흐름 분석과 달리, 저자는 각 문을 시간 순서에 따라 이전 문들과 직접적인 관계를 맺는 집합으로 표현함으로써, 프로그램을 ‘조합된 리스트와 논리적 결합’으로 보는 새로운 패러다임을 제시한다. 이러한 모델링은 변수의 스코프(scope)를 명시적으로 고려한다는 점에서 차별화된다.
스코프 정보 복잡도 수치(SICN)는 변수의 선언·할당·사용이 발생하는 스코프 레벨을 정량화한다. 구체적으로, 변수의 생애 주기 동안 스코프가 변할 때마다 SICN 값이 증가하고, 같은 스코프 내에서의 연산 횟수와 제어 구조(조건·반복)의 복합도도 가중치로 반영한다. 이 방식은 기존의 Cognitive Complexity가 제어 흐름에만 초점을 맞춘 반면, 데이터(변수) 관점과 스코프 변화를 동시에 고려함으로써 인간이 코드를 이해할 때 겪는 인지 부하를 보다 정밀하게 모델링한다는 장점을 가진다.
논문은 제시된 복잡도 지표가 Weyuker의 9가지 속성을 모두 만족함을 증명한다. 특히, “동일한 기능을 수행하는 프로그램이라도 구조가 다르면 복잡도가 달라야 한다”(속성 5)와 “프로그램을 부분적으로 결합했을 때 전체 복잡도가 부분 복잡도의 합보다 크게 증가할 수 있다”(속성 8)를 만족시키기 위해, 함수 단위의 기능 분해와 스코프 기반 SICN을 결합한 점이 핵심이다.
하지만 몇 가지 한계도 존재한다. 첫째, SICN 계산에 필요한 스코프 추적이 정적 분석 도구 구현 시 복잡도를 크게 증가시킬 수 있다. 둘째, 변수 스코프 외에 객체 지향 언어의 캡슐화, 상속, 다형성 등 고급 메커니즘을 어떻게 반영할지에 대한 구체적 가이드가 부족하다. 셋째, 실험적 검증이 부재하여 실제 프로젝트에 적용했을 때의 상관관계와 효용성을 확인하기 어렵다. 이러한 점들은 향후 연구에서 정량적 실증 연구와 도구화 작업을 통해 보완될 필요가 있다.
전반적으로, 프로그램을 이진 관계 집합으로 보는 수학적 모델과 스코프 기반 SICN 도입은 인지 복잡도 측정에 새로운 시각을 제공한다. 특히, 기능 분해와 스코프 변화를 동시에 고려함으로써 기존 지표가 놓치기 쉬운 ‘데이터 흐름에 따른 인지 부하’를 포착한다는 점에서 학술적·실무적 의의가 크다.