Dev ETC/UML2009. 2. 18. 22:26

군대에서 최고위급 지휘관들의 관심 사항은 전시에 군사력을 어떻게 분할하여
어느 곳에 배치하느냐입니다. 왜냐면 군사력의 분배가 잘되면 적군을 효과적으로
공격할 수 있고, 방어도 더 잘 할 수 있기 때문이죠. 또한 이에 맞게 중화기를
포함한 무기류들도 여러 목표를 공격할 수 있는 위치를 선정하여 배치해야 합니다.
자원의 배치를 어떻게 하느냐에 따라 동일한 자원량을 가지고도 전장에서의 승패는
확연히 달라지기 때문입니다.

SW 시스템도 마찬가지입니다. 여러 곳에 물리적으로 또는 논리적으로 분산되어
있는 H/W 자원에 어떻게 SW 컴포넌트를 잘 배치하느냐에 따라 성능의 차이가
날 수 있습니다. 이렇게 SW 컴포넌트의 분산 배치를 정의한 모델이 바로
디플로이먼트 다이어그램입니다.

자, 그럼 디플로이먼트 다이어그램이 뭔지 알아볼까요?
 
1.개요
 

디플로이먼트 다이어그램은 "시스템을 구성하는
HW 자원 간의 연결 관계를 표현하고, HW 자원에 대한
SW 컴포넌트의 배치 상태를 표현
한 다이어그램."
입니다.

그리고 디플로이먼트 다이어그램은 시스템의 설계 단계의 마지막에 작성합니다.
즉, 모든 설계가 거의 마무리되어 SW 컴포넌트가 정의되고, 시스템의 HW 사양도
확정된 후 디플로이먼트 다이어그램이 작성될 수 있습니다.

 

디플로이언트 다이어그램 작성하는 목적은 다음과 같습니다.

SW시스템이 배치, 실행될 HW자원들을 정의합니다.

디플로이먼트 다이어그램은 다른 UML 다이어그램들과는 달리 HW자원들을
명시적으로 정의하는 용도로 작성됩니다. 그러나 이렇게 HW를 정의하는 목적이
HW 자체의 사양을 정의하고 설명하기 위한 것은 아닙니다. 오히려 SW 시스템이
탑재되어 동작하는 매개체로서, HW자원을 정의한다라는 관점에서 정의합니다.

SW 컴포넌트가 어떤 HW 자원에 탑재되어 실행될지 정의합니다.

디플로이먼트 다이어그램은 실행모듈(컴포넌트)을 분산된 HW자원에 적절히
배치하여 원하는 성능과 효율을 낼지를 정의하는 목적으로 작성됩니다. 따라서
디플로이먼트 다이어그램에는 SW자원과 HW자원이 동시에 표현됩니다.

HW 자원의 물리적인 구성을 정의합니다.

SW컴포넌트가 탑재된 HW자원들은 적절한 성능을 내기 위해 물리적인 연결을 가지고
있어야 합니다. 디플로이먼트 다이어그램은 어떤 HW자원간에 연결이 있는지,
그 연결은 어떠한 성능을 가진 연결인지를 정의합니다.

2.구성요소
 

디플로이먼트 다이어그램의 구성요소는 다음과 같습니다.

Things 혹은 심볼 : 노드(Node), 컴포넌트(Component)

Relationships : Connection, Dependency



 

노드의 표기

노드는 직육면체로 표기하며, 노드 명은 심볼 내에
표기합니다.

노드의 정의

노드는 SW 컴포넌트가 탑재되어 처리되는데 관련된 HW 자원을 의미합니다. 주로
연산능력(computing power)이 있는 HW 즉, SW를 탑재하여 운용할 수 있는 능력을
가진 하드웨어가 표현됩니다. 그러나 표현할 수 있는 HW 자원의 종류가 제한된
것은 아니고, 아래와 같은 다양한 장비들이 노드로 정의될 수 있습니다.

[HW 장비들의 예]
Sensor, Printers ,Card readers, Communication devices,
Mechanical processing resources

노드의 예

Web Server, DB Server

Web Server, DB Server

컴포넌트의 표기

컴포넌트는 탭이 달린 직사각형으로 표기하며,
컴포넌트 명은 심볼 내에 표기합니다.

컴포넌트의 정의

컴포넌트는 독립적으로 배포되고 교체되며 재사용될 수 있는 SW조각를 의미합니다.

보통의 경우 실행모듈을 말하지만, 실제 통용되는 컴포넌트라는 용어는 항상
실행모듈만을 가리키지는 않습니다.

컴포넌트가 가끔은 아주 광의로 사용되어서 소스코드나 UI(User Interface), 분석,

설계 산출물들을 포함한 것을 의미하기도 합니다.

컴포넌트라는 용어의 의미는 문맥에서 말하는 사람의 의도를 생각해서 받아들여야

합니다.

컴포넌트의 예

