Monthly Archives: 12월 2005

Software Architecture Design with FMC – part 2

FMC 의 기본설명은 이전글인 Software Architecture Design with FMC – part 1을 참조하시기 바랍니다.

Compositional Structures – Block Diagram

블록 다이어그램은 기본적으로 시스템 구조를 그리는데 사용해왔던 형식입니다. FMC 에서는 정적인(Static) 시스템의 구조를
표현하는데 Block Diagram 을 사용합니다. Architectural View 로 본다면 Component & Connector 형태라고 볼수 있습니다.
(from Documenting Software Architecture : Views & Beyond )

아래는 Block Diagram 으로 나타낸 HTTP Server 의 Architecture 입니다.
HTTP Server Block Diagram with FMC

표현자체가 쉬우니 그냥 보셔도 대충 이해는 될수 있겠지만, 조금 이상한 표현들이 보이는군요.
그럼 완벽한 이해를 위해 각 Element 와 구조의 표현방법 들을 알아보도록 하겠습니다.

Active Component Active System Component를 나타냅니다. 왼편은 그냥 시스템 컴포넌트 , 사람표시가 있는건 Human Agent 입니다.
Passive Component Passive System Component를 나타냅니다. 왼편은 저장소(Storage)를 의미합니다. (Memory,Database,..)
Storage 는 Agent 에 의해 데이타를 저장하기 위해 사용됩니다. 추상화된 저장영역 일수도 있습니다.
작은 원은 채널(Channel)을 뜻하며 두개이상의 Agent 들이 Communication 하기 위해 사용되는 것을 말합니다.(메시지 버스, TCP/IP 소켓, 이벤트 , 파이프 ..)
Access Type 선들은 Access Type 을 나타냅니다. Agent 가 Storage 에 Read / Write 하는 방향에 따라 화살표가 붙게되며, 채널에 Read/Write 하는경우는
화살표가 양쪽에 붙기보다 화살표가 아예 없는 선으로 나타냅니다.
Read Write Agent A 가 Storage S에서 데이타를 읽어들입니다.

Agent A 가 Storage S에 데이타를 저장합니다.

Agent A 가 Storage S에 Read/Write 로 Data 를 Modify 합니다.

Uni-Bi direction 정보가 Agent A1 에서 Agent A2 로 만 흘러갈수 있습니다.

Agent A1 이 Agent A2 가 서로 채널을 통해 정보를 주고 받을수 있습니다.

Req Res Agent A1 이 Agent A2 로 요청(Request)를 보내면 A2 가 응답(Response)를 보냅니다.
(함수 호출이나 HTTP 의 Request/Response 같은 경우)

간략화된 버전으로 요청이 가는 방향만을 R▶ 와 같이 나타냅니다.

Shared Storage Agent A1 가 Agent A2 가 공유하는 저장소로서 서로 통신이 가능해 집니다. (Shared Memory,공유DB)
Structure Variance Structure Variance를 나타냅니다. 시스템 컴포넌트의 생성과 소멸을 나타내는 복합구성 입니다. A1이 A2 를 생성함으로써 점선으로 표시된 Storage를 수정하며, 생성된 A2 는 A1 과 통신하게 됩니다. 쓰레드 풀 같은 구조를 나타냅니다.

여기까지의 각 Element 설명을 보시고 다시 위의 HTTP Server 구조를 보시면 쉽게 이해가 되실것입니다.

Agent 와 Storage 라는 두개의 컴포넌트 만으로 나눴지만, 채널과 Accessing 하는 타입을 지정함으로써
시스템 전체 컴포넌트간의 정적인 구조를 표현하기 쉽고 , 이해가 빠르다는 장점을 가지고 있습니다.

참고로, Apache Modeling Project 에 나와있는 Apache 웹서버의 Unix 용 Multiprocessing/Multithreading 모델을
Block Diagram 으로 나타내면 다음과 같습니다.

Apache Worker MPM

참고 Reference

* 이글은 제가 관심이 있어서 찾아보다가 정리해본 문서입니다. 주관적인 내용이 담겨있을수 있으니 참고하시기 바랍니다. ^^
* 그리고 이글은 제 블로그의 저작권표시와는 별도로, 제 블로그외의 어느곳에도 전재를 금합니다.