ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EA(Enterprise Architect)와 SVN 연동하기
    기타기술 2011. 8. 4. 17:40

    Enterprise Architect Rational RoseTogether의 계보를 잇는 CASE 툴인데 개인적으로는 지금까지 써본 Tool 중에 가장 막강하다고 생각한다. 사실, 가성비로만 따지면 따라올 자가 없다.  요즘은 CASE 도구나 UML에 집착하는 분위기 자체가 많이 수그러들었고 실제 분석, 설계를 하기 위한 목적보다는 프로젝트 산출물 작성용으로 많이 사용하지만… ^^;. 개념 정리나, 러프한 수준의 설계 목적 등 적절한 수준에서 사용하면 충분히 양질의 결과를 얻을 수 있다. 그러고 보면 문제는 항상 하는 일에 상관없이 진행되는 과도한 절차 및 문서화가 아닐까 싶다.

    EA SVN 연동을 위해서는 SVN Command Line Client가 필요하다. 다운은 여기서 받을 수 있는데 http://www.collab.net/downloads/subversion/ 회원가입이 필요하다. L 설치하면 커맨드 창에서 SVN 명령어를 실행할 수 있게 된다


    이제 EA를 실행해서 형상관리 정보를 설정할 차례다. EA에서 Project > Version Control > Version Control Settings… 메뉴를 선택하면 아래와 같은 윈도가 표시되는데 Type은 당연히 SVN을 선택하고 Unique ID, Working Copy Path는 각자 환경에 맞게 입력한다. Subversion Exe Path에는 방금전에 설치한 SVN클라이언트 설치 패스를 입력한다.

    Working Copy Path SVN과 연결된 디렉토리가 선택돼야 한다. 모델을 처음 만들어서 공유하는 경우 빈 폴더를 만들어 SVN에 커밋하면 되고, 이미 SVN에 등록된 모델을 받는 경우 SVN에서 update하면 된다. 방법은 SVN Client를 써도 되고, TortoiseSVNEclipseSVN 플러그인을 활용해도 된다. 
     

     
    EA를 사용해 만든 모델을 처음으로 SVN에 넣는 경우라면, 모델 자체를 SVNAdd하면 된다. 방법은 Project Browser에서 가장 상위 모델(root node)을 선택하고 마우스 오른쪽 버튼을 눌러 Package Control > Configure… 메뉴를 선택한다. 


    이 메뉴를 선택하면 위의 그림과 같이 Package Control Options 팝업창이 표시된다. 여기서Control Package 체크 박스를 선택한 후 Version Control Settings..에서 입력한 ID선택하고 OK를 누르면 모델이 SVN에로 Add된다.

     

    그런데 이렇게 하면 전체 모델이 하나의 xml 파일로 SVNAdd 되기 때문에 관리상에 문제가 생길 수 있다. 모델이 크고 여러 명이 동시에 작업해야 하는 경우라면 Package Control > Add Branch to Version Control 기능을 이용하여 모델을 적절한 수준으로 쪼개서 관리하는 방법을 추천한다.

    Add Branch to Version Control을 사용하면 해당 패키지가 EAB형식으로 쪼개져 저장되며 필요할경우 해당 EAB파일만 Import하여 작업할 수도 있다.


    EA에 이미 등록된 모델을 받는 경우 체크아웃 된 모델 XML파일을 Import한 후 Package Control > Get All Latest 기능을 사용하여 전체 모델을 업데이트 받으면 된다. 다음은 SVN과 연동된이 완료된 후에 project browser의 모습인데 열쇠 표시가 나타난 패키지들은 잠겨 있음을 의미한다. 잠겨 있는 모델을 작업하기 위해서 Check Out을 통해 잠금을 해제해야 한다.


    유의할 점은, SVN의 경우 기본적으로 낙관적 잠금(Optimistic Locking) 방식으로 형상을 관리하지만 EA의 경우 비관적 잠금(Pessimistic Locking) 방식으로 모델을 관리하기 때문에 동시 작업하는 누군가가 모델을 체크아웃 받을 경우 다른 사람이 해당 패키지에 모델을 작업할 수 없다는 사실이다.
Designed by Tistory.