Software Architecture 4+1 View

필립 크루첸(Philippe Kruchten)이 1995년에 제안한 이 모델은, 복잡한 소프트웨어 아키텍처를 단 하나의 관점이 아닌 '서로 다른 4개의 관점'과 이들을 검증하고 연결하는'1개의 핵심 관점(유스케이스)'으로 설명하는 프레임워크입니다.

1. 4+1 뷰 모델의 상세 구조

아키텍처 문서는 이해관계자(Stakeholder)마다 보고 싶어 하는 정보가 다르므로 이를 만족시키기 위해 뷰를 분리한 것

 

이미지출처 : https://thebook.io/007035/0073/

 

논리 뷰 (Logical View)

  • 핵심 : 시스템이 사용자에게 어떤 기능(Functional Requirements)을 제공하는가?
  • 관점 : 최종 사용자(End-User)의 관점
  • 내용 : 시스템의 기능적 요구사항을 클래스, 객체, 관계 등으로 추상화하여 표현
  • 설계 : 클래스 다이어그램, 시퀀스 다이어그램 등을 주로 사용

프로세스 뷰 (Process View)

  • 핵심 : 시스템이 어떻게 동작(Behavior)하며, 성능과 동시성(Concurrency)을 어떻게 처리하는가?
  • 관점 : 시스템 통합자(Integrator), 개발자
  • 내용 : 스레드(Thread), 프로세스(Process)의 통신, 동기화, 성능, 가용성 같은 비기능적 요구사항을 다룸
  • 설계 : 상태 다이어그램, 활동 다이어그램

구현 뷰 (Implementation View) = 개발 뷰 (Development View)

  • 핵심 : 소프트웨어가 개발 환경 안에서 어떻게 구성되는가?
  • 관점 : 프로그래머(Programmer), 소프트웨어 관리자
  • 내용 : 소스 코드, 라이브러리, 컴포넌트, 서브시스템의 정적인 구조와 의존성 관리, 빌드 순서
  • 설계 : 컴포넌트 다이어그램, 패키지 다이어그램

배포 뷰 (Deployment View) = 물리 뷰 (Physical View)

  • 핵심 : 소프트웨어가 어떤 하드웨어에 설치되고 매핑되는가?
  • 관점 : 시스템 엔지니어(System Engineer), 운영자
  • 내용 : 물리적인 노드(서버, 프로세서)와 그 위에 실행되는 소프트웨어 컴포넌트의 매핑, 네트워크 토폴로지
  • 설계 : 배포 다이어그램

(+1) 유스케이스 뷰 (Use Case View) = 시나리오 뷰

  • 핵심 : 시스템이 실제로 어떻게 사용되는가? (모든 뷰의 기준)
  • 관점 : 모든 이해관계자 (사용자, 설계자, 개발자, 테스터)
  • 역할 : 앞선 4가지 뷰가 서로 충돌하지 않고 일관성을 가지는지 검증(Validation)하고 주도(Driver)하는 역할
              다른 뷰들을 도출해내는 원천

2. 핵심 매핑 테이블

뷰(View) 주 이해관계자 핵심 관심사 (Focus) 관련 UML 다이어그램 (대표) 성격
논리 뷰 최종 사용자 기능적 요구사항 클래스, 객체, 시퀀스, 상태 기능 중심
프로세스 뷰 시스템 통합자 성능, 동시성, 스레드 활동, 상태 비기능(성능)
구현(개발) 뷰 프로그래머 SW 모듈 구성, 빌드 관리 컴포넌트, 패키지 정적 구조
배포(물리) 뷰 시스템 엔지니어 HW 매핑, 토폴로지, 통신 배포 물리적 구조
유스케이스 뷰 모든 이해관계자 아키텍처 검증, 시나리오 유스케이스 통합/검증

 

3. 기출 포인트 & 오답 함정 피하기

용어 혼동 주의

  • 구현 뷰는 '개발 뷰'라고도 불림 (코드 관리 관점)
  • 배포 뷰는 '물리 뷰'라고도 불람 (하드웨어 관점)

기능 vs 비기능

  • 논리 뷰는 철저히 기능(Functionality)에 집중
  • 프로세스 뷰는 성능, 처리량, 동시성 같은 비기능(Non-functional) 품질 속성에 집중

유스케이스 뷰의 위상

  • 유스케이스 뷰는 나머지 4개 뷰와 병렬적인 관계가 아님
  • 나머지 4개 뷰를 도출하고, 이들이 잘 맞물려 돌아가는지 검증(Check)하는 중심축
  • "유스케이스 뷰는 다른 뷰를 주도(Drive)한다"는 표현이 나오면 맞는 말

UML 매핑

  • "컴포넌트 다이어그램은 어떤 뷰에서 주로 사용되는가?" ➡ 구현 뷰
  • "시스템의 비기능적 요구사항인 성능과 자원 효율성을 다루는 뷰는?" ➡ 프로세스 뷰