가이드라인: 계층화
이 가이드라인은 시스템을 계층으로 구분하는 전략을 소개합니다.
관계
관련 요소
기본 설명

계층화 가이드라인

계층화를 통해 계층 사이에서 관계를 구성하는 방법에 대한 특정 규칙을 사용하여 여러 세트로 구분된 서브시스템 논리 파티션을 제공합니다. 계층화에서는 서브시스템 간 종속성을 제한하는 방법을 제공합니다. 결과적으로 시스템 연결이 더 느슨해지므로 시스템이 쉽게 유지보수됩니다.

서브시스템을 그룹화하는 기준은 다음과 같은 일부 패턴을 준수합니다.

  • 가시성. 서브시스템은 동일한 계층의 서브시스템 및 다음 하위 계층에만 종속될 수 있습니다.
  • 휘발성.
    • 최상위 계층에 사용자 요구사항이 변경되는 경우 달라지는 요소를 입력합니다.
    • 최하위 계층에 구현 플랫폼(하드웨어, 언어, 운영 체제, 데이터베이스 등)이 변경되는 경우 달라지는 요소를 입력합니다.
    • 중간 계층에, 구현 환경 및 넓은 시스템 범위에서 일반적으로 적용 가능한 요소를 입력합니다.
    • 이 넓은 카테고리 내부의 추가 파티션이 모델을 구성하는 데 도움이 되는 경우 계층을 추가합니다.
  • 일반성. 추상 모델 요소는 모델에서 더 낮은 위치에 놓입니다. 구현에 특정하지 않은 경우 중간 계층으로 내려갑니다.
  • 계층 수. 작은 시스템의 경우 세 개의 계층이면 충분합니다. 복잡한 시스템의 경우 보통 5 - 7개의 계층이면 충분합니다. 어떤 복잡도에서도 11개 이상의 계층이 표시되면 계층 수 증가를 의심해야 합니다. 다음은 몇 가지 경험에 따른 규칙입니다.

# 클래스 수

# 계층 수

0 - 10

계층화가 필요하지 않음

10 - 50

두 개의 계층

25 - 150

세 개의 계층

100 - 1000

네 개의 계층

특정 계층의 서브시스템 및 패키지는 동일한 계층 내부 서브시스템 및 다음 하위 계층에만 종속되어야 합니다. 이 방법으로 종속성을 제한하는 데 실패하면 아키텍처 성능이 떨어지고 시스템 유지보수가 어렵고 불안정해집니다.

예외적으로 서브시스템이 하위 계층 서비스에 직접 액세스해야 하는 경우가 있습니다. 시스템 전체에서 필요한 기본 서비스(예: 인쇄, 메시지 송신 등)를 처리하는 방법을 결정할 때 주의해야 합니다. 솔루션이 중간 계층에서 효과적으로 호출 통과(pass-through)를 구현하는 경우 하위 계층으로의 메시지를 제한하는 것은 별로 가치가 없습니다.

파티션 패턴

시스템의 상위 계층에서 추가 파티션은 모델을 조직하는 데 도움이 될 수 있습니다. 다음의 파티션 가이드라인에서는 고려할 다른 문제를 표시합니다.

  • 사용자 조직. 서브시스템은 비즈니스 조직에서 기능 조직을 반영하는 라인을 따라 조직될 수 있습니다(예: 파티션이 부서 라인을 따라 발생함). 기존 엔터프라이즈 모델에는 강력하게 조직적으로 파티션된 구조가 있으므로 종종 디자인 초반에 이 파티션이 나타납니다. 일반적으로 이 조직 패턴은 응용프로그램 특정 서비스의 상위 소수 계층에만 영향을 주고 디자인이 전개됨에 따라 사라집니다.
    • 사용자 조직 라인에 따라 파티션을 수행하면 모델의 좋은 시작점이 될 수 있습니다.
    • 사용자 조직의 구조는 비즈니스 재구성 때문에 장기간 안정적이지 않으므로 시스템 파티션의 장기간 기초로는 적합하지 않습니다. 시스템의 내부 조직을 통해 시스템이 지원하는 비즈니스 조직과는 별도로 시스템을 전개하고 유지보수할 수 있습니다.
  • 역량 및/또는 스킬의 영역. 서브시스템은 부서 조직 내부의 다양한 그룹 가운데 모델 파트에 해당하는 책임을 파티션하도록 조직될 수 있습니다. 보통 이는 시스템의 중간 및 하위 계층에서 나타나며 복잡한 하부 구조 기술에 대한 지원 및 개발 중 스킬의 전문화에 대한 요구를 반영합니다. 이러한 기술의 예제로 특히 네트워크 및 분배 관리, 데이터베이스 관리, 통신 관리 및 프로세스 제어가 포함됩니다. 역량 라인에 따른 파티션은 주요 비즈니스 기능을 이해하고 지원하기 위해 문제점 도메인의 특별 역량이 필요한 상위 계층에서 나타날 수 있습니다. 예를 들어 원격 통신 호출 관리, 증권 거래, 보험 청구 처리 및 항공 교통 관제 등이 있습니다.
  • 시스템 분배. 시스템 계층 내부에서 계층은 실제 기능의 분배를 반영하도록 "수평적"으로 추가 파티션될 수 있습니다.
    • 분배를 반영하는 파티션은 시스템을 실행할 때 나타나는 네트워크 통신을 시각화하는 데 도움이 될 수 있습니다.
    • 그러나 배치 모델이 크게 변하는 경우 분배를 반영하는 파티션 때문에 시스템 변경이 어려워질 수 있습니다.
  • 비밀 영역. 일부 응용프로그램, 특히, 개발 및/또는 지원 시 필요한 특수 보안 등급에서는 보안 액세스 특권 라인에 따라 추가 파티션을 수행해야 합니다. 비밀 영역에 대한 액세스를 제어하는 소프트웨어는 적절한 등급의 개인이 개발 및 유지보수해야 합니다. 프로젝트에 대해 이러한 배경을 갖는 인원 수가 제한되는 경우, 특수 등급이 필요한 기능은 다른 서브시스템과 별도로 개발되는 서브시스템에 파티션해야 합니다. 이는 서브시스템의 유일한 가시적 측면인 비밀 영역으로의 인터페이스를 가집니다.
  • 변동 영역. 선택사항일 가능성이 높아서 일부 시스템 변형에서만 제공하는 기능성은 시스템의 필수 기능성과는 별도로 개발 및 전달되는 독립적인 서브시스템으로 구성되어야 합니다.