Modelio로 UML 클래스다이어그램 그리기

공간정보 2018.01.25 16:57 Posted by 드론의 미래가 궁금한 푸른하늘이

공간정보표준을 알아가다보면 UML 클래스 다이어그램을 마주치게됩니다. 공간정보 스키마를 UML로 표현하기 때문입니다. 물론 UML 중에서도 클래스 다이어그램만 필요하기 때문에 그나마 그렇게 어렵지는 않습니다.


UML 클래스 다이어그램을 그리는 방법은 그림판이라던가 파워포인트 등의 그래픽툴을 사용하여 그리는 방법과, UML 도구를 이용하는 방법이 있습니다. 그냥 한두개 정도 그린다면 그래픽 도구가 간단하겠지만, 전체적인 구조를 그리고, 기존 모델을 재활용한다든지... 아무튼 좀 더 복잡해지면 UML 도구를 사용하여 그리는 것이 좋습니다.


UML 도구는 종류가 많습니다. 어떤 것을 선택하면 좋을지 망설여집니다. 일단 저는 Wikipedia UML 도구 목록predictiveanalyticstoday의 글을 참고로 선택했습니다. 선택 기준은 첫째 오픈소스일것. 꾸준히 업데이트 되는 것일 것. UML 2를 지원할 것(ISO 19103 개념스키마 언어에서 UML 2를 표준으로 사용하기로 변경되었습니다.) 그리고 XMI를 지원할 것 등입니다.


여기에서 XMI 란 XML Metadata Interchange라는 표준으로서, XML 메타데이터나 UML 등을 상호 교환할 수 있는 표준 포맷입니다. 혹시라도 제가 선택한 Modelio가 마음에 안들어서 다른 도구로 바꿀 때라도 작업해둔 내용을 버리지 않아야 하기 위해서 XMI에 대한 지원이 필요했습니다. 아울러 제가 작업한 내용을 공개하게 되면 동일한 의미에서 XMI로 공개하는 게 제일 나을테고요.


Modelio 3.7버전은 여기에서 다운로드 받아 설치했습니다. 설치하는 방법은 따로 설명할 필요는 없을 것 같고... 사용법을 간단히 정리하고자 합니다.


1. 프로젝트 생성


먼저 작업할 프로젝트를 생성합니다. 저의 경우 현재 JPGIS(일본 지리정보표준 프로파일)2014 를 공부중이니까 JPGIS2014 프로젝트를 만들었습니다. 프로젝트 위치는 원하는 곳 어디나 지정할 수 있지만, 폴더명이 한글이면 잘 안되는 것 같습니다.


File -> Create a project



2. 패키지 만들기

패키지는 서로 관련이 깊은 클래스들의 모임입니다. 하나의 프로젝트에는 여러개의 패키지가 들어 있고, 서로 관계가 있을 수 있습니다. 아래는 JPGIS2014의 Geometry/Topology 패키지에 포함된 하위패키지들의 상호관계를 나타낸 것입니다. 이처럼 패키지로 구성된 프로젝트라면 패키지를 만들고 시작하는 것이 좋습니다. (물론 클래스부터 만들고 나중에 패키지로 만들어 정리해도 됩니다.)

 

패키지를 만드는 방법은 아래 그림처럼, 프로젝트를 우클릭한 후, Create Element ->Package를 선택하면 됩니다.



3. 클래스 다이어그램만들기

이제 본격적으로 클래스 다이어그램을 만들어볼 차례입니다. 원하는 패키지에서 우클릭한 뒤, Create diagram을 선택하면 됩니다. 만들어진 다이어그램은 나중에 편한대로 다른 위치로 옮길 수 있지만, 설명하고자 하는 패키지 내부에 만드는 게 가장 좋습니다.



참고로 아래 대화상자에서 보시는 것처럼, 아주 다양한 종류의 다이어그램을 생성할 수 있습니다.



4. 클래스 생성하기

다이어그램 상태에서 클래스를 만들 때에는 아래 그림에서 클래스모양의 아이콘을 누르고 작업공간에서 적당한 크기로 드래그 해주면 됩니다. 이때 클래스 명은 "Class"로 만들어지는데, 여길 선택해서 적절한 이름을 넣어주면 됩니다.



이렇게 그래픽으로 추가하지 않고(그림은 만들지 않고), 정의만 생성할 수도 있습니다. 아래그림처럼, 원하는 대상에서 Create element를 선택하면, 클래스를 직접 추가할 수 있습니다. 클래스를 선택해서 Create element를 선택하면 속성이나 연산, 연관관계등도 추가할 수 있고요.

 


5. 속성(Attribute) 추가하기

속성을 추가하는 방법도 비슷합니다. 아래 그림에서 빨간화살표의 A: 를 클릭한 후, 원하는 클래스의 가운데 단으로 마우스를 가져간 후, 아래처럼 초록색으로 바뀌면 클릭해주면 됩니다. 



