공간정보/표준2018. 6. 17. 23:12

며칠 전 Enterprise Architect를 사용하여 공간정보 표준 클래스다이어그램을 그리는 방법에 대한 글을 작성했습니다. Enterprise Architect(EA)는 ISO TC211에 참여하는 분들이 사용하는 도구이기 때문에 공간정보 표준과 관련된 일을 하는 분들에겐 무척 편리한 도구라고 말씀드렸습니다. 사용법 자체도 다른 도구와 별반 다르지 않게 직관적으로 사용할 수 있어 좋은 것 같았고요.

제가 그 글을 쓸 때 참고한 글은 Inspire Repository Tutorial 이라는 글로서, INSPIRE 표준에 참여한 분들을 위한 입문서입니다. 그런데, 사실 그 글을 작성하면서 몇가지 어려운 점을 겪었습니다. 먼저 제가 사용한 버전은 13.0 버전인데, 이 입문서에서 사용한 버전은 이전 버전으로서 UI가 너무 많이 바뀌는 바람에 명령을 일일이 찾아야 했다는 겁니다. 그래도 최신판이 낫겠거니 하고 계속 사용하려고 했는데, 다른 글을 참고해보니, 12버전을 사용해서 테스트했고 이후 버전엔 테스트하지 않았다는 내용이 있어.. 결국 다시 12버전을 설치했고, 앞으로도 계속 이 버전을 사용하기로 했습니다.

