본 논문은 영역지향 프로그래밍을 통해 소프트웨어의 복잡도 감소를 연구한 자료이다. 영역지향 프로그래밍은 관심사의 분리를 통해 소프트웨어의 핵심 로직과 부수적인 로직을 구분을 지어 관심사를 따로 관리한다. 소프트웨어에서 주된 역할을 하는 로직과 서브적인 역할을 하는 로직을 각각 핵심 관심 영역, 부수적 관심 영역으로 나눈다. 이렇게 분리된 관심사는 포인트컷과 어드바이스를 통해 에스팩트 위버가 소프트웨어 실행 중에 결합하는 행위를 하게 된다.
소프트웨어의 복잡도 측정에는 여러 가지 기준이 있다. 여기서는 아키텍처적인 요소인 디자인원칙과 코딩 요소인 리팩토링원칙 그리고 McCabe의 순환 복잡도를 토대로 하여 복잡도 감소 요인을 분석하고자 한다.
실험에 사용된 소프트웨어는 영역지향 프로그래밍을 적용하기에 앞서 설계가 잘된 객체지향 소프트웨어를 선별 하였다. 영역지향 프로그래밍의 적용 범위는 어떠한 패러다임을 따르는 언어론이라도 적용 할 수 있으며 이미 존재하는 레거시 소프트웨어든 새로 제작 될 소프트웨어든 어느 시점에서도 적용할 수 있다.
실험 결과를 바탕으로 영역지향 프로그래밍이 적용된 소프트웨어에서 더 명확한 디자인 원칙을 지켰으며 코드양의 감소뿐만이 아니라 McCabe 순환 복잡도 역시 크게 감소된 결과를 확인할 수 있었다.