공간정보/표준

ISO TC211 표준 저장소로부터 UML 모델 가져오기

하늘이푸른오늘 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