또 한가지... 더 중요한 사항은 제가 Subversion(SVN) 아이디/비밀번호가 없어서 ISO TC211 표준에 대한 저장소(https://inspire-twg.jrc.it/svn/iso/)를 SVN으로 다운드로 받을 수 없었고, 그래서 그중 implementation-XML 부분만 일일이 수작업으로 복사해서 넣었다고 말씀드렸는데, 이게 완전히 잘못되었다는 것입니다. 아이디/비밀번호가 없어도 다운로드 받는 방법이 있었고, 특히 implementation-XML 부분은 현재 작업중인(체크아웃-체크인하기 위한 임시) 디렉토리여서 이걸 사용하면 안된다는 것이었습니다. 

아무튼... 그래서 ISO TC211의 표준 저장소에서 자신의 PC로 ISO 표준에서 사용중인 모든 클래스다이어그램 등을 불러오는 작업을 수행해 보겠습니다. 

참고로 이 글은 조화 모델 저장소 접근방법이라는 글을 그대로 따라한 것입니다. 여기에서 조화 모델(Harmonized Model)이라는 뜻을 정확히는 잘 모르겠지만요.

ISO 표준 패키지 가져오기

소프트웨어 설치

먼저 두가지 소프트웨어를 설치해야 합니다.

첫번째는 Enterprise Architect. 최신버전보다는 12.1 버전을 사용하세요.

두번째는 SVN 클리언트 프로그램. 여기 들어가면 여러가지가 있는데, 원문에서 Tortoise SVN을 사용해서 저도 여기에서 다운로드 받아 설치했습니다. http://tortoisesvn.net/downloads.html

SVN 으로 파일 받기

그 다음, 자신의 컴퓨터에 작업 공간을 만들어야 합니다. 아무곳이나 만들어도 되지만 한글 디렉토리는 피하는 게 좋습니다. 저는 시키는대로 "C:\Standards/ISOTC211"에 설치를 했습니다. 설치할 위치를 정하면 그곳에 iso라는 이름의 폴더를 추가합니다. 이 폴더가 root 폴더가 되어 저장소에 있는 파일들과 폴더들이 여기로 복사됩니다. 

다음 저장소에 있는 파일을 체크아웃합니다. 아래 그림과 같이 "iso"  폴더를 우클릭하고 "SVN Checkout..."을 선택합니다.

대화상자에서 UML에 아래와 같이 https://inspire-twg.jrc.it/svn/iso/을 입력하고 OK를 누릅니다.

이렇게 실행하면 아래와 같이 경고메시지가 발생합니다. 인증서가 잘못되었다는 뜻이라는데, 원래 이렇게 발생한다고 하더군요. Accept를 누르면 실행됩니다.

이제 Tortoise SVN이 isotc211 모델의 저장소에 대한 복사본을 현재 폴더에 설치합니다. 설치가 완료되면 다음과 같은 대화창이 뜹니다.

폴더 구조는 다음과 같습니다.

Enterprise Architect 환경설정

먼저 EA를 실행하고 기존의 프로젝트를 열거나 새로운 프로젝트를 생성합니다. 

다음으로 아래 화면과 같이 버전 콘트롤 설정을 합니다. 

Project -> Version Control -> Version Control Setting

대화창에는 다음과 같이 입력합니다.

- Unique ID : ISOTC211
- Type : Subversion
- Working Copy Path : 위에서 만든 iso 폴더의 경로 (예: C:\Standards\ISOTC211\iso)
- Subversion Exe : Tortoise SVN이 설치된 위치. (예: C:\Program files\TortoiseSVN\bin\svn.exe)

이제 Save를 누르고 잠시 기다리면 아래 화살표처럼 정의되었다는 내용이 뜹니다. 이제 Close를 누릅니다.

 패키지 가져오기

Project Browser 에서 Model을 우클릭한 후, Package Control -> Get Package를 선택합니다. 그러면 아래와 같은 대화상자가 뜨는데, 아래와 같이 Select a Version... 에서 "ISOTC211"을 선택하면 자동으로 목록을 가져옵니다. 이제 "isotc211\ISO_TC211.xml 을 선택하고 OK를 눌러줍니다.

최신버전 가져오기

잠시 기다리면 Project Browser에 아래와 같이 목록이 나타납니다. 현재는 모두 빈 목록뿐입니다.

여기에서 또다시 Model을 우클릭하고 Package Control -> Get All Latest를 눌러줍니다. 다음 대화창에서는 "Import changed file only" 옵션을 선택합니다. 그러면 모든 패키지가 새로 갱신됩니다. (이 경우엔 모두 새로 채워줍니다. 언제든지 최신 버전이 필요하면 이 명령을 수행하면 됩니다.) 모든 패키지가 들어오기까지는 상당한 시간이 소요됩니다.

이제 완료되었습니다. 모든 패키지가 Locked 되어 있어 편집은 안되지만, 살펴볼 수는 있습니다. 이 상태는 EA <-> Client (나의 PC) <-> Server <-> 저장소(Repository) 간의 연결이 끝난 상태입니다. 즉 필요할 때마다 Get All Latest를 눌러주면 상태를 체크하여 최신 패키지로 모두 갱신됩니다.

저는 ISO 패키지를 사용만 하는 입장이라, 이걸로 충분합니다만, 이들을 편집하고 싶다면 여기를 읽어보세요.

참고로 원래 EA에서 사용하는 파일 포맷은 MS Access 라고 합니다. 당연히 이진파일입니다. 그런데 SVN(을 비롯한 모든 종류의 버전관리 도구)은 이진파일의 버전관리는 불가능합니다. 그래서 EA에서는 자신의 파일을 XMI(UML 교환용 포맷으로 XML 형식)으로 내보내고, 이것을 내 로컬 저장소에 저장을 합니다. 그리고 이 로컬 저장소를 서버와 통신해서 버전관리를 하는 방식입니다. 상당히 영리한 방식이라고 할 수 있습니다. 

그런데, EA에서 사용하는 XMI 파일은 클래스등의 객체 구조 뿐만아니라, 색깔, 다이어그램 상의 위치 등 다양한 정보를 보관한다고 합니다. 따라서 EA가 아닌 UML 도구는 EA의 XMI 파일을 정상적으로 다룰 수 없고, 따라서 다른 UML 도구는 소스 버전관리가 불가능합니다. 이런 점에서도 공간정보 표준과 관련된 작업을 하려면 어쩔 수 없이 Enterprise Architect를 사용할 수 밖에 없을 것 같네요.

No-SVN 환경의 ISO TC211 패키지 가져오기

사실 표준 제정/개정 등의 작업에 참여하지 않는 저같은 사람들은 위와 같이 모든 저장소의 내용을 다운로드 받고, 또 최신판으로 유지할 필요는 없습니다. 그냥 안정된 버전을 다운로드 받아 사용하는 것이 가장 편합니다. 여기에 들어가서 ISOTC211_HM_NoSVN.eap를 받아서 사용하면 됩니다.

아래는 이 파일을 받아서 그냥 EA에서 불러들인 후, GFM(일반 지형지물모델 : General Feature Model) 클래스 다이어그램을 표시한 화면입니다. 좌측위 "Project Browser"를 보시면 ISO TC/211 표준 뿐만 아니라, OGC 표준 그리고 ISO TC211 표준에서 참조하는 기존 표준(예: ISO 3166 국가코드)들도 포함되어 있음을 알수 있습니다. 아주 편리할 것 같습니다. ㅎㅎㅎ

ISO 19000 시리즈 클래스 관계 확인하기

제가 제일 많이 사용하는 기능은 ISO 19000 표준시리즈에 포함된 여러가지 클래스간의 관계를 확인하는 것입니다. 제가 요즘 여기저기 표준관련 문서를 뒤적거릴 일이 많다보니, 어떤 클래스가 어떤 속성이 있고, 다른 클래스와 어떤 관계가 있는지 등을 알아봐야 할 때가 많기 때문입니다.

일단 위와 같은 방법으로 ISOTC211_HM_NoSVN.eap를 불러왔다고 가정하고 시작하겠습니다.

제일먼저 어떤 클래스가 있는지 확인하고 싶을 때에는 Cntl_F (Find in Project) 창을 불러서 아래의 위치에 원하는 클래스명을 입력하면 됩니다. 아래는 DateTime 클래스를 검색한 예인데, 아래와 같이 나타난 여러개의 클래스 중에서 적당한 것을 선택하시면 됩니다. 클래스 중에서 Status가 Supersede라고 되어 있는 경우가 있는데, 이 녀석은 과거 버전이므로 사용해서는 안됩니다. Implemented도... 정확히 무슨 내용인지 아직 모르지만, 어쨌든 Status가 Approved 인 것을 선택하면 됩니다.

선택한 상태로 오른쪽 마우스 클릭을 하면 위와 같이 여러가지 옵션이 나타납니다. 여기에서 Properties... 를 누르면 아래와 같이 이 클래스의 특성을 볼 수 있습니다. 왼쪽 화살표를 누르면 연관관계를 확인할 수 있고요, 오른쪽 아래의 "Details"를 누르고 다시 "Attribute"를 누르면 속성을 확인할 수 있습니다.

또 위의 그림에서 "Find in Diagrams..."를 누르면 아래와 같은 창이 나오고  아무 다이어그램이던 더블클릭하면 이 클래스가 포함된 다이어그램을 확인할 수 있습니다. 원래 이 저장소(ISOTC211_HM_NoSVN.eap)는 ISO TC/211 위원들이 실제 표준 문서 작업을 할 때 사용하던 것과 동일한 복사본이기 때문에, 표준문서에 포함되어 있는 그림들을 포함해 다양한 다이어그램을 확인할 수 있습니다.

그런데 이런 식으로 확인하는 것만으로는 한계가 있을 수 있습니다. 예를 들어 필요에 따라 연관관계에 있는 다른 클래스들을 확인하고 싶지만, 다이어그램에는 숨겨두었을 수 있기 때문입니다. 

이 때에는 다이어그램에서 해당 클래스를 우 클릭한 뒤, 콘텍스트 메뉴에서 "Insert Related Elements"를 선택하면, 아래와 같이 연관관계나 상속관계에 있는 클래스들을 볼 수 있고, 이들을 클릭하면 해당 클래스들이 다이어그램에 추가됩니다. 이때 화살표 쪽을 선택하면 Relation depth를 조절할 수 있습니다.

이상입니다.

민, 푸른하늘

===

원문 : https://github.com/ISO-TC211/HMMG/wiki/Connecting-to-the-Harmonized-Model-Repository

Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

공간정보/표준2018. 1. 25. 16:57

공간정보표준을 알아가다보면 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등), 위쪽엔 추가하고자하는 스테레오타입 이름을 입력하면 됩니다.



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



====

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


민, 푸른하늘





Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요