계층화는 다음과 같은 이점이 있습니다.
-
계층으로 IT 시스템에 대한 변경성 및 이식성의 품질 속성을 가져올 수 있습니다. 해당 인터페이스에 영향을 주지 않는 하위 계층으로 변경하는 경우 상위 계층으로의 변경이 필요하지 않습니다. 예를 들어,
J2EE™ 표준을 따르는 모든 J2EE™ 규격 응용프로그램 서버는 응용프로그램 레벨의 소프트웨어로 변경하지 않고 자유롭게 대체할 수 있습니다. 하위 계층에서 필요로 하는 설비에 영향을 주지 않는 상위
계층으로 변경하는 것은 하위 계층에 영향을 주지 않습니다. 일반적으로, 인터페이스에 영향을 주지 않는 계층화된 소프트웨어 시스템으로 변경하는 것은 단일 계층에 한정됩니다.
-
계층은 시스템을 구성하는 아키텍처의 청사진 역할의 일부입니다. 소프트웨어가 있는 계층을 인식하는 경우, 개발자는 그들이 코드 환경에서 의존할 수 있는 역할도 인식합니다. 계층은 개발 팀의 작업 지정을 정의할
수 있습니다(항상 그렇지는 않음).
-
계층은 아키텍처에서 수행하는 통신 역할의 일부입니다. 대규모 시스템에서 모듈 간 종속성의 수는 빠르게 증가합니다. 소프트웨어를 인터페이스가 있는 계층으로 조직하는 것은 복잡도를 관리하고 구조를 개발자에게
전달하는 중요한 도구입니다.
-
계층은 아키텍처의 분석 역할 수행에 도움이 됩니다. 이 계층은 디자인 변경의 영향을 분석하는 데 사용 가능합니다.
계층화는 엄격하거나 엄격하지 않을 수 있습니다. 엄격한 계층화 구성표는 컴포넌트가 동일한 계층 또는 바로 그 아래 계층에 있는 컴포넌트를 사용할 수 있음을 의미합니다. 엄격하지 않은 계층화 구성표는 컴포넌트가
동일하거나 모든 하위 계층에 있는 컴포넌트를 사용할 수 있음을 의미합니다. 하지만, 일반적인 규칙에 따르면 컴포넌트가 상위 계층에 있는 컴포넌트를 사용할 수 없습니다. 컴포넌트에 상위 계층 컴포넌트에
대한 종속성이 있는 경우, 하위 계층 컴포넌트를 변경하지 않고 상위 계층 컴포넌트를 바꾸는 것은 어렵습니다. 모델링 계층에 필요한 기법을 포함한 자세한 정보는 개념: 솔루션 파티션을 참조하십시오.
소프트웨어 계층을 기록할 중요한 지점은 계층과 동일하지 않습니다. 분배된 환경의 시스템에 대한 할당, 요소 간의 데이터 플로우 및 통신 채널의 존재 및 사용 모두가 계층 다이어그램에서 식별할 수 없는 계층 그림에
표현됩니다. 계층 다이어그램은 특정 정렬의 양방향 통신을 표시하는 두 방향 화살표를 보여줍니다. 양방향(대칭) 통신은 계층 다이어그램에 좋은 영향을 주지 않습니다. 더구나 오퍼레이션 아키텍처 정의 시 계층에 대한
컴포넌트의 지정이 배치 규칙을 기반으로 하며 시스템의 필수 서비스 레벨 특성에서 정의됩니다. 계층화 다이어그램과 계층 그림 간의 주요 차이점은 전자에는 배치 개념이 없는 반면 후자에는 분명하게 있다는 것입니다.
경험에 의한 규칙 계층화
-
응용프로그램 독립 비즈니스 기능성을 제공하는 모든 컴포넌트는 한 계층에 있습니다. 응용프로그램 독립 비즈니스 기능에는 "고객 관리" 및 "제품 관리" 등이 있어 여러 응용프로그램의 범위에 적용할 수
있습니다.
-
기술적 기능을 제공하는 모든 컴포넌트(예: 오류 처리, 인증, 로깅 및 감사)는 다른(논리) 계층에 있습니다. 이 컴포넌트는 비즈니스와 응용프로그램 모두에 독립적입니다. 경우에 따라, 기능적 컴포넌트에 대한
기술적 컴포넌트의 근접성으로 이 컴포넌트가 공통 계층에 위치할 필요가 있습니다. 이는 아키텍처 결정이며 그대로 문서화해야 합니다.
-
미들웨어 컴포넌트(예: 메시지 큐 및 관련 DBMS 소프트웨어)는 그 이상의 계층에 있습니다. 이것은 "패브릭"이라고 합니다.
예제
다음은 솔루션에 있는 여러 요소에 필요한 일반(권장) 계층을 표시하는 SOA의 계층화된 보기입니다.
이 계층화 구조표에서 컴포넌트가 있게 될 위치를 쉽게 인식하며, 아래에 표시된 대로 렌트카 예제의 관련 컴포넌트를 서비스 컴포넌트 계층에 배치합니다. 모델에 엄격한 계층을 채택하기 위하여 UML
컴포지션으로 서비스 컴포넌트 계층을 포함하며 포트가 서비스 컴포넌트와 같은 인터페이스를 제공하는 대표 포트를 사용하여 서비스 컴포넌트의 기능성만 공개합니다.
|