년도별 글 목록: 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

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

Software Architecture Design with FMC – part 1

소프트웨어 아키텍처를 설계하고 이를 문서화 하는데 표준처럼 정해진 규약은 없습니다.
정해진 규약보다는 설계한 아키텍처를 가장 잘 설명할수 있는 나름의 방식으로 문서화 하는것이 좋습니다.
종종 각 아키텍쳐를 설계하고 이를 문서화 하는 사람은 자신의 입맛에 맞는 Diagram과 Notation 방식을 사용하여 설명하며
이런 Diagram 은 기존에 알려진 UML을 비롯하여,Entity-Relationship Diagram, Data Flow Diagram 같은것들부터
Business Process Management(BPM)에서 사용하는 Fishbone, Cause&Effect 등 여러가지가 있습니다.

하지만 소프트웨어의 아키텍쳐는 내부 컴포넌트들뿐만 아니라 외부시스템들과의 연계, 이들 사이/내부에 대한 동적인 흐름도
보여주어야 하기에 UML 의 Class/Activity/Deployment.. Diagram들 만으로는 전체적인 구조를 나타내기엔 부족합니다.
UML 은 시스템의 구조보다는 소프트웨어의 구조를 나타내는데 더 어울린다고 봐야 할것입니다.

그럼 소프트웨어 개발의 단계에서 초기 요구사항 분석후에 전체적인 아키텍쳐 디자인이 이루어 지고,
그 다음에 상세설계인 클래스/시퀀스 설계단계로 이어지게 됩니다.
이때 요구사항 분석단계는 SRS(Software Requirements Specification)문서 정도로 정리된다고 보면
UML 의 Class/Sequence/Activity 다이어그램으로 이루어지는 상세설계단계까지의 기간에 공백이 생기게 됩니다.
마땅한 문서화 방법이 없어서 시스템구성도 라고 이름 덜렁 붙이고 이제까지 그냥 해왔던대로 네모/동그라미 그려서
전체적인 구성을 하거나, UML 의 Use Case / Deployment 정도 다이어그램을 가지고 표현을 하게 됩니다.

하지만 시스템이 복잡해 질수록 전체적인 아키텍쳐 디자인이 중시되고 있으며, Architectural Pattern 들에 대한 관심이
높아지면서 소프트웨어의 아키텍쳐를 나타낼수 있는 Notation 방식이 필요하게 되었으며,
분석과 상세설계사이의 Gap 을 메꾸기 위해 고안된것이 FMC(Fundamental Modeling Concepts) Notation입니다.

Software Lifecycle & gap

FMC 는 Dynamic 한 시스템의 구조를 일관되고 계획적인 방법으로 표현할수 있도록 만들어진 Notation 방법입니다.
Hasso-Plattner-Institute에서 개발하여 현재는 http://f-m-c.org/ 에서 관련자료를 배포중입니다.

FMC 는 시스템의 구조를 표현하기 위한 방법으로 3가지 Diagram 을 제시합니다.

  • Compositional Structures : Block Diagram
  • Dynamic Structures : Petri Net
  • Value Range Structures : Entity-Relationship Diagram

위 3가지 다이어그램이 사실 새로운 형태의 표시방법은 아닙니다. 기존에 쓰여왔던 방법을 좀더 S/W 구조표현에 유용하도록
정리를 시도한것이라고 보시면 됩니다.

아래는 HTTP Server 의 구조를 Block Diagram 으로 나타낸 예제입니다.

HTTP Server Block Diagram with FMC

Part 2 에서부터는 각각의 Diagram 의 표시법과 예제를 알아보도록 하겠습니다.

참고 Reference

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

FireFox용 빠른 사전찾기 Extension : FastDic 0.2.7 업데이트

근 1년만에 업데이트를 하는군요. Firefox 1.5 Beta 에서 안돌아 가서 버전 수정하는김에 조금 손을 봤습니다.
* 이 플러그인은 Firefox 1.0 이상에서 동작합니다.

FastDic 동작화면

FastDic 은 FireFox 웹브라우저에서 사용하는 빠른 사전찾기 Extension 입니다.
웹페이지를 보다가 모르는 단어(영어 및 그외)를 Alt,Ctrl,Shift + 마우스 클릭만으로 찾아볼수 있게 해줍니다.
자세한 설명은 FastDic 0.2 버전 배포페이지를 참조하시면 됩니다.
아주 조금이지만 추가된 부분은 다음과 같습니다.

  • Firefox 1.5 에서 잘 실행됩니다! ^^;
  • 작은창으로 띄울경우 윈도우의 크기를 지정할수 있게 설정창에 Width,Height 지정하는 옵션이 생겼습니다.
  • Preset 에 Naver 영어사전을 추가했습니다. (작은사전만 되서 불편하시다는 리플이 있어서 ^^)
  • Update 기능이 이제 제대로 동작합니다. 혹시 버전업이 되면 불여우가 알아서 업데이트하라고 메시지가 뜰겁니다.

FireFox 용 빠른 사전찾기 Extension : FastDic 0.2.7 설치
(FireFox 의 보안정책때문에 바로 설치할경우 보안경고가 뜨게 되므로 사이트를 추가해주시면 됩니다.)
* 2008.05.05 Firefox 3.0 이상에서도 동작하도록 수정되었습니다. 에러 및 기타수정없이 버전만 올렸네요. ^^;


