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 입니다.
표현자체가 쉬우니 그냥 보셔도 대충 이해는 될수 있겠지만, 조금 이상한 표현들이 보이는군요.
그럼 완벽한 이해를 위해 각 Element 와 구조의 표현방법 들을 알아보도록 하겠습니다.
Active System Component를 나타냅니다. 왼편은 그냥 시스템 컴포넌트 , 사람표시가 있는건 Human Agent 입니다. | |
Passive System Component를 나타냅니다. 왼편은 저장소(Storage)를 의미합니다. (Memory,Database,..) Storage 는 Agent 에 의해 데이타를 저장하기 위해 사용됩니다. 추상화된 저장영역 일수도 있습니다. 작은 원은 채널(Channel)을 뜻하며 두개이상의 Agent 들이 Communication 하기 위해 사용되는 것을 말합니다.(메시지 버스, TCP/IP 소켓, 이벤트 , 파이프 ..) |
|
선들은 Access Type 을 나타냅니다. Agent 가 Storage 에 Read / Write 하는 방향에 따라 화살표가 붙게되며, 채널에 Read/Write 하는경우는 화살표가 양쪽에 붙기보다 화살표가 아예 없는 선으로 나타냅니다. |
|
Agent A 가 Storage S에서 데이타를 읽어들입니다.
Agent A 가 Storage S에 데이타를 저장합니다. Agent A 가 Storage S에 Read/Write 로 Data 를 Modify 합니다. |
|
정보가 Agent A1 에서 Agent A2 로 만 흘러갈수 있습니다.
Agent A1 이 Agent A2 가 서로 채널을 통해 정보를 주고 받을수 있습니다. |
|
Agent A1 이 Agent A2 로 요청(Request)를 보내면 A2 가 응답(Response)를 보냅니다. (함수 호출이나 HTTP 의 Request/Response 같은 경우) 간략화된 버전으로 요청이 가는 방향만을 R▶ 와 같이 나타냅니다. |
|
Agent A1 가 Agent A2 가 공유하는 저장소로서 서로 통신이 가능해 집니다. (Shared Memory,공유DB) | |
Structure Variance를 나타냅니다. 시스템 컴포넌트의 생성과 소멸을 나타내는 복합구성 입니다. A1이 A2 를 생성함으로써 점선으로 표시된 Storage를 수정하며, 생성된 A2 는 A1 과 통신하게 됩니다. 쓰레드 풀 같은 구조를 나타냅니다. |
여기까지의 각 Element 설명을 보시고 다시 위의 HTTP Server 구조를 보시면 쉽게 이해가 되실것입니다.
Agent 와 Storage 라는 두개의 컴포넌트 만으로 나눴지만, 채널과 Accessing 하는 타입을 지정함으로써
시스템 전체 컴포넌트간의 정적인 구조를 표현하기 쉽고 , 이해가 빠르다는 장점을 가지고 있습니다.
참고로, Apache Modeling Project 에 나와있는 Apache 웹서버의 Unix 용 Multiprocessing/Multithreading 모델을
Block Diagram 으로 나타내면 다음과 같습니다.
참고 Reference
- http://f-m-c.org/
- Documenting Software Architecture : Views & Beyond
- Apache Modeling Project
- FMC Notation Reference [PDF in Zip]
* 이글은 제가 관심이 있어서 찾아보다가 정리해본 문서입니다. 주관적인 내용이 담겨있을수 있으니 참고하시기 바랍니다. ^^
* 그리고 이글은 제 블로그의 저작권표시와는 별도로, 제 블로그외의 어느곳에도 전재를 금합니다.
야옹; 어려운 글과 그림이 잔뜩있네요 ;
저 같은 사람은 봐도 잘..;
구루님 새해 복 많이 받으세요! 😀
네 감사합니다 ^^ 새해 복 많이 받으세요~
뭐가 이리 복잡해요~?
요즘엔 업데이트도 잘안하시구~ 바쁘신가보네요~
새해 복 많이 받으시고~ 올 한해도 평안하세요~
좋은 자료 잘 보고 갑니다. 덕분에 많은 도움이 되었네요.