컴포넌트는 매우 다양한 크기로 정의되며. 아래 예들은 한정된 컴포넌트의 사례일
뿐입니다.

결재 시스템에서

결재, 사원 등

전자 상거래 시스템에서

우편번호 검색, 신용카드 결재 등


Connection의 표기

노드를 연결하는 실선으로 표기하며, 연결의 물리적
특성을 Stereo type으로 표기할 수 있습니다.

Connection의 정의

두 노드 사이의 물리적인 연결을 의미합니다.

두 노드 사이의 물리적인 연결 특성을 설명합니다.

Dependency의 표기

점선 화살표로 표현하고 필요에 따라 선 위에 설명을
붙이기도 합니다.

Dependency의 정의

객체나 컴포넌트가 다른 객체나 컴포넌트의 실행을 요청하는 경우, 즉 사물간의

실행 혹은 참조관계를 표현합니다.

Class와 Class, Package와 package, Component와 Component에 주로

사용되는 관계이고, 때로는 Class-Package-Component 상호 간에도 사용되는
관계입니다.


다음은 디플로이 다이어그램의 두 번째 사례입니다. 첫 번째 사례와는 노드의 내부에
컴포넌트를 포함하여 표현하였습니다. 이 모델이 무엇을 말하고 있는지 해석해 봅시다.

이 디플로이먼트 다이어그램은 이 시스템의 HW가 Diabetes Unit Server의 세 가지로
구성됨을 표현하고, 각 서버에 SW 컴포넌트의 배치 상황을 모델링하였습니다.
 

마지막 디플로이먼트 다이어그램의 사례입니다. 모델이 의미하는 바를 해석해 봅시다.

이 디플로이먼트 다이어그램은 상위 레벨의 논리적인 관점에서 노드를 정의하였습니다.
노드에 탑제된 SW 컴포넌트도 시스템 단위의 매우 큰 단위임을 알 수 있습니다
(KnowledgeWave System). 이 모델은 시스템 레벨의 관점에서 전체적인 논리적
HW의 구성과 SW 시스템 간의 구성 관계를 이해하는 목적으로 작성되었습니다.
 
4. 작성단계 및 주의사항
 

먼저, 컴포넌트 다이어그램의 작성 순서를 알아보겠습니다.

노드를 식별하여 정의합니다.

디플로이먼트 다이어그램을 작성할 때 시스템의 운영을 위한 HW자원을 식별하고
그 사양을 확인하는 것을 가장 먼저 수행합니다. 일반적으로 프로젝트 수행 초기에
시스템 청사진(System Architecture)을 작성하는 것이 일반적인데, 이를 활용하여
HW자원을 식별합니다.

컴포넌트를 식별합니다.

디플로이먼트 다이어그램에 등장할 컴포넌트를 정합니다. 컴포넌트 다이어그램이
정의되어 있을 경우, 이를 활용하면 쉽게 수행할 수 있습니다.

노드 간 구성관계를 정의합니다.

디플로이먼트 다이어그램에 노드를 배치하고 노드간의 물리적 연결인 연결을
정의합니다. 연결과 노드에는 Stereo type으로 하드웨어적 특성을 표현합니다.

노드에 컴포넌트를 배치합니다.

정의된 노드와 연결을 고려하여 어떤 노드에서 컴포넌트를 실행하게 될 것인가를
정의합니다. 디플로이먼트 다이어그램에 SW컴포넌트들의 배치상황을 반영합니다.

다음은 디플로이먼트 다이어그램 작성 시 주의사항입니다.

목적을 전달할 수 있는 명확한 의미의 명칭을 부여해야 합니다.

노드 명과 스테레오 타입으로 정의하는 하드웨어 특성등은 표현 방식에 기준이
없습니다. 하지만 시스템과 관련없는 제 3 자가 보더라도 그 의미를 이해 할 수 있게
쉽고, 명확한 용어를 사용하여 명칭을 정의하야 합니다. 모호한 명칭으로 정의하면
혼란만 야기 시키는 결과가 됩니다.

문제 영역의 H/W에 대한 명쾌한 추상 개념을 제공하도록 작성합니다.

SW 자원이 탑재되어 운영되는 보조적인 용도 뿐 아니라, 디플로이먼트 다이어그램은
시스템의 하드웨어 구성을 개념적으로 보여주는 훌륭한 도구가 됩니다. 이러한
용도를 살려 HW 자원의 구성에 대한 좋은 모델이 되도록 정의합니다.

Model을 만든 목적을 전달하기에 필요한 수준까지만 분해되어 있습니다.

디플로이먼트 다이어그램에 모든 HW 장비가 나타날 필요는 없습니다. 오히려 이러한
시도는 다이어그램을 장황하고 복잡하게 만들어서 의미를 파악하기 힘들게 합니다.
목적과 용도에 부합하는 요소들만 정의하면 충분합니다.

Posted by Huikyun