내 중세시대의 직업은 꿈꾸는 음유시인 ?

간만에 RSS 리더를 살펴보던중, 차니님의 블로그에서 “중세시대의 직업을 알아보자” 라는것을 발견했습니다.
성격검사류의 것을 좋아해서 바로 해봤는데, 항상 느끼지만 왜 이리 잘맞는것처럼 보일까요 ^^;

중세시대의 직업으로 알아보는 당신의 인성은? Kingdomality 테스트 바로가기

당신의 인성 유형은 ‘꿈꾸는 음유시인(Dreamer-Minstrel)’이다. 꿈꾸는 음유시인은 중세에 번성했던 대부분의 왕국에 존재했던 역할이다. 당신은 어둡고 암담한 상황에서도 ‘희망’을 발견하는 사람이다. 밝은 면을 보고 긍정적으로 생각하라는 것이 당신의 좌우명이고, 세상만사가 결국엔 좋은 방향으로 흐르는 까닭을 이해하는 것이 당신의 목표이다. 당신은 온 인류에게 희망을 베푸는 낙관주의자로서, 악인에게도 선한 면이 있고 나쁜 일에도 좋은 면이 있다고 생각한다. 당신의 긍정적인 측면은 자발적이고, 카리스마가 있으며, 이상주의적이고, 감정이입에 능하다는 점이고, 부정적인 측면은 감정에 치우친 나머지 비현실적인 일에 치중하는 몽상가가 될 수도 있다는 점이다. 흥미롭게도 당신의 인성 성향은 오늘날의 기업 왕국에도 잘 들어맞는다.

낙관주의라는 단어가 딱 맞는듯합니다. 가능하면 좋게 생각하려고 노력하는데, 어찌보면 고민을 하기 싫어하는 성격인거 같기도 하네요.
언젠가 누군가가 저에게 지갑을 잃어버린경우에 대해서 낙관적인 생각을 하면 어찌되냐고 물어봤었는데
그때 저의 대답은.. “새 지갑 살수 있겠구나!” 였습니다. 낙관적인건지 소비적인건지 모르겠네요.

“비현실적인 일에 치중하는 몽상가” 역시 대충 맞습니다. 제가 좀 뻘짓을 많이 하거든요.
암만봐도 전혀 쓸데없는 일에 올인해서 시간을 쏟아붇는 경우가 많아요.

그럼 다시 꿈꾸러 갑니다. ^_^

변해가는 것들

음식&맛집 분류에서 몇개의 글을 비공개로 바꿨습니다.
제가 가보고 좋았던 음식점 소개글들 이었는데요. 최근에 다시들 가보니 너무 많이 변해있네요.

한집은 맛은 그대로인채 가격만 하늘높은줄 모르고 올리더니.. 끝내는 망해서 다른 음식점이 들어섰구요.
가격이 싸면서도 분위기가 좋았던 한집은 어느새 일반 패밀리레스토랑 수준으로 가격이 올라버리구,
정갈하면서도 조용한 분위기가 좋았던 한집은 시장통 같이 소란스럽고, 그저 그런 맛집으로 변해버리구요..

그냥 글을 남겨두면 혹시나 보고 찾아가신 분들께 폐가 될까바.. 저 혼자만의 기록으로 남겨두려고 합니다.

그러고 보니.. 남은 음식점들도 아직 다 가보진 않았지만 어찌해야할지 고민이 많이 되네요.
혹시나 글보고 찾아갔다가 실망들 하시면 어쩌나 하는..
신기한건 그나마 서민적인 음식점들은 그래도 꾸준히 유지한다는 거네요.
정신없고 복작거리지만 가면 편해지고 맛도 계속 유지를 하구요.

오늘은 용산에 나갔다가, 떡볶이를 사왔습니다. 혹시 2001년 이전에 용산 다니시던 분들이라면
신용산역에서 용산쪽으로 굴다리 지나기전 있던 참새방앗간 이라는 떡볶이집 (그냥 길거리 부스입니다.)
기억하시는 분이 있을까 모르겠네요. 떡볶이랑 튀김맛이 일품이라 용산에 머 사러갈때면 꼭 들려서 먹곤 했는데
언젠가 갑자기 장사를 안하셔서.. 상당히 아쉬웠거든요
근데, 최근에 보니 다시 장사를 하기 시작하셨더라구요. 그래서 오늘 용산 CGV 나갔다가 잠깐 들렸습니다.
아주머니한테 물었더니.. 한 5년동안 딴거 한다고 하다가 잘 안되셨다구.. 다시 시작하신다고 하시네요.
저야 다시 맛있는 떡볶이와 튀김을 먹게되서 좋습니다만, 그냥 기분이 그렇더군요.
다들 힘들게 힘들게 사시는 구나 하는..

영화도 못보고 약간 우울한 분위기였는데, 먹고나니 기분은 좋네요. 맛이 좀 변하긴 했지만.. 역시 맛있음 ^_^;

어쨋거나 같은 맛으로 변하지 않고 계속 장사한다는 것이 그렇게 힘든것일까요.
초밥왕이라는 만화에서 장어초밥의 양념은 대를 두고 물려준다는 얘기가 있었던거 같은데..
음식문화라는게 너무 상업적으로만 흘러가는게 아닌하는.. 그냥 왜 이렇게 다들 변해가는지에 대한 넋두리였습니다.