소프트웨어 아키텍처의 4+1 뷰 모델
건물의 아키텍처를 구조, 배관, 전기 등의 관점에서 바라보듯이, 애플리케이션 아키텍처를 바라보는 관점도 다양합니다. 필립 크러첸(Phillip Krutchen)은 소프트웨어 아키텍처가 4+1 뷰 모델이라고 기술한 전설적인 논문을 한 편 발표했습니다(<아키텍처 청사진–소프트웨어 아키텍처의 ‘4+1’ 뷰 모델(Architectural Blueprints-The ‘4+1’ View Model of Software Architecture)>7). 4+1 모델은 소프트웨어 아키텍처를 바라보는 상이한 4뷰를 정의합니다. 각 뷰는 아키텍처의 특정한 측면을 기술하고 특정 소프트웨어 엘리먼트와 그들 사이의 관계로 구성됩니다(그림 2-1).
각 뷰의 목적은 다음과 같습니다.
• 논리 뷰(logical view): 개발자가 작성한 소프트웨어 엘리먼트. 객체 지향 언어라면 클래스, 패키지가 해당되며 결국 상속(inheritance), 연관(association), 의존(depends-on) 등 클래스와 패키지의 관계를 말합니다.
• 구현 뷰(implementation view): 빌드 시스템의 결과물. 모듈(패키징된 코드)과 컴포넌트(하나 이상의 모듈로 구성된 실행/배포 가능 단위)로 구성됩니다. 자바에서 모듈은 보통 JAR 파일, 컴포넌트는 WAR 파일이나 실행 가능한 JAR 파일입니다. 모듈 간 디펜던시와 컴포넌트/모듈 간 조합 관계도 이 뷰에 포함됩니다.
• 프로세스 뷰(process view): 런타임 컴포넌트. 각 엘리먼트는 개별 프로세스고, IPC는 프로세스 간 관계를 나타냅니다.
• 배포 뷰(deployment view): 프로세스가 머신에 매핑되는 방법. 이 뷰의 엘리먼트는 (물리 또는 가상) 머신 및 프로세스고, 머신 간의 관계가 바로 네트워킹입니다. 프로세스와 머신 사이의 관계도 이 뷰에서 기술됩니다.