관심사의 분리

최근 편집: 2017년 7월 31일 (월) 16:33

관심사의 분리(separation of concerns)는 컴퓨터 프로램을 ‘관심사’에 따라 분리하여 작성하는 설계 원칙을 이르는 전산학 및 소프트웨어 공학 분야의 용어이다.

관심사에 따라 잘 분리된 프로그램은 복잡성이 낮아져서 이해하기 쉽고 확장이 용이해지기 때문에 관리가능성이 높아진다.

웹에서의 관심사 분리

HTMLCSS는 관심사의 분리가 잘 적용된 사례 중 하나이다. HTML은 문서의 내용, 구조, 의미에 대해서만 기술하고 문서를 어떻게 보여줄 것인지에 대해 되도록 기술하지 않는다. 반대로 CSS는 문서를 어떻게 보여줄 것인지에 대해서만 기록하고 문서의 내용이나 의미 등에 대해서는 적지 않는다.

이렇게 분리하면 동일한 문서를 상황에 맞게 달리 표현하거나(모바일 기기에서와 데스크탑에서의 차이, 화면에 보여줄 때와 시각장애인을 위해 읽어줄 때의 차이, 화면에 보여줄 때와 종이에 인쇄했을 때의 차이 등), 반대로 서로 다른 문서를 동일한 형태로 보여주는 식으로 자유롭게 혼합할 수 있다.

다차원적 관심사 분리

시스템을 바라보는 관점은 다양할 수 있기 때문에 시스템을 나누는 기준 또한 다양할 수 있다. 특정 기준에 의해 관심사를 분리할 경우 다른 기준에서의 관심사들은 흩어지게 된다. 이런 식으로 흩어진 관심사를 횡단적 관심사(cross-cutting concerns)라 부른다.

관점 지향 프로그래밍에서는 전통적인 모듈화 방식에 의해 발생하는 횡단적 관심사 문제를 다루기 위해 관점(aspects)이라는 개념을 도입하여 다차원적 관심사 분리(multi-dimensional separation of concerns)를 가능하게 한다. 관점에 따라 모듈화된 코드들은 컴파일시 또는 실행시에 적절히 엮여서 완성된 프로그램이 된다. 이러한 과정을 관점 엮기(aspect weaving)라고 부른다.