이렇게 추가하면 속성이 [+Attribute : string] 으로 추가되는데, 여길 더블클릭하여 나오는 대화상자에서 이름이나, 유형, 다중도 등을 원하는대로 수정하면 됩니다. 아래그림에서 Type이 Sign으로 되어 있는데, 이것은 "Sign"이라는 클래스(기본 데이터 타입)을 먼저 입력해두면 가능합니다.



참고 : 유감스럽게도, Value (즉 초기값)를 설정했어도, 이것을 다이어그램에 나타나지를 않더군요. 어떻게 설정해야 하는지 아직도 찾지 못했습니다.


6. 연관관계 생성하기

연관관계를 생성하는 것도 비슷합니다. 아래그림 왼편에서 적절한 연관관계를 선택한 후, 시작할 클래스를 클릭, 대상 클래스를 클릭해주면 됩니다. 선택된 클래스는 초록색으로 바뀌게 됩니다.



아래는 이런 과정을 통해 집합관계(Aggregation)을 생성한 결과입니다.



이렇게 배정된 기본값은 쉽게 바꿀 수 있습니다. 해당 연관관계를 클릭하면 아래와 같이 요소 편집화면이 뜨는데, 원하는 대로 편집하시면 됩니다. 연관관계 종류도 바꿀 수 있습니다.



7. 스테레오타입 생성/추가하기

공간정보표준중 KS X ISO 19103 개념 스키마 언어 6.10.2에는 여러가지 스테레오타입이 나옵니다. 패키지에 대한 스테레오타입인 <<Leaf>>외에는 <<CodeList>> <<dataType>>  <<enumeration>> <<interface>> <<Union>> 등의 스테레오타입이 정의되어 있습니다. 물론 이 외에도 새로운 것을 정의하여 사용할 수 있다고 규정되어 있습니다.


스테레오타입은 여러가지로 사용될 수 있는데, 공간정보표준에서 사용되고 있는 스테레오타입은 의미의 확장, 혹은 의미의 명확화라고 생각할 수 있습니다. 즉, 모두다 클래스이지만, <<Feature>>라는 스테레오타입을 사용한다면, 이 클래스는 지형지물임을 명확히 알 수 있게 됩니다.


사용자 정의 스테레오타입을 사용하려면 먼저 스테레오타입을 생성해야 합니다. 스테레오타입을 생성하려면 아래 그림과 같이 프로젝트명에서 오른쪽 버튼을 클릭하고 "Create stereotype..."을 선택합니다.



그러면 다음과 같은 대화상자가 나타나는데, 아래쪽엔 종류(Class나 Package등), 위쪽엔 추가하고자하는 스테레오타입 이름을 입력하면 됩니다.



그 다음 패키지나 클래스 등에 스테레오타입을 추가하려면, 해당 객체를 더블클릭하여 편집모드로 들어간 후, 아래 그림처럼 오른쪽 위에 있는 "+" 버튼을 누르고, 원하는 것을 선택하면 됩니다. 빨간색 화살표는 이러한 과정을 통해 추가한 스테레오타입입니다.



====

이상입니다. 아직까지 사용한지 며칠 안되어서 모르는 기능도 많다보니 별로 도움이 될 것 같지는 않지만, 그래도... ㅎㅎ


민, 푸른하늘





댓글을 달아 주세요

◀ Prev 1 2 3 4 5 6 7 8 9 ··· 1568  Next ▶
BLOG main image
드론과 지도
드론이 세상을 바꾸고 있습니다.드론의 활용처가 계속 넓어지고 있고, 글로벌 기업들의 참여가 많아지고 있으며, 새로운 기술들이 속속 등장하고 있습니다. 하지만 우리나라의 드론 산업은 일부 기업을 제외하면 중국에서 생산된 드론을 가져다가 조립하는 수준이 대부분입니다. 드론은 하드웨어, 소프트웨어, 데이터처리가 복합된 기술입니다. 어떤 기술들을 어떻게 조합할지에 성패가 달렸죠. 5년뒤 10년뒤에 이 블로그엔 어떤 글이 적힐까요? 그것이 궁금합니다.
by 푸른하늘이
Profile for bluesky61

달력

«   2018/02   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28      

카테고리

전체보기 (1568)
구글어스 (829)
공간정보 (221)
사진 (98)
드론/쿼드콥터 (239)
지오캐싱 (47)
기타 (133)
  • 4,303,141
  • 580869
TNM Media textcube get rss

드론과 지도

푸른하늘이's Blog is powered by Tistory. / Supported by TNM Media.
Copyright by 푸른하늘이 [ http://www.ringblog.com ]. All rights reserved.

Textcube TNM Media
푸른하늘이's Blog is powered by Tistory. Designed by Qwer999. Supported by TNM Media.