스프레드시트 리팩터링 기법
초록
본 논문은 소프트웨어 리팩터링 개념을 스프레드시트에 적용한 사례들을 제시한다. 데이터와 수식, VBA 코드가 밀접하게 얽힌 스프레드시트의 구조적 문제를 식별하고, 가독성·유지보수성을 높이면서 기능적 동작은 그대로 유지하는 작은 단위의 개편 방법을 정의한다.
상세 분석
스프레드시트는 전통적인 데이터베이스와 달리 셀 단위의 계산식, 이름 정의, 차트, 매크로(VBA) 등이 하나의 파일에 혼재한다. 이러한 특성은 리팩터링을 적용할 때 두 가지 핵심 제약을 만든다. 첫째, 셀 간 의존성이 복잡하게 얽혀 있어 하나의 수식을 변경하면 파급 효과가 광범위하게 나타난다. 둘째, VBA 모듈은 셀 주소를 하드코딩하거나 Range 객체를 직접 조작함으로써 코드와 데이터가 강하게 결합된다. 논문은 이러한 결합도를 낮추기 위한 ‘스프레드시트 리팩터링’ 패턴을 제시한다.
대표적인 패턴으로는 (1) 수식 분리가 있다. 복잡한 수식을 여러 개의 보조 셀로 분할하고, 이름 정의를 활용해 의미를 명시함으로써 가독성을 향상한다. (2) 범위 추상화는 동적 범위 이름을 사용하거나 테이블 객체로 전환해 셀 주소 의존성을 제거한다. 이는 삽입·삭제 시에도 수식이 자동으로 조정되게 만든다. (3) 중복 제거는 동일한 계산 로직을 여러 셀에 복제하는 대신 공통 함수를 정의하거나 VBA 사용자 정의 함수를 도입해 중복을 최소화한다. (4) 매크로 모듈화는 VBA 코드를 기능별 클래스로 나누고, 전역 변수 대신 파라미터 전달 방식을 채택한다. 이렇게 하면 테스트와 디버깅이 용이해진다.
또한 논문은 리팩터링 전후의 ‘관측 가능한 행동’이 동일함을 검증하기 위한 자동화된 회귀 테스트 기법을 제안한다. 스프레드시트의 셀 값, 차트 데이터, 매크로 실행 결과를 스냅샷으로 저장하고, 리팩터링 후 동일한 입력에 대해 결과가 일치하는지 비교한다. 이 과정에서 테스트 커버리지를 높이기 위해 ‘데이터 시나리오 생성기’를 활용해 다양한 입력 조합을 자동 생성한다.
리팩터링 적용 시 고려해야 할 위험 요소도 논의된다. 예를 들어, 이름 정의를 재구성하면서 기존 외부 링크가 깨질 수 있고, VBA 코드에서 셀 주소를 문자열로 조합하는 경우 문자열 파싱 오류가 발생할 가능성이 있다. 이러한 위험을 최소화하기 위해 단계적 적용, 버전 관리, 그리고 변경 로그를 상세히 기록하는 것이 권장된다.
결과적으로, 스프레드시트 리팩터링은 전통적인 소프트웨어 리팩터링 원칙—가독성, 재사용성, 테스트 가능성—을 스프레드시트 환경에 맞게 재해석한 것이다. 논문은 실제 기업 현장에서 적용한 사례를 통해 생산성 향상과 오류 감소 효과를 입증한다.
댓글 및 학술 토론
Loading comments...
의견 남기기