계층형 아키텍처 스타일

From CS Wiki
Layered Software Architecture Style; Layered Software Architecture Pattern
특정 추상 레벨에 있는 서브태스크들끼리 서로 묶어서 하나의 그룹으로 분류하는 소프트웨어 아키텍처 스타일
  • 하위 수준의 이슈를 상위 수준에 이슈와 분리시켜 소프트웨어의 재사용성을 높여주는 패턴

계층형 아키텍처 스타일 예시[edit | edit source]

계층형 아키텍처 스타일 예시.png

장단점[edit | edit source]

구분 내용
장점
  • 계층별 연동을 한정할 수 있어 Loosely coupled 원칙을 지킬 수 있음
  • 변화에 대한 영향력을 한정할 수 있어 코딩이나 테스트를 계층별로 진행할 수 있음
  • 인터페이스 정의가 잘 되어 있다면 계층을 통째로 교체할 수 있음
  • 모듈의 재사용성을 높여 유지보수성이나 이식성이 좋은 패턴임
단점
  • 계층의 원칙을 지키기 위해 각 계층을 모두 거쳐야 하므로 성능 측면에 불이익을 받을 수 있음
  • 계층을 구분하기 어렵고 잘못 구분할 경우 설계 수정이 빈번히 발생할 수 있음
  • 계층의 적절한 개수 및 규모를 정의하는 것이 어려움

설계 순서[edit | edit source]

계층형 아키텍처 스타일 설계 예시.png

  1. 계층 별로 모듈을 묶는 추상 기준을 정의
  2. 추상기준에 따라 계층을 몇 레벨로 나눌지 결정
  3. 계층마다 역할 및 태스크 부여
  4. 계층별 제공서비스를 상세히 정의
  5. 계층별 상세 인터페이스 정의
  6. 시스템 기능이 계층에서 동작하는 것이 가능한지 확인
    • (예: 유스케이스 시나리오를 시뮬레이션 하는 방식)
  7. 계층 내부에 대한 구조 정의
  8. 인접한 계층 간의 통신 방식 정의
  9. 예외 처리 방식을 정의

같이 보기[edit | edit source]

참고 문헌[edit | edit source]

  • 소프트웨어 아키텍처 패턴 가이드, SW공학센터