- 미 소프트웨어 공학 연구소의 소프트웨어 아키텍처 뷰 모델
Module, Component & Connector, Allocation 3가지 관점으로 아키텍처 서술
구성
Module Structure(View)
- 모듈은 시스템의 주요한 구현 단위(implementation unit)이며, 각 모듈들은 기능적 책임을 갖는다.
- 분할(Decomposition) : 하나의 모듈이 보다 작은 모듈들로 분해된다.
- 사용(Uses) : 사용구조의 unit들은 서로 uses 관계로써 연관되며, 사용 구조는 기능 추가를 위해 쉽게 확장이 가능한 공학 시스템에 사용된다. 사용구조의 시스템은 증분적(incremental) 개발이 용이하다.
- 레이어(Layered) : 레이어는 관련 기능성의 coherent한 집합이다. 이 경우 Layer n은 Layer n-1의 서비스만을 사용(use)할 수 있다.
- 클래스(Class) 또는 일반화(Generalization): 일반화 구조에서의 모듈 유닛을 클래스라 지칭한다. 이 구조는 유사한 행위나 능력의 집합에 관한 이론을 지원한다.
Component and Connector Structure(View)
- 런타임 컴포넌트와 커넥터로 시스템의 실행단위를 기술한다.
- Pipe-and-Filter: 데이터 스트림을 연속적으로 변환한다.
- 공유 데이터(Shared Data, or repository): 이 구조는 영구적인 데이터를 생성, 저장, 접근하는 컴포넌트와 커넥터로 구성된다.
- 발행 구독(Publish-Subscribe): 이벤트의 공표를 통하여 컴포넌트들이 상호작용 한다.
- Client-Server : 이 구조에서는 클라이언트와 서버가 컴포넌트이며, 프로토콜과 메시지가 커넥터가 된다.
- Peer-to-Peer: 컴포넌트들이 동등한 입장에서 서비스를 교환하며 상호작용한다.
- 프로세스 통신(Communicating processes): 모든 C&C구조와 마찬가지로, 이 구조도 모듈 기반 구조와 orthogonal하며 구동(running) 시스템의 동적인 면을 다룬다. 이 구조에서는 프로세스나 쓰레드가 구성 유닛이 된다.
. Allocation Structure(View)
- 시스템의 소프트웨어 구성요소와 소프트웨어가 생성되고 실행되는 외부 환경사이의 관계를 기술한다.
- 배치(Deployment) : 배치 구조는 소프트웨어가 하드웨어와 통신 요소에 할당되는 내용을 나타낸다. 이 구조의 요소는 소프트웨어(주로 C&C 뷰에서의 프로세스), 하드웨어(프로세서), 통신 경로 등이다.
- 구현(Implementation) : 이 구조는 소프트웨어 요소(주로 모듈)와 시스템 개발, 통합, 형상관리 환경에서 파일 구조와의 맵핑 관계를 나타낸다.
- 작업 할당(Work assignment): 이 구조는 모듈의 구현 및 통합에 대한 책임을 적절한 개발 팀에 할당한다.