태그 보관물: 관심사의 분리

관심사의 분리

관심사의 분리(SoC; Separation of Concerns)

애플리케이션을 서로 겹치지 않는 개별 단위로 나누는 과정을 말하며, 각각은 자체적인 경계를 지닌다. 관심사는 피처(feature), 기능, 관심정보, 데이터, 프로세스일 수 있다.

관심사의 분리가 유용한 이유는 한 영역이 다른 영역과 격리되기 때문에 다른 영역에 영향을 주지 않고도 변경할 수 있다는 것이며, 애플리케이션의 전체적인 유지보수가 용이해진다.

변경이 지역화되기 때문에 디버그, 문제 격리와 식별이 용이해지고, 코드 중복이 줄어들이 코드 재사용이 증진된다.

관심사의 구현으로 메서드, 클래스, 패키지, 컴포넌트, 폴더 계층구조, 계층, 티어, 라이브러리, 설치 프로그램, 테이블, 데이터베이스, 애플리케이션, 서비스가 있다.

관심사의 분리의 실제 사례로는 HTML/CSS/자바스크립트의 분리와 MVC 패턴이 있다.

관심사는 기능적/비기능적, 시간, 위치, 특수화/일반화, 목적에 따라 분리할 수 있다.

관심사의 분리에 사용되는 전략

  • 피처와 어스펙트(features and aspects)
  • 티어와 계층(tiers and layers)
  • 단계적 정제(stepwise refinement)
  • 모듈화(modularization)

출처: SOFTWARE DESIGN PRINCIPLES