Sparx Systems Enterprise Architect 모델을 Subversion에서 관리하기

엔터프라이즈 솔루션을 개발할 때 UML 도구로 사용하는 Sparx Systems의 Enterprise Architect는 매우 훌륭한 프로그램이고 협업을 위해 버전 관리 도구도 다양하게 지원한다. 그러나 제공하는 도움말은 매우 일반적인 사용법 밖에 적혀있지 않아 실제로 Subversion에서 Enterprise Architect 모델을 관리하기가 쉽지 않다.

  • Subversion 저장소에 새 Enterprise Architect 모델을 관리하기 시작할 때

Enterprise Architect로 만든 UML 모델이 있지만, Subversion으로 관리하고 있지 않은 경우에 해당한다. 기존에 만든 Enterprise Architect 파일(.eap)을 열고 우측 메뉴 창인 Project Browser에서 패키지를 선택한다. (마우스 오른쪽 버튼을 눌러 나타나는) 컨텍스트 메뉴를 열고 Import/Export – Export Package to XMI file 기능을 선택해 선택한 패키지를 XML 파일로 변환한다. Enterprise Architect는 패키지 단위로 XML 변환이 가능하고, 이렇게 XML 파일로 변환해야 버전 관리 도구를 이용할 수 있다.

필요한 패키지 XML 파일을 생성했다면, 이 파일을 Subversion 저장소에 등록한다. Subversion 기능에서는 Import에 해당한다.

Subversion 명령: svn import (생성한 Enterprise Architect의 XML 파일이 들어있는 폴더 이름) (svn 저장소 디렉토리 이름)
명령 예제: (XML 파일이 담겨있는 폴더의 상위 폴더에서) svn import sample svn://svn.subversion_test.org/trunk

위 예제와 같은 명령을 실행하면 로컬 폴더 sample 안에 있는 XML 파일이 svn.subversion_test.org라는 도메인을 갖는 원격 저장소의 trunk 디렉토리에 등록된다.(해당 로컬 폴더 안의 모든 파일이 등록되므로, 이진 파일(.eap)은 없어야 한다)  명령어 기반이 아닌 Subversion(TotoiseSVN)을 이용하는 경우 동일한 기능의 아이콘을 사용한다. 등록에 성공했다면 등록에 사용한 폴더(예제에서는 sample)는 삭제해도 좋다.

  • Subversion 저장소에 있는 Enterprise Architect 모델을 동기화 하기

위 경우처럼 Subversion 저장소에 Enterprise Architect 모델이 XML로 저장되어 있는 경우, 로컬 Enterprise Architect에서 그 모델을 사용하는 방법은 다음과 같다. 우선 Enterprise Architect는 외부 Subversion 실행파일을 사용하고 이는 명령줄 실행이 가능해야 하므로 (기존에 TotoiseSVN을 사용하고 있다고 하더라도) 명령줄 실행용 Subversion을 설치한다.(대표적으로 CollabNet이나 SlikSVN )

다음으로 Enterprise Architect로 Subversion을 이용하기 위해 Subversion으로 관리 중인 폴더가 필요하다. 기존에 Subversion 저장소와 동기화할 폴더를 생성한다.(이 예제에서는 sample) Subversion 명령으로는 Checkout에 해당한다. 명령줄 실행형 Subversion을 설치했더라도 이 경우 TotoiseSVN을 사용해 진행해도 무방하다. 명령줄 기반 Subversion은 Enterprise Architect가 이용하기 위해 필요하기 때문이다.

Subversion 명령: svn checkout (Subversion 저장소 디렉토리 이름) (동기화할 로컬 폴더 이름)
명령 예제: (동기화할 폴더의 상위 폴더에서) svn checkout svn://svn.subversion_test.org/trunk sample

명령이 성공적으로 실행되었다면 로컬 폴더(예제에서는 sample)가 저장소와 동기화되었을 것이다. 이제 동기화한 폴더 안에 있는 Enterprise Architect 모델을 로컬 모델로 등록하면 된다.

Enterprise Architect를 실행시키고 새 프로젝트 파일을 생성한다. (동기화한 패키지를 가져올 것이기 때문에) 패키지는 아무 것도 포함시키지 않는다. 메뉴에서 Project – Version Control – Version Control Settings를 실행한다.

Version Control Settings

  1. (Subversion을 사용할 것이므로) Type을 Subversion으로 선택한다.
  2. Working Copy Path는 동기화한 로컬 폴더를 선택한다.
  3. Subversion Exe Path는 명령줄 Subversion 실행 파일을 찾아 선택한다. (위 예제에서는 SlikSVN)
  4. UniqueID에 (사용자가 식별하기 편하도록) 적당한 ID를  입력한다.

여기까지 진행했다면 ‘Save’ 버튼이 활성화 되었을 것이다. 만약 활성화 되지 않았다면 (Enterprise Architect 자체 문제이므로) 위 단계 중 몇 개를 반복한다. 저장에 성공하면 아래 리스트에 해당 ID가 추가될 것이다. 등록에 성공한 것이다.

  • 동기화 한 Subversion 모델을 패키지로 등록하기

위 단계에서 생성한 프로젝트에 오른쪽 메뉴 창 Project Browser에서 최상위 트리(프로젝트)를 선택한다.(이름을 초기값 그대로 내버려두었을 경우 ‘Model’이다) 컨텍스트 메뉴에서 Package Control – Get Package를 선택한다. 콤보 형태의 상위 메뉴를 클릭하면 동기화를 성공한 경우 Subversion 관리 ID가 나타난다. 등록을 원하는 ID를 고르면 해당 ID에 속한 패키지가 하단 리스트에 나타난다. 필요한 패키지를 고르고 OK 버튼을 클릭하면 패키지가 등록된다. 이제 Subversion을 통해 Enterprise Architect 모델을 협업할 수 있다. 처음 이 단계까지 진행하는 것은 힘들겠지만, 이후에는 반복할 일이 없다.

  • 동기화 한 Enterprise Architect 모델을 수정하기

등록에 성공했다면 Project Browser에 새로운 패키지가 추가되었을 것이다. 패키지를 자유롭게 조회하는 것은 가능하지만, 수정을 할 수 없을 것이다. Subversion 저장소 동기화를 통해 버전 관리를 하고 있으므로 개인적인 수정은 불가능하다.

수정하기 위해서는 패키지를 선택한 뒤 컨텍스트 메뉴에서 Package Control – Check Out을 선택한다. 패키지 아이콘이 바뀐 것을 확인할 수 있을 것이다. 수정 가능한 상태가 되었으며, 함께 Subversion 저장소에서 동기화한 다른 사용자가 수정을 시도할 경우 해당 패키지가 Lock 상태로 수정할 수 없다는 메시지가 나타난다. 한 번에 한 사람이 수정 가능하며, 수정 후에는 모두가 결과를 공유하게 된다.

수정을 마친 후에는 컨텍스트 메뉴에서 Package Control – Check In을 선택한다. 저장소 속 모델의 Lock이 풀리고 수정한 내용이 반영된다. Check In 시 수정 내역에 대한 기록을 꼼꼼하게 하는 것이 관례다. 만일 Check Out 상태에서 수정할 것이 없는 경우 컨텍스트 메뉴의 Package Control – Undo Check Out을 하면 해결된다. 수정은 하지 않는데 다른 사용자들이 수정한 내용으로 최신화하고 싶다면 Package Control – Get Latest를 실행하면 된다.(Check Out을 시도하면 로컬에 저장된 모델이 최신 모델과 다른 경우 최신 버전으로 동기화를 실행한 후 Check Out 된다)

프로젝트에 Subversion 저장소와 동기화한 패키지를 등록하는 과정는 어렵지만, 실제 프로젝트를 진행할 때는 Check Out/Check In의 반복을 주로 사용하게 된다.(그 외의 Package Control 기능은 Subversion 기능과 동일하므로 Subversion 도움말을 참고 바란다.)

  • Subversion 저장소에 새로운 Enterprise Architect 패키지 추가

작업을 하다가 기존 패키지 이외에 새로운 Enterprise Architect 패키지를 추가하는 경우는 더 간단하다. 해당 패키지를 XML 파일로 변환하고(Export), 파일을 동기화한 로컬 폴더에 저장한 후, 저장소에 추가하면 된다. Subversion 명령으로는 Add에 해당된다.

Subversion 명령: svn add (추가할 파일 이름, 와일드카드(*) 사용도 가능하다)
명령 예제: svn add added_model.xml

명령줄 기반 Subversion을 사용하는 경우 Commit을 해야만 최종적으로 저장소에 등록된다.

Advertisements

2 Comments

  1. 설정해보는데 도움이 되었습니다.
    질문 하나 드려도 될까요?

    svn과 연동하고 checkout할 때 에러가 발생하는군요.
    에러 메시지는 다음과 같습니다.

    svn : 잠그는 이유를 경로명으로 하였습니다. (-F를 사용하려던 것인가요?)
    강제로 사용하려면 ‘–force-log’를 사용하세요.

    체크아웃시, svn lock 파일 -m “” 포맷으로 메시지에 파일 경로가 자동으로
    들어가는 것 같습니다.

    설정시 이와 같은 에러는 발생하지 않으셨나요?
    혹, 해결책이 있다면 어떻게 설정하면 될지 알려주시면 감사하겠습니다.

    1. 오래전 댓글을 이제야 봤네요.
      이제야 댓글을 남기는 것이 의미 있는지 모르겠습니다만.

      제 경우 같은 오류가 발생하지 않았고, 내용으로 볼 때 (제대로 하셨다면) Subversion 설정이 잘못되어서 체크아웃 하기 전에 처리할 것이 남지 않았나 싶네요.
      수동으로 Subversion을 사용해 문제점을 해결하셔야 할 것 같습니다.

      Lock을 거는건 EA에서 체크인 한 후에 자동으로 하는 절차고, 설사 Lock이 걸려있다고 할지라도 Check Out을 하거나 Update를 하는 건 문제가 없어야 합니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중