노무현 대통령 배너

'Development/자동화'에 해당되는 글 36건

  1. 2008/07/02 테스트 코드 작성을 지원하는 도구를 공개수배합니다. (2)
  2. 2008/05/08 PMD로 코드리뷰 자동으로 수행하기
  3. 2008/04/07 MDA툴 AndroMDA - 코딩
  4. 2008/04/07 MDA툴 AndroMDA - 모델링
  5. 2008/03/10 MDA를 지원하는 툴
  6. 2008/03/07 MDA툴 AndroMDA - 샘플 애플리케이션 TimeTracker
  7. 2008/03/06 MDA툴 AndroMDA - 설치 및 설정
  8. 2008/03/06 MDA툴 AndroMDA - 개요
  9. 2008/03/04 JUnit 테스트 코드 생성 도구 AgitarOne - 테스트 코드 생성하기
  10. 2008/02/21 Maven으로 프로젝트 빌드하기
  11. 2008/02/21 UltraEditor로 루비 개발환경 설정하기
  12. 2008/02/15 JUnit 테스트 코드 생성 도구 AgitarOne - 설치 및 실행
  13. 2008/02/15 JUnit 테스트 코드 생성 도구 AgitarOne - 소개
  14. 2008/02/12 Luntbuild와 Subversion 연동하기 - Schedules 생성
  15. 2008/02/11 Ant Script Builder에 대한 논문
  16. 2008/02/11 Luntbuild와 Subversion 연동하기 - VCS 생성
  17. 2008/02/05 Luntbuild와 Subversion 연동하기 - 프로젝트 생성 (1)
  18. 2008/02/05 Luntbuild와 Subversion 연동하기 - MySQL로 빌드결과 저장
  19. 2008/02/03 Luntbuild와 Subversion 연동하기 - 설치 및 실행 (2)
  20. 2008/01/31 CollabNet Subversion으로 형상관리 서버 꾸미기6 - 아파치 연동
  21. 2008/01/30 CollabNet Subversion으로 형상관리 서버 꾸미기5 - 형상서버 테스트
  22. 2008/01/18 CollabNet Subversion으로 형상관리 서버 꾸미기4 - 형상서버 테스트 (2)
  23. 2008/01/07 CollabNet Subversion으로 형상관리 서버 꾸미기3 - 이클립스 플러그인 설치
  24. 2008/01/05 CollabNet Subversion으로 형상관리 서버 꾸미기2 - 기본설정
  25. 2008/01/04 CollabNet Subversion으로 형상관리 서버 꾸미기 - 설치 (2)
이번에 아래 이미지의 자동화라고 표시되어 있는 부분에 해당하는 도구 개발을 사내에서 검토하고 있습니다. 혹시 아래 영역에 대한 자동화를 지원하는 오픈소스를 알고 계신분 있으신가요 ?
중요한 정보를 알려주시는분에게는 개인적으로 후사하겠습니다. ^^

사용자 삽입 이미지

크리에이티브 커먼즈 라이선스
Creative Commons License
사용자 삽입 이미지
PMD는 자바 소스코드를 자동으로 리뷰하여 잠재적인 결함을 찾아주는 도구입니다. 오픈소스 프로젝트로 개발되고 있으며 4.2.1까지 나와 있습니다.
PMD만으로도 이용할 수 있지만 이클립스, JBuilder와 같은 IDE와 연동하여 이용하는게 보통이며 Ant, Maven과 같은 빌드툴과 연동하여 CI를 지원하는 환경을 구축할때도 유용하게 사용할 수 있습니다.

PMD를 이용하여 찾을 수 있는 결함에는 다음과 같은 유형들이 나올수 있습니다.
  • 잠재적 버그
  • 사용하지 않는 코드
  • 너무 복잡한 코드
  • 중복된 코드
사실 이런 결함을 눈으로 찾을 수도 있지만 개발중에 사전에 정의해 놓은 룰셋을 기반으로 자동으로 체크해 준다면 개발자는 문서로 된 컨벤션을 확인하느라 고생하지 않고 프로젝트 표준에 적합한 코드를 작성하는게 가능해 집니다.

이클립스 플러그인형태로 PMD를 사용해 보도록 하겠습니다. PMD 이클립스 플러그인을 설치하는 가장 손쉬운 방법은 Update 사이트를 이용하는것입니다.
  1. 이클립스를 실행한다.
  2. Help -> Software Updates -> Find and Install 선택
  3. Next를 누르고 New remote site를 선택
  4. Name에 PMD, URL에 http://pmd.sf.net/eclipse를 입력하고 엔터를 누른다.
사용자 삽입 이미지

몇가지 물어보는 과정을 거치고 나면 설치가 완료되고 이클립스를 재시작 하라는 메시지가 나옵니다. 재시작하고 Window -> Preferences로 가보면 PMD라는 메뉴가 추가된걸 확인할 수 있습니다.
사용자 삽입 이미지

PMD를 가지고 자바소스를 리뷰해 보도록 하겠습니다. 테스트로 사용할 솔스는 PetStore 2.0 입니다. 이클립스에서 자바 프로젝트를 하나 만들어서 PetStore 소스를 임포트합니다. Package Explorer에서 검토할 소스를 선택하고 PMD -> Check code with PMD를 선택합니다.
사용자 삽입 이미지

해당  소스가 위반하는 룰에대한 현황을 Violations Overview에서 볼 수 있습니다. 너무 많은 Violation이 있으면 Priority 수준을 1~5까지 선택적으로 볼수 있습니다. 오른쪽 상단의 여러색의 원형 블릿을 누르면 이를 조정하는게 가능합니다.
사용자 삽입 이미지

소스파일 하나가 아닌 프로젝트 전체에 대해 검사를 수행하고 그 결과를 보고 싶을수 도 있습니다. 만약 개발리더나 아키텍트라면 이런 일을 수행해야 할거 같습니다. 프로젝트를 선택하고 PMD ->Generate reports를 누릅니다. 그러면 reports 폴더가 생기면서 프로젝트 전체 소스에 대한 검사결과 레포트를 생성해 줍니다.
사용자 삽입 이미지

이렇게 진행하는건 IDE를 이용하여 개발을 진행하면서 PMD를 사용하는 경우라 말할수 있습니다. 이와 병행하여 빌드에 PMD를 끼워넣어서 같이 실행되도록 할 수도 있습니다. 다음번에 이에 대해 알아보도록 하겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG PMD

MDA툴 AndroMDA - 코딩

Development/자동화 2008/04/07 15:50 posted by k16wire
지난번에 작성한 모델을 가지고 코드를 생성합니다. 혹시 모델링이 힘드신 분을 위해 Magic Draw로 작성한 timeracker.xmi를 첨부합니다.



C:\timetracker 폴더에서 명령줄 창을 열고 다음과 같이 입력합니다.
mvn install
사용자 삽입 이미지

빌드가 성공적으로 끝나게 되면 common\target\src\org\andromda\timetracker 밑에 모델링한 클래스들이 생성되어 있는걸 확인할 수 있습니다.
  • UserService.java : 서비스 메소드에 대한 인터페이스
  • UserServiceImpl.java : 개발자가 실제로 비즈니스 로직을 구현하는 클래스
  • UserServiceException.java
  • UserVO.java
  • UserDaoImpl.java
이클립스에서 AndroMDA로 만든 프로젝트를 읽어들여 보겠습니다. 이클립스를 실행하고 timetracker 프로젝트를 import 합니다.
File > Import > Existing Projects into Workspace
사용자 삽입 이미지

지금부터는 이클립스를 이용하여 개발을 진행하면 됩니다. 개발이 진행되고 나면 Maven을 이용하여 JBoss에 배포하고 테스트하는게 가능합니다. handleGetAllUsers 메소드를 다음과 같이 구현합니다.
Collection userVOs = getUserDao().loadAll(UserDao.TRANSFORM_USERVO);
return (UserVO[])userVOs.toArray(new UserVO[0]);


크리에이티브 커먼즈 라이선스
Creative Commons License
TAG AndroMDA, MDA

MDA툴 AndroMDA - 모델링

Development/자동화 2008/04/07 13:13 posted by k16wire
안드로메다를 가지고 개발을 시작하기 위해서는 먼저 모델링을 해야 합니다. Magic Draw를 가지고 모델링하고 나중에 이 모델을 가지고 코드를 생성해 보겠습니다.

UML 모델링
UML 모델을 그리기 위해서 모델링 툴이 필요합니다. 안드로메다에서 권장하는 툴은 Magic Draw입니다. Magic Draw는 모델링 범위가 제한되어 있지만 자유롭게 사용이 가능한 Communitey edition을 제공합니다.
MagicDraw 9.5 SP1.1 Community edition Download(15.6 MB)
사실 안드로메다와 사용가능한 모델링 툴은 더 많이 있습니다. 더 자세한 정보는 다음 URL을 참고하세요.
CASE tools that have been tested for AndroMDA compatibility
MagicDraw를 설치하고 나면 프로그램을 실행하고 나서
C:/timetracker/mda/src/main/uml/timetracker.xml파일을 열어서 모델링을 시작합니다.
timetracker.xml 파일을 로딩하기 위해서는 안드로메다에 대한 UML 프로파일을 필요로 하는데 이를 설정해 주어야 합니다. andromda의 Magic Draw UML Profile은 Maven Repository에 이미 들어있습니다.
.m2\repository\org\andromda\profiles
timetracker.xml 파일 안에 보면 아래와 같이 UML Profile에 대한 경로가 지정되어 있는걸 찾을 수 있습니다.
<mdElement elementClass='FileProperty'>
  <value>&lt;maven2.repository&gt;\org\andromda\profiles\uml14\
andromda-profile\3.2\</value>
  <selectionMode xmi.value='0'/>
</mdElement>
이 timetracker.xml 파일을 MagicDraw가 읽어들이기 위해서는 Maven과 Maven2에 대한 환경번수를 지정해 줘야합니다. 처음 파일을 읽어들일때 물어보는대로 경로를 찾아줘도 되며 미리 설정을 해도 됩니다.

MagicDraw를 실행하고 메뉴에서 [선택사항] >[환경변수]를 선택하여 다음과 같이 메이븐 레파지터리를 추가 합니다. 그러면 MagicDraw가 자동으로 UML Profile을 읽어들이게 됩니다.
사용자 삽입 이미지

timetracker.xml 파일을 MagicDraw에서 성공적으로 읽어들이면 다음과 같은 화면을 볼 수가 있습니다.
사용자 삽입 이미지

이제 모델링을 시작할 준비는 모두 끝났으니 실제로 모델을 작성해 보겠습니다. 처음 만들것은 ValueObject인 UserVO입니다.
  1. 마우스 오른쪽 버튼을 눌러서 [새요소] > [패키지]를 선택하여 org.andromda.timetracker 패키지를 만들고 그 밑으로 vo 패키지를 생성합니다.
  2. vo 패키지에서 [새 다이어그램] > [클래스다이어그램]을 선택합니다. 다이어그램의 이름은 Value Object 입니다.
  3. 다이어그램의 왼쪽 툴바를 이용해 아래 그림에서 보이는것처럼 UserVO 클래스와 UserVO[]클래스를 생성합니다.
  4. UserVO 클래스의 스테레오 타입은 <<ValueObject>>이며 id,username,firstName,lastName 네개의 속성을 갖습니다.
사용자 삽입 이미지

이번에는 UserService 서비스를 생성하겠습니다.
  1. service 패키지를 생성합니다.
  2. service 패키지에서 services 이름을 갖는 클래스 다이어그램을 생성합니다.
  3. 스테레오 타입이 <<Service>>이고 이름이 UserService인 클래스를 다이어그램에 추가합니다.
  4. public UserVO[] getAllUsers() 오퍼레이션을 클래스에 추가합니다.
사용자 삽입 이미지

이번에 생성할 클래스는 User 엔티티입니다.
  1. domain 패키지를 생성합니다.
  2. domain 패키지에서 Domain Objets 이름을 갖는 클래스 다이어그램을 생성합니다.
  3. 스테레오 타입이 <<Entity>>인 User 클래스를 다이그램에 추가합니다.
  4. 클래스 속성에서 꼬리표 값이 andromda.persistence.table에 USER라고 값을 입력합니다.
  5. username, firstName, lastName 속성을 User 클래스에 추가합니다.
사용자 삽입 이미지

User 엔티티 UserVO 간에 Dependency 관계를 맺어줍니다. Value Object 클래스 다이어그램에 domain 패키지에 있는 User 클래스를 가져와서 의존성 관계로 연결합니다.
사용자 삽입 이미지

UserService 서비스와 User 엔티티간에도 의존성 관계를 연결합니다. services 클래스 다이어그램은 다음과 같이 변경됩니다.
사용자 삽입 이미지

이것으로 모델링이 끝났습니다. 다음에는 이 모델을 가지고 코드를 생성해 보겠습니다.


크리에이티브 커먼즈 라이선스
Creative Commons License
TAG AndroMDA, MDA

MDA를 지원하는 툴

Development/자동화 2008/03/10 08:11 posted by k16wire
MDA는 그 특성상 실용적으로 구현하기 위해서는 툴 사용이 필수적입니다. MDA를 지원하는 툴을 찾아봤습니다.

상용 도구
  • ALTOVA : MagicDraw 에 번들로 제공되지만 다른 UML 도구도 아답터 형태로 지원이 가능.
  • MCC(Model Component Compiler) : InferData사의 상용 MDA 도구로 J2EE에 대한 코드 생성만을 지원
  • OptimalJ : 컴퓨웨어사 상용 MDA 도구로 PSM 변환을 위해 패턴화된 노테이션을 지원. 기존 UML 과는 조금 다른 노네이션을  사용한다.
  • SosyInc Modeler and Transformation Engine : UML 모델을 기반으로 사전에 정의된 애플리케이션 아키텍처와 비즈니스 규칙을 기반으로 GUI를 생성해주는 변환 엔진
  • Model-in-Action : Mia 소프트웨어가 지원하는 도구로 코드 생성, 모델변환을 지원.
  • MetaEdit+ : 언어정의와 코드 생성을 위한 통합 모델링 도구. 메타모델과 모델을 위한 XML과 SOAP/Webservice 인터페이스 지원.
  • MDAWorkbench : 텍스트와 모델 변환 툴셋. 모든 종류의 메타모델 지원. Eclipse의 EMF를 기반으로 한다. 세가지 에디션 지원(Free, Academic, Profession)
  • iQgen : 템플릿 기반의 도구로 XMI, XML, ECore와 같은 여러 포멧의 모델 지원, JSP 템플릿으로 템플릿 작성 지원
  • Acceleo : Eclipse기반의 도구로 메타모델 지원
  • jmatter :

오픈소스
  • AndroMDA : UML/XMI로부터 J2EE 코드를 생성하는 오픈소스 템플릿 툴. VTL 스크립트를 지원하며 넷빈의 MDR을 지원
  • Groovy MDA : 스크립트 언어인 그루비를 이용해서 UML로부터 코드를 생성해 내는 도구
  • Sculptor : MDSD, DDD를 지원하는 스프링 프레임워크 기반의 코드 생성을 지원하는 MDA 도구
  • Taylor : 루비온레일스를 기반으로 하는 MDA도구로 J2EE 애플리케이션 코드를 생성
  • OpenArchitectureWare : XMI와 통합되어 코드를 생성해주는 템플릿 기반의 프레임워크
  • Kermeta : OCL 지원, 이클립스 EMF의 확장셋, 이클립스 워크벤치형태로 메타 프로그래밍 환경
  • MOFScript :
  • MTF(The IBM Model Transformation Framework) :
  • The ATL Engine : 아틀라스 그룹에서 지원하는 모델 변환 언어와 툴킷, 이클립스 서브 프로젝트
  • General Model Transformer(GMT) : 이클립스 서브 프로젝트로 이클립스 플랫폼 기반의 모델 변환 기술.
  • OpenMDX : J2EE와 .NET에 대한 코드 생성을 지원하고 XMI를 지원하는 도구와 통합이 가능한 MDA 환경
  • XDoclet : 속성기반의 J2EE 코드 생성 도구. MDA 도구는 아니지만 활용도가 높음
  • Middlegen : JSBC, Velocity, Xdoclet, Ant 기반의 데이터베이스 코드 생성 도구
Reference : http://www.modelbased.net/mda_tools.html

크리에이티브 커먼즈 라이선스
Creative Commons License

'Development > 자동화' 카테고리의 다른 글

MDA툴 AndroMDA - 코딩  (0) 2008/04/07
MDA툴 AndroMDA - 모델링  (0) 2008/04/07
MDA를 지원하는 툴  (0) 2008/03/10
MDA툴 AndroMDA - 샘플 애플리케이션 TimeTracker  (0) 2008/03/07
MDA툴 AndroMDA - 설치 및 설정  (0) 2008/03/06
MDA툴 AndroMDA - 개요  (0) 2008/03/06
TAG MDA
안드로메다에는 빨리 안드로메다를 경험해 볼 수 있도록 간단한 근태관리 시스템을 샘플 애플리케이션으로 제공하고 있습니다. 다음 그림은 기존에 사용하던 타임카드를 나타냅니다.

사용자 삽입 이미지

다운로드 및 설치
안드로메다 사이트에 가서 샘플애플리케이션을 다운로드 받아서 C:\timetracker-completed폴더에 압축을 해제합니다. 폴더를 변경하면 샘플내의 pom.xml 파일을 변경해줘야 합니다.
C:\timetracker-completed폴더로 이동하여 명령줄 창에서 다음과 같이 입력하고 실행합니다.
mvn install
그러면 TimeTracker가 필요로 하는 모든 jar 파일을 자동으로 다운로드 하여 로컬 저장소에 넣어놓습니다.
사용자 삽입 이미지
C:\timetracker-completed\pom.xml 파일에 오류가 있는거 같습니다. 파일내용중에 <modules/>에 대한 부분이 있는데 pom.xml 파일을 열어서 아래와 같이 app 모듈을 주석처리 하셔야 위와같은 결과를 볼 수 있습니다.
<modules>
        <module>mda</module>
        <module>common</module>
        <module>core</module>   
        <module>web</module>  
        <!--module>app</module-->        
</modules>

Database 만들기

MySQL 데이터베이스에 timetracker라는 이름의 데이터베이스를 생성합니다. 그리고 timetracker라는 아이디를 가진 사용자를 생성하여 timetracker 데이터베이스에 대한 모든 권한을 줍니다. 사용자 암호 역시 timetracker 입니다. 그리고 나서 명령줄 창에서 다음 명령어를 실행합니다.
mvn -f core/pom.xml andromdapp:schema -Dtasks=create
쿼리문이 실행되면 timetracker 데이터베이스에 테이블이 생성됩니다.
사용자 삽입 이미지
MySQL 데이터베이스에 대한 드라이버가 없다는 오류가 발생할 수 도 있습니다. 이 경우에는 MySQL의 JDBC 드라이버 파일인 mysql-connector-java-5.0.8-bin.jar를 maven의 lib 폴더에 넣어주면 인식합니다.

샘플 데이터 추가
샘플 데이터가 들어있는 쿼리 파일은 C:\timetracker-completed\app\src\main\sql에 들어 있습니다.
static-data-insert.sql
test-data-insert.sql
이 쿼리파일을 이용해서 샘플데이터를 timetracker 데이터베이스에 추가합니다.

애플리케이션 배포
이제 Timetracker를 JBoss 서버에 배포하려고 합니다. 배포를 위한 EAR를 만들기 위해 다음과 같이 명령줄 창에서 입력하고 실행합니다.
mvn -f app/pom.xml -Ddeploy
app/pom.xml 파일에도 약간의 오류가 있습니다. pom.xml 파일 중간에 보면 <version>이 빠져 있는 부분이 2군데 있습니다. 이 부분을 추가해줘야 합니다.
<dependency>
                <groupId>${pom.groupId}</groupId>
                <artifactId>timetracker-common</artifactId>
                <version>${pom.version}</version>   
                <exclusions>
                    <exclusion>
                        <groupId>${pom.groupId}</groupId>
                        <artifactId>timetracker-mda</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.andromda.profiles.uml14</groupId>
                        <artifactId>andromda-profile</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>commons-digester</groupId>
                <artifactId>commons-digester</artifactId>
                <version>1.7</version>                  
                <exclusions>
                    <exclusion>
                        <groupId>xml-apis</groupId>
                        <artifactId>xml-apis</artifactId>
                    </exclusion>
                </exclusions>
</dependency>
명령이 성공적으로 실행되면 다음과 같이 JBoss의 default\deploy 위치에 timetracker-1.0-SNAPSHOT.ezr이 배포되었음을 알려줍니다.
사용자 삽입 이미지

애플리케이션 테스트
이제 JBoss를 실행하고 TimeTracker를 테스트해 볼 순서가 되었습니다. JBoss의 %JBOSS_HOME%\bin\run.bat 파일을 실행합니다. JBoss가 실행되고 TimeTracker가 올라오는것을 로그로 확인할 수 있습니다. 브라우저를 실행하고 다음 URL을 입력하여 TimeTracker를 시작합니다.
http://localhost:8080/timetracker
사용자 삽입 이미지

Username은 nbhatia, Password는 cooldude로 입력하고 Log In을 눌러서 TimeTracker로 로그인 합니다.
Search timecards를 눌러서 현재 타임카드를 조회해 볼 수 있습니다.
사용자 삽입 이미지

지금까지 안드로메다로 애플리케이션을 개발하는 방법에 대해 TimeTracker라는 샘플 애플리케이션을 통해서 살펴봤습니다. 다음에는 좀 더 상세하게 들어가 보도록 하겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG MDA

MDA툴 AndroMDA - 설치 및 설정

Development/자동화 2008/03/06 08:52 posted by k16wire
안드로메다를 직접 써보도록 하겠습니다. 안드로메다를 사용하기 위해서 미리 설치/설정 해야 하는 사항이 몇가지 있습니다.

안드로메다를 사용하기 위해 설치해야 하는 도구
  1. JDK : 1.4이상, 필수
  2. Maven : Maven 2.0, 필수
  3. JBoss or Tomcat : 직접적으로 관련은 없지만 생성한 코드를 배포할때 사용, 선택
  4. MySQL : 직접적으로 관련은 없지만 코드를 생성하여 테스트 할때 필요, 선택
  5. Eclipse : 생성된 코드 테스트를 위해 필요, 선택
환경설정
  • 환경변수 추가 : JAVA_HOME, MAVEN_HOME, JBOSS_HOME, CATALINA_HOME, PATH
  • path에 추가 : java와 maven의 bin 위치를 path에 추가
각 환경변수들은 위에서 설치한 도구들의 홈 디렉토리를 가리키는 변수들입니다.

Maven 설정
먼저 홈 디렉토리에 build.properties 파일을 추가합니다. 윈도우즈라면 홈 디렉토리 위치는 C:\Documents and Settings\[계정] 입니다.
build.properties 파일은 Maven을 위한 리모트 레파지터리 위치를 정의하는 파일로 파일 내용은 다음과 같습니다.
maven.repo.remote=http://repo1.maven.org/maven/,
http://www.ibiblio.org/maven,http://team.andromda.org/maven
Maven AndroMDA 플러그인 설치
  1. AndroMDA 플러그인 다운로드
  2. maven 레파지터리(C:\Documents and Settings\your user name\.m2\repository)에 압축을 풀어서 복사
  3. 임시폴더를 만들어서 다음 내용을 갖는 pom.xml 파일을 만듭니다.
  4. 인자없이 mvn을 실행합니다.
  5. 임시폴더를 삭제합니다.


more..


Maven의 컴맨드 라인 명령어에 익숙하지 않으신 분들은 Command Line Reference를 참고하시면 이해에 도움이 될거 같습니다.

Eclipse 설정
이클립스를 설치하고 나서 클래스 변수에 maven 레파지터리(C:\Documents and Settings\your user name\.m2\repository)를 M2_REPO로 정의해야 합니다.

이 정도면 안드로메다를 사용하는데 필요한 설치/설정은 된거 같습니다. 다음에는 안드로메다가 제공하는 샘플을 가지고 직접 사용해 보겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

MDA툴 AndroMDA - 개요

Development/자동화 2008/03/06 08:52 posted by k16wire
안드로메다라고 부르는 AndroMDAUML 모델을 기반으로 J2EE, .NET 코드 생성을 지원하는 템플릿 기반의 프레임워크 입니다. 다른 MDA 도구와 달리 Spring, jBPM, Struts, JSF, Hibernate와 같은 프레임워크에 코드 생성을 직접 지원합니다. 원하는 UML 도구로 생성한 모델을 기반으로 코드를 생성 할 수 있습니다.

사용자 삽입 이미지

현재 안드로메다 최신버전은 4.0입니다면 여기서는 3.2버전을 기준으로 기본적인 특징들을 살펴보겠습니다.
UML 버전
안드로메다는 현재 UML 1.4를 지원합니다.(2008/02/19 현재) UML 2.0은 개발중에 있습니다.
UML 툴 지원
MagicDraw, Poseidon, Enterprise Architect를 지원합니다. 더 자세한 UML툴에 대한 안드로메다 호환성 테스트 결과는 CASE tools that has been tested for AndroMDA compatibility를 참고하세요.
카트리지
AndroMDA 4.0이 현재 지원하는 카트리지를 나열해 보겠습니다.
  • Spring
  • EJB 2/3
  • Webservices
  • JSF
  • XSD
  • .NET
  • Hibernate
  • Struts
기존 카트리지를 수정해서 자신만의 카트리지를 만들수도 있습니다. 메타 카트리지라고 부르는 기존 카트리지를 카트리지 툴킷을 이용해서 수정하게 되면 새로운 카트리지를 만들 수 있고 이 카트리지로 UML 툴을 이용해서 소스 생성이 가능합니다.
IDE
안드로메다는 이클립스 플러그인 형태로 설치가 됩니다.
템플릿
Velocity, FreeMarker를 지원합니다.
텍스트 생성
소스코드, SQL, HTML, O/R 맵핑 파일 생성이 가능합니다.

이런 특징을 갖고 있는 안드로메다로 어떤일을 할 수 있는 걸까요 ? 다음과 같은 아키텍처를 갖는 엔터프라이즈 애플리케이션을 만든다고 가정 해 보겠습니다.
사용자 삽입 이미지

레이어드 아키텍처는 아키텍처를 정의하는데 가장 많이 사용되는 아키텍처 스타일입니다. 각 레이어별 설명은 생략하겠습니다. 이런 아키텍처를 가진 애플리케이션을 안드로메다로 개발하려면 각 레이어 별로 사용하는 기술셋이 맵핑되어야 합니다.
사용자 삽입 이미지

안드로메다를 이용하면 오른쪽에 나와있는 기술셋으로 구현된는 J2EE 애플리케이션을 모델로부터 생성해 내는게 가능합니다. 프레임워크를 위한 설정파일은 자동으로 생성되며 개발자는 비즈니스 로직 구현에만 전념하면 됩니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG AndroMDA, MDA
AgitarOne이 만들어 주는 테스트 코드는 어느정도 수준일까요 ? 소스코드에 따라서 달라지기 때문에 여러 소스를 가지고 확인해 보도록 하겠습니다.

먼저 간단한 Value Object 수준의 Java Bean 클래스를 가지고 테스트 코드를 만들어 봤습니다. (AddressBean.java)
생성자와 각각의 getter, setter 쌍들에 대한 테스트 메소드가 생성되는 군요.
사용자 삽입 이미지

이번에는 좀 더 복잡한 메소드 내에 if 문이 있는 경우의 소스를 가지고 테스트 코드를 만들어 보겠습니다. (AutoCompleteBean.java)
사용자 삽입 이미지

메소드의 인자가 객체여서 인자를 만드는 로직이 복잡하기는 한데 다른 부분만 비교해 보니 if 문에 의한 경우의 수만큼 테스트 코드가 생성됩니다.
사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지

이번에는 for 루프와 if문이 같이 있는 더 복잡한 경우를 가지고 테스트 코드를 만들어 봤습니다. (CaptchaValidateFilter.java)

결과는 기대했던것 보다 테스트 코드의 양이 적게 나왔습니다. if문의 모든 경우와 for문의 모든경우의 곱이 나올거라 생각했는데 막상 결과를 보니 for문의 경우의 수만큼만 생성해줍니다. 코드를 보니 내부에 if문의 경우의 수도 모두 만족하고 있네요. (그래서 더이상 만들필요가 없었나 봅니다.)
사용자 삽입 이미지

하단의 뷰를 보면 각 테스트 클래스 별로 현재 상태와 테스트 커버리자가 보여집니다.
사용자 삽입 이미지

이외에도 Framework 기반의 코드나 EJB 등등에 대한 검토가 더 필요할 거 같습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Ant가 워낙 널리 쓰이다 보니 Maven을 설명할때 "Ant 보다 좋다.", "Ant의 확장판이다." 처럼 Ant와 비교할때가 많습니다. 하지만 Maven을 Ant와 같은 빌드 스크립트로 이야기하기에는 Maven의 기능이 너무 많습니다.

Maven이 Ant가 가진 많은 단점을 보완하는것은 맞습니다. J2EE 프로젝트가 원체 다양해 지다 보니 Ant의 스크립트도 복잡해졌습니다만 Ant 스크립트는 단순한 XML 구조이기 때문에 이를 수용하기에 적합하지 않았습니다. 그래서 maven은 많은 좋은 사례들을 참고하여 미리 고울을 정의해 놓았습니다. Ant에서 스크립트를 만드느라 고생해야 하는걸 maven에서는 하지 않아도 됩니다.

즉 maven을 사용하게 되면 공통된 프로젝트 구조를 정의해 놓고 이 컨벤션에 맞는 빌드 프로세스를 사전에 정의해 놓음으로서 프로젝트와 빌드 프로세스를 분리할 수가 있는 것 입니다. maven의 빌드 라이프 사이클은 따로 살펴볼만한 가치가 있습니다.

m2라고 불리는 maven2는 maven1을 기반으로 좀 더 정형화된 빌드 라이프사이클 관리를 위해서 새롭게 개발된 버전입니다. 여기서는 maven1.02를 사용하겠습니다.

POM에 대한 기본적인 내용만 알아보겠습니다. POM은 Project Object Model의 약자입니다. maven1에서는 Project.xml이라는 이름으로 정의했으나 maven2에서는 Pom.xml이라는 이름을 갖습니다. POM에는 dependencies, task, goal 등을 정의합니다. 모든 POM은 기본 POM인 Super POM을 상속받습니다.

여기서도 일단 Maven을 Ant 처럼 프로젝트를 빌드하는 용도로만 사용하려고 합니다. 그러기 위해서는 먼저 Maven에 대해 알아야 합니다. 직접 만들까 하다가 뒤져보니 비슷한 강좌가 있어서 링크만 걸겠습니다.
위 강좌를 이해하시면 여기서 필요한 작업은 충분히 하실수 있을거라 믿습니다. 간단히 정리해 봤습니다.
  • Maven 다운로드
  • Maven 설치
  • MAVEN_HOME 환경변수 추가
  • PATH에 Maven의 bin 폴더 추가
  • 테스트
maven의 기본적인 용법만 몇가지 정리해 봤습니다.

maven이 제대로 설치되었는지 확인하기 위해서 콘솔창에서 다음과 같이 실행합니다.
maven -v
maven으로 새로운 프로젝트를 생성합니다.
maven genapp
genapp는 maven의 기본 프로젝트 구조를 바탕으로 src폴더, conf폴더와 같은 새로운 프로젝트 스켈레톤을 생성해 줍니다. 이 구조는 원하는 대로 변경이 가능합니다.

maven에서 설정을 위해 사용하는 파일은 project.xml과 project.properties 2개입니다. project.xml은 라이센스, 개발자, 소스코드 관리, 프로젝트 개요, 메일링 리스트등의 프로젝트 상세내역을 정의하며, project.properties는 프록시 설정과 같은 정보가 들어갑니다.
maven.proxy.host = proxy.company.com
maven.proxy.port = 80
maven.proxy.username = username
maven.proxy.password = password
maven은 플러그인이라는 확장구조를 지원합니다. 이 덕분에 maven이 자체작으로 가지고 있는 고울(goal)이외에 새로운 고울을 추가할 수 있습니다. ant의 타겟(target)에 해당하는 것이 maven의 고울입니다.

예를 들어 jar라는 플러그인의 jar 고울을 실행하고 싶다면 아래와 같이 입력하면 됩니다. 하지만 줄여서 그냥 jar 라고 해도 됩니다. 이를 shortcut이라 부릅니다.
maven jar:jar
maven jar
maven이 사용가능한 모든 플러그인으 보고 싶다면 -g 옵션을 주면 됩니다.
maven -g
-P 옵션과 플러그인명을 주면 플러그인 내의 모든 고울을 볼 수 있습니다.
maven -P jar
java 소스를 컴파일 하려면 java 플러그인의 compile 고울을 사용합니다.
maven java:compile
JUnit 테스트 코드를 갖고 있다면 test 플러그인을 사용합니다.
maven test
maven -X test
JavaDoc 문서를 생성합니다.
maven javadoc
프로젝트 정보를 나타내는 사이트를 만들어 줍니다.
maven site

Maven의 컴맨드 라인 명령어에 익숙하지 않으신 분들은 Command Line Reference를 참고하시면 이해에 도움이 될거 같습니다. 이 정도면 maven으로 할 수 있는 일이 뭐라는 정도는 잘 아셨을거 같습니다. 실제 작업은 다음 포스트에 적어보겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG maven
루비 개발환경을 뭘로 할까 고민 하다가 일단 가볍게 가기 위해 설치되어 있는 UltraEditor로 설정을 해 봤습니다. 과거 Java 개발환경 설정했던 기억을 되살려서..

1.Syntax Highlighting 설정
[Advanced] > [Configuration] 메뉴에서 대화상자가 뜨면 Syntax Highlighting 탭을 선택합니다. [Open]을 누르면 WORDFILE.TXT가 열립니다.
사용자 삽입 이미지

이 파일 마지막 부분에 루비 문법파일을 붙여넣고 저장하면 그 다음부터는 루비파일에 대한 문법이 하이라이팅되어 나타납니다.

2.루비 실행 환경 등록
에디터 내에서 루비를 실행해 볼 수 있도록 ruby 명령어를 등록해 보겠습니다. [Advanced] > [Tool Configuration] 으로 갑니다. 아래와 같이 입력하고 [Insert]를 누르면 [Advanced] 메뉴 하단에 [ruby]라는 메뉴가 새롭게 추가됩니다.
사용자 삽입 이미지

3.hello.rb 실행
이제 테스트 해볼 차례입니다. 아무곳에서 hello.rb 파일을 만듭니다. 그러고서 에디터에서 읽어들여 [ruby] 메뉴를 실행하면 하단의 Output Window에 Hello World 라고 결과가 나타나는걸 볼 수 있습니다.
사용자 삽입 이미지

간단하게 UltraEditor에서 루비 코딩을 할 수 있는 설정을 해봤습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
AgitarOne은 이클립스 플러그인으로 설치 됩니다. 따라서 이클립스가 반드시 설치되어 있어야 합니다. 이클립스를 실행하고 [Help] > [Software Update] > [Find and Install] 메뉴로 갑니다.

사용자 삽입 이미지
Search for new features to inatll을 선택하고 [Next]를 누릅니다.

사용자 삽입 이미지
새로운 사이트를 등록하기 위해서 우측의 [New Remote Site]를 누릅니다.

사용자 삽입 이미지
Name과 URL을 위와 같이 채우고 [OK]를 누릅니다.

사용자 삽입 이미지
위와 같이 AgitarOne이 등록된것을 확인할 수 있습니다. [Finish]를 누릅니다.

사용자 삽입 이미지
AgitarOne을 설치하겠느냐고 물어봅니다. [Next]를 누릅니다.

사용자 삽입 이미지
설치될 각 feature들이 나오는데 선택하면 오른쪽에 설명을 볼 수 있습니다. 라이센스 동의를 선택하고 [Next]를 누릅니다.

사용자 삽입 이미지
마지막으로 설치될 위치를 물어본디ㅏ. [Finish]를 누르면 설치가 시작됩니다. 플러그인이 모두 설치되기 까지는 대략 15분 정도가 소요됩니다.

사용자 삽입 이미지
설치가 끝나고 이클립스를 재시작 하면 툴바에 AgitarOne에 대한 아이콘이 3개 추가된것을 볼 수 있습니다.

이제 라이센스를 설정해야 합니다. [Window] > [Preferences] > [Agitar] > [Server] 메뉴로 갑니다. 메일정보를 이용하여 아래와 같이 설정합니다.
사용자 삽입 이미지

라이센스 설정을 하지 않고 실행하게 되면 다음과 같이 에러가 나면서 라이센스를 등록하라고 알려줍니다.
사용자 삽입 이미지

이제 실제 소스를 가지고 테스트 코드를 생성해 보겠습니다. 샘플 애플리케이션으로는 PetStore 2.0을 사용하겠습니다. 먼저 소스를 선택하고 툴바에서 [Generate Tests]를 선택합니다.
사용자 삽입 이미지

처음 실행을 하게되면 소스를 서버로 올리는 작업이 진행됩니다. 자바 소스파일이 120개 정도인데 대략 25분 정도 걸리더군요. 매번 이러면 어쩌나 했는데 처음 한번만 이렇고 그 다음부터는 1분 이내로 끝납니다.
사용자 삽입 이미지

테스트 코드 생성작업이 끝나면 아래 보이는 것처럼 agitar/test라는 소스 폴더에 따로 테스트 코드만 생성되는 것을 확인할 수 있습니다. 해당 코드를 선택하고 [Run As] > [Agitar Junit Test]를 선택하면 테스트가 실행됩니다.
사용자 삽입 이미지


크리에이티브 커먼즈 라이선스
Creative Commons License
TDD하면 어떤생각이 드시나요 ? XP 프랙티스중에 가장  성공한 프랙티스이지만 현실은 조금 다릅니다. 누구나 좋다고 생각하지만 적용하는것은 어려워 하죠.  사실 테스트 코드를 작성하는데 많은 시간과 노력이 필요한것은 사실입니다.
Agita Software의 AgitarOne은 그런 어려움을 해소하기 위해서 개발된 소프트웨어 입니다. 이와 유사한 도구로는 Parasoft의 JTest가 있습니다.
Agitar : http://www.agitar.com/
JTest : http://www.parasoft.com/jsp/home.jsp
AgitarOne의 크게 두부분으로 구성되어 있습니다.
  • JUnit Generator
  • Agitator
AgitarOne의 주요 특징을 요약해 보면 다음과 같습니다.
  • JUnit 코드 생성 기능 : 소스코드를 분석하여 JUnit Test Case 코드를 생성해 준다.
  • 탐색적 테스팅(Explorary Testing) 지원 : 소스코드에 대한 정적 분석을 기반으로 잠재적 버그를 체크할 수 있게 지원한다.
  • 정적 분석
  • 대쉬보드 : 테스트 커버리지와 같은 메트릭 정보를 보여준다. Cruise Control의 대쉬보드 내장
  • CI : Cruse Control 내장
사용자 삽입 이미지

현재 AgitarOne 5.0이 최신버전이며 구입하기전에 30일간 시험판을 사용해 볼 수 있게 해주고 있습니다. 시험판을 사용하는 방법은 두가지 인데
  • 로컬머신에 설치해서 사용하기 : 30일 제한, 사용가능한 클래스 수 500개로 제한
  • 서버에 호스팅으로 사용하기 : 30일 제한, 클래스 제한 없음
검토를 위해서는 오히려 호스팅이 편할수 도 있을거 같네요. 클래스 500개는 너무 작으니..

서버 호스팅 버전으로 사용하겠다고 신청을 하면 다음과 같은 메일이 날라옵니다.
사용자 삽입 이미지
중간에 30일간 쓸수 있는 날짜가 있고 하단에 설치 순서가 3단계로 나와 있습니다. 이클립스 업데이트 URL이 보이네요.

사용자 삽입 이미지

2번째 단계로 플러그인에 라이센스를 등록하는데 필요한 정보가 나와 있습니다.
사용자 삽입 이미지
마지막에는 사용자 가이드에 대한 링크가 나와 있네요.


크리에이티브 커먼즈 라이선스
Creative Commons License
이제 끝이 보이네요. 이번에는 Schedule을 생성합니다.

Schedules 탭으로 이동한후 새로운 Schedule을 추가합니다.
사용자 삽입 이미지

Name : petstore20
Next build version : petstore20-0
Trigger type : manual
Build necessary condition : always
Associated builders : ant 1.6.2
Next build version을 perstore20-0으로 놓게 되면 빌드가 될때마다 -1, -2 로 증가하게 됩니다. Build necessary condition은 원래 형상서버에 변경이 생겼을때만 빌드 하도록 놓는게 기본값(vcsModified or dependencyNewer)입니다만 여기서는 테스트를 위해 항상 빌드하도록 설정합니다.

저장을 하고나면 다음과 같은 결과를 볼 수 있습니다. 저는 테스트를 위해 이미 빌드를 실행했기 때문에 빌드가 성공했다는 파란 동그라미가 나타납니다. 오른쪽 상단의 build manualy를 누르고 [Save]를 누르면 빌드가 실행됩니다. build history 아이콘을 누르면 빌드 결과를 볼 수 있습니다.
사용자 삽입 이미지

전체 4번 빌드가 실행되었고 그중에서 세번 실패하고 1번 성공했군요. Version을 누르면 상세 화면으로 이동합니다.
사용자 삽입 이미지

상세화면에서는 빌드 시작일, 종료일, 빌드에 걸린시간, 빌드 로고, 리비전 로고를 볼 수 있습니다.
사용자 삽입 이미지

간단하게 나마 Luntbuild와 Subversion을 연동해봤습니다.

내용이 간단해서 더 상세하게 다룰 내용이 많이 남은거 같습니다. CVS, Visual Source Safe와 연동한다거나 Maven과 같은 빌더를 이용하는것, 구체적으로 사용되는 시나리오등도 필요할 거 같네요.
틈나는 대로 위와 같은 내용으로 이 포스트를 확장해 가려고 합니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG CI, Luntbuild

Ant Script Builder에 대한 논문

Development/자동화 2008/02/11 13:12 posted by k16wire
Ant Script 빌더에 대한 내용을 찾다가 발견한 관련 논문입니다. 혹시 괜찮은 Ant Script Builder 아시는분 추천 부탁드려요. ^^
Development Of An Ant Script Builder With Throught To Usuability And Best Practices



크리에이티브 커먼즈 라이선스
Creative Commons License
TAG Ant
이번에는 Luntbuild에 Version Control System을 등록하는것에 대해 알아보겠습니다. Luntbuild가 지원하는 Version Control System에는 어떤것들이 있을까요 ?
  • AccuRev
  • Base Clearcase
  • Dynamic Clearcase
  • CVS
  • File System
  • MKS
  • Perforce
  • Star Team
  • Subversion
  • SubversionExe
  • ClearcaseUCM
  • Visual Source Safe
많이 사용하는 형상관리 시스템을 대부분 지원하기 때문에 따로 커스터마이징이 필요없을 정도입니다. (물론 저희회사에서 사용하는 Dimensions은 없습니다. 슬픈 현실이죠. --;)
여기서는 Subversion을 사용하겠습니다.

1.Project 탭에서 해당 프로젝트 이름을 클릭하여 프로젝트를 선택합니다.
사용자 삽입 이미지

2.오른쪽 상단의 Edit 아이콘을 클릭하여 프로젝트 수정화면으로 들어갑니다.
사용자 삽입 이미지

3.Builders탭으로 이동하여 new builder 아이콘을 클릭하여 빌더를 추가합니다.
Luntbuild가 지원하는 builder는 다음과 같습니다. 여기서는 Ant를 사용하겠습니다.
  • Ant
  • Maven
  • Maven2
  • Command
  • Rake
사용자 삽입 이미지

builder type : Ant builder
Name : ant 1.6.2
Command to run Ant : E:\j2ee\devlib\apache-ant-1.6.5\bin\ant.bat
Build script path : /Petstore20/build/build.xml
Build targets : all
Ant는 1.6.2 버전을 사용했습니다. 미리 Ant를 받아서 압축을 풀어놓으셔 하며 그 위치를 명시하면 됩니다. 빌드 스크립트는 테스트용으로 빈 파일을 하나 만들어서 사용했으며 스크립트 위치는 /build 폴더 입니다.

build.xml
<project name="PetStore20 Project" default="all" basedir=".">
    <property file="build.properties" />
    <!-- ready to build (ejb deploy descriptor copy) -->
    <target name="init">
        <regexp />
    </target>
    <target name="all" depends="init">
    </target>
</project>
사용자 삽입 이미지

혹시 이클립스에만 추가하고 Subversion에 Add 하지 않으면 빌드서버가 받을 수 없기 때문에 에러가 발생합니다. 반드시 Add하고 Commit을 해 주어야 합니다.

Build success condition은 Regular Expression으로 빌드결과를 검증할 수 있는 항목입니다. 나중에 자세힌 한번 알아봐야 겠습니다. 사실 빌드가 성공적으로 이루어졌는지 세밀하게 검증하는게 중요한데 유용할 듯 합니다.

저장을 하고나면 아래와 같이 Antbuilder가 추가된것을 확인할 수 있습니다.
사용자 삽입 이미지


크리에이티브 커먼즈 라이선스
Creative Commons License
Luntbuild를 실행하고 웹브라우저를 이용해서 Admin Console에 로그인합니다.
http://localhost:8888/luntbuild/luntbuild-login.html
사용자 삽입 이미지

Luntbuild에 로그인 할 수 있는 계정은 크게 3가지 입니다.
  • System Administrator : 디폴트 정보는 luntbuild/luntbuild
  • 등록된 사용자 : SA가 등록한 사용자
  • 익명 사용자
luntbuild 사용자로 로그인 하게 되면 5개의 탭으로 구성된 화면을 볼 수 있습니다.
사용자 삽입 이미지

  • Builds : 프로젝트 빌드 결과를 보여준다.
  • Projects : 등록된 프로젝트를 보여준다.
  • Users : 등록된 사용자를 보여준다.
  • Properties : 일반적인 프로젝트 설정 정보를 보여준다.
  • Administration : import/export와 같은 관리자 기능을 보여준다.
Projects 탭의 오른쪽 상단의 New Project 아이콘을 이용하여 새로운 프로젝트를 생성합니다.
사용자 삽입 이미지

새로운 프로젝트를 만들기 위해서 다음과 같은 값들을 입력해야 합니다.
  • Name : 프로젝트를 구분해주는 이름, 수정불가
  • Description : 프로젝트 설명
  • Project admins : 'project admin' 권한을 갖는 사용자
  • Project builders : 'project builders' 권한을 갖는 사용자
  • Project viewers : 'project viewers' 권한을 갖는 사용자
  • Notification methods : 이 프로젝트 빌드에 사용할 통지 방법
  • Notification users : 프로젝트 빌드결과를 통지 받게될 사용자
  • Variables : OGNL 표현식을 따르는 변수 정의
  • Log level : 프로젝트 로깅 수준
사용자 삽입 이미지

간단하게 다음 값으로 프로젝트를 생성합니다.
  • Name : petstore
  • Description : PetStore build
  • Notification methods : Email
  • Notification users : ,users who checked in code recently>
성공적으로 프로젝트가 생성되고 나면 Projects 메뉴에서 petstore 프로젝트를 볼 수 있습니다.
사용자 삽입 이미지

다음에는 VCS(Version Control System) adaptors를 생성하는 것부터 살펴보도록 하겠습니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
TAG CI, Luntbuild
Luntbuild의 실행결과는 데이터베이스에 저장하는것이 가능합니다. 굳히 무겁게 DB까지 연동할 필요가 있냐고 이야기 하는 분도 계실듯 합니다. 하지만 빌드결과는 개발관리 측면에서 본다면 유용한 정보가 될 수 있습니다. Luntbuild가 지원하는 DB는 다음과 같습니다.
  • HSQL
  • MySQL
  • PostgreSQL
  • SqlServer
  • Oracle
  • Derby
  • H2
이 정도면 왠만한 데이터베이스는 다 지원한다고 말할 수 있을거 같네요. 이중에서 MySQL만 한번 연동해 보겠습니다.

1.MySQL을 설치합니다.
설치가 어렵지 않으니 그냥 하시면 될거 같구요. 설치하면서 사용자계정,암호,포트번호 등을 기억해 두셔야 합니다. 클라이언트 툴을 하나쯤 사용하시는게 편합니다. 제가 주로 사용하는 툴을 SQLyog 입니다.

2.Luntbuild에서 MySQL 관련 프로퍼티를 수정합니다.
이 설정파일은 \luntbuild-1.5.4.1\web\WEB-INF\jdbc.mysql.properties입니다. 이 파일을 열어서 아래와 같이 수정합니다. 포트나 서버이름은 자신의 MySQL에 따라 다를수 있습니다.
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/luntbuild
hibernate.dialect=org.hibernate.dialect.MySQLDialect
jdbc.username=luntbuild
jdbc.password=luntbuild
3.MySQL에서 luntbuild 데이터베이스를 생성합니다.
SQLyog의 [Tools] > [User Manager] > [Add User] 메[뉴를 이용해서 luntbuild 사용자를 추가합니다. Global 속성은 주지 않아도 됩니다.
사용자 삽입 이미지

[DB] > [Create Database] 메뉴를 이용해서 luntbuild 데이터베이스를 생성합니다.
사용자 삽입 이미지

[Tools] > [User Manager] > [Manage Permissions] 메[뉴를 이용해서 luntbuild 데이터베이스에 대한 권한을 luntbuild 사용자에게 추가합니다.
사용자 삽입 이미지

[DB] > [Import Bach File] 메뉴를 이용해서 luntbuild 데이터베이스에 필요한 테이블을 생성합니다. luntbuild.sql 파일은 \luntbuild\db 폴더밑에 해당 데이터베이스 폴더에 들어있습니다.
사용자 삽입 이미지

그러면 다음처럼 빌드결과를 저장하는데 필요한 테이블이 생성되는것을 확인할 수가 있습니다.
사용자 삽입 이미지

이제 설정은 모두 끝났습니다. 실제로 빌드결과가 데이터베이스에 저장되는 모습은 프로젝트 설정을 완료한후 빌드를 실행해 본 다음에 확인하도록 하겠습니다.

 ps) 다른 데이터베이스와 연동하는 방법은 Luntbuild - Installation Guide를 참고하시기 바랍니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
Luntbuild는 가장 많이 사용되는 빌드서버라고 할수 있습니다. 이번에는 이 Luntbuild를 이용해서 서브버전의 형상을 빌드하는것에 대해 알아보겠습니다.
그럴려면 먼저 서브버전이 설치되어 있고 Luntbuild에서 읽어올 레파지터리가 만들어져 있어야 합니다. 이 부분은 제가 이전에 포스팅한 Collabnet Subversion으로 형상서버 꾸미기를 참고하세요.

Luntbuild를 설치하겠습니다. 설치는 단순합니다. http://luntbuild.javaforge.com에 가셔서 Luntbuild를 다운로드 해서 적당한 위치에 압축을 풀면 됩니다. 저는 Luntbuild 1.5.4 버전을 사용하였습니다.
Luntbuild는 웹기반의 애플리케이션이며 두가지 방식으로 사용하는게 가능합니다.:Standalone 방식과 서블릿 컨테이너에 배포하여 사용하는 방식

Standalone방식으로 실행하기 위해서는 \bin 폴더에 있는 luntbuild.bat 파일의 $INSTALL_PATH를 실제로 Luntbuild가 설치된 곳으로 바꿔줘야 합니다.
@echo off

cd /D "$INSTALL_PATH"
if "%1" == "" (
set host="localhost"
) else (
set host="%1"
)
if "%2" == "" (
set port="8080"
) else (
set port="%2"
)

java -jar luntbuild-standalone.jar %host% %port% %3

luntbuild-1.5.4\web\web.xml 파일은 두 방식 모두 이 web.xml 파일을 사용하기 때문에 반드시 수정해 줘야 합니다.
    <context-param>
        <param-name>installDir</param-name>
        <!-- change this for production environment !! -->
        <param-value>$INSTALL_PATH</param-value>

        <description>luntbuild installation directory</description>
    </context-param>
$INSTALL_PATH로 되어있는 부분을 Luntbuild가 설치된 실제위치로 바꿔줍니다.

이제 설치 및 설정이 다 끝났으니 실제로 Luntbuild를 실행해 볼 차례입니다. 먼저 standalone 모드로 실행해 보도록 하겠습니다. 명령 프롬프트창에서 \bin 폴더로 이동하여 다음 명령을 실행합니다.
luntbuild localhost 8888
Luntbuild는 내부에 jetty 웹 서버를 내장하고 있습니다. 위와 같이 실행하면 포트번호 8888로 웹 서비스를 시작 합니다.
사용자 삽입 이미지

Luntbuild를 웹 브라우저에서 실행하면 아래와 같은 관리자 화면을 볼 수 있습니다.
사용자 삽입 이미지

설치와 설정 및 간단한 테스트가 끝났으니 다음에는 본격적으로 Luntbuild를 가지고 Subversion과 연동하는걸 해보도록 하겠습니다.

ps) 이 내용은 Luntbuild - Installation Guide를 참고하여 작성하였습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
이번에는 아파치를 서브버전과 연동하려고 합니다.
먼저 아파치가 설치되어 있는지 확인해야 합니다. (CollabNet Subversion은 설치할때 옵션으로 같이 설치할 수 있습니다.) 기본설치 경로는 다음과 같습니다.
사용자 삽입 이미지

여기에서 httpd.conf 파일을 수정해야 합니다. 맨 아래 부분에 다음 구문을 추가합니다.
<Location /svn>
   DAV svn
   SVNParentPath C:\svn_repository
   SVNListParentPath On
   Require valid-user
   AuthType Basic
   AuthName "Subversion repository"
   AuthUserFile C:\svn_repository\password-file
</Location>
이 설정의 의미는 /svn으로 시작하는 URL은 서브버전의 DAV(Distributed Authoring and Versioning)모듈을 사용하며 서브버전의 레파지터리 위치는 C:\svn_repository라는 뜻입니다.

이제 사용자 계정을 추가해야 합니다. 명령줄 창을 열어서 다음과 같이 원하는 이름의 사용자 계정을 추가합니다.
C:\Program Files\CollabNet Subversion Server\httpd\bin>htpasswd -cm C:\svn_repository\password-file harry
사용자 삽입 이미지

그러고 나면 C:\svn_repository에 password-file이라는 이름의 파일이 생긴것을 찾을 수 있습니다.
사용자를 더 추가하고 싶으면 명령어 옵션을 바꿔서 실행하면 됩니다. k16wire라는 사용자를 추가한다고 하면 -cm 옵션을 -m 으로 해줍니다.
C:\Program Files\CollabNet Subversion Server\httpd\bin>htpasswd -m C:\svn_repository\password-file k16wire

이제 아파치를 실행하겠습니다. 한번만 쓰고 말거면 모르지만 여기서 구축하는것은 형상서버이므로 서비스로 올리는게 좋을거 같습니다. apache.exe 파일을 이용하면 윈도우 서비스로 추가하는게 가능합니다.
C:\Program Files\CollabNet Subversion Server\httpd\bin>Apache.exe -k install -n apache2
사용자 삽입 이미지

그러면 아래처럼 윈도우 서비스로 추가된걸 발견할 수 있습니다.
사용자 삽입 이미지

ApacheMonitor.exe 프로그램을 이용하면 트레이를 통해서 현재 아파치 서버가 실행중인지 확인할 수 있어서 더 용이합니다. (서버라면 별로 필요가 없을수 있겠네요.)
사용자 삽입 이미지

이제 연동에 필요한 작업은 모두 끝났습니다. 브라우저를 열어서 테스트 해 보면 위에서 추가한 계정을 물어봅니다. 계정을 입력하면 아래처럼 현재 레파지터리 상태를 볼 수 있습니다. :-)
사용자 삽입 이미지

링크를 누르면 실제 소스까지 확인이 가능합니다. Jira와 같은 위키나 Trac과 연동해서 이슈에 맞는 형상을 바로 보여주도록 하면 유용하지 않을까요. 아마 Jira는 플러그인으로 지원하는것으로 압니다.
사용자 삽입 이미지



크리에이티브 커먼즈 라이선스
Creative Commons License
지난번 이후로 여러가지 일로 바빠서 손을 못대다가 오늘 다시 꺼내봤습니다. 이클립스로 형상을 Subversion에 추가하려고 하는데 발생한 에러는 아무리 봐도 이상했습니다. 설정파일을 다  살펴봐도 에러가 없는데 왜 에러가 날까 ??
그래서 콤맨드 라인에서는 되는지 확인 해봤습니다. 그냥 레파지터리에 대고 checkout을 실행합니다.
svn checkout svn://localhost/moai
사용자 삽입 이미지

결과를 확인해 보니 잘 되더군요. 이클립스에서 다시 해봤습니다. 이번에는 에러없이 레파지터리 연결이 만들어지면서 팝업창이 떠서 사용자 계정을 물어봅니다.
사용자 삽입 이미지

passwd 파일에 정의해둔 계정의 Username과 Password를 입력합니다. Comment를 디폴트로 해서 확인을 누르면 형상이 하나하나 올라가는것을 진행바로 확인 가능합니다.
사용자 삽입 이미지

모든 형상이 다 올라가면 다음과 같이 형상관리 중인 형상에 노란색 마크가 붙습니다.
사용자 삽입 이미지

일단 문제는 해결했습니다만 왜 저렇게 컴맨드 라인에서 실행을 한번 해줘야 하는지 이해가 안가네요. 다음에는 빌드서버를 설치해서 Subversion과 연결해봐야 겠습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
TAG subverion
형상관리 서버도 준비됐고 클라이언트로 사용할 이클립스도 준비가 다 된거 같습니다. 그럼 이제 실제로 프로젝트를 형상서버에 올려서 잘 되는지 테스트 해 보려고 합니다.
샘플 애플리케이션은 J2EE Application의 대표격인 Java Pet Store 2.0을 사용합니다. 다운받아서 압축 해제 한후에 이클립스에 집어넣어 봤습니다.
사용자 삽입 이미지

PetStore20 프로젝트를 선택하고 마우스 컨텍스트 메뉴의 [Team] > [Share Project] 를 선택합니다.
사용자 삽입 이미지

아마도 CVS와 SVN 두개를 선택하라고 나오는데 SVN을 선택하면 Url을 입력하라고 나옵니다. 그럼 미리 앞에서 만들어둔 레파지터리를 입력하면 됩니다.
svn://localhost/moai
사용자 삽입 이미지

URL을 svn:// 으로 시작하는 것은 svn 프로토콜로 서브버전과 통신하겠다는 것을 의미합니다. 서브버전에서 사용가능한 프로토콜은 svn, svn+ssh, http가 있으며 이중 svn이 보통 많이 쓰입니다. http를 쓰려면 아파치 웹서버와 연동해야 합니다.(이부분은 나중에 해보려고 합니다.)

다음은 폴더명을 물어보는데 이 폴더는 레파지터리 밑에 생깁니다. 이 폴더로 해당 이클립스 프로젝트가 들어가게 되는데 그냥 프로젝트 이름을 사용하는것으로 합니다.
사용자 삽입 이미지

형상을 올릴때 들어가는 코멘트를 적습니다. 이것도 그냥 기본값으로 두고 Finish를 누릅니다.
사용자 삽입 이미지

그러면 모든 형상이 Subversion으로 들어가야 하는데 왠지 모를 오류가 발생했습니다.
아 이거 왜이럴까요. 이따가 확인을 좀 해봐야 겠습니다. -_-;;

이 오류는 설정파일에서 설정값 앞에 공백이 있어서 나는 오류였습니다. 예를 들어 보겠습니다.
 password-db = passwd
password-db = passwd
첫번째 설정은 password-db 앞에 공백이 하나 들어있습니다. 두번째 설정은 없는것입니다. 두번째 처럼 해야 에러가 나지 않습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
2번에 걸쳐서 포스팅을 했습니다만 작업한 내용은 CollabNet Subversionn을 설치하고 사용할 사용자 계정을 추가한거 밖에 없습니다. 이번에는 이클립스와 같은 클라이언트를 이용해서 직접 써보려고 합니다.
subversion을 이용하기 위한 클라이언트는 크게 세가지입니다.
  • Eclipse Plugin = Subclipse + CollabNet Desktop
  • TotorisSVN
  • Command Line Client
Eclipse는 많이 아실거 같습니다. 주로 이용하는 플러그인은 Subclipse이지만 CollabNet Desktop이라고 SourceForge Enterprise Edition을 이용할 경우 활용이 가능한 플러그인이 더 있습니다.
TotorisSVN은 윈도우 탐색이의 컨텍스트 메뉴로 실행되는 클라이언트 프로그램으로 인터페이스는 CVS와 동일합니다. subversion의 모든기능을 다 지원하기 때문에 아주 편리합니다. 개발자는 Eclipse와 같은 IDE를 주로 사용하고 PL, PM과 같은 관리자는 이TotorisSVN을 이용하여 산출물 관리를 하면 좋습니다.

그럼 먼저 Eclipse를 이용해서 subversion을 사용해 보도록 하죠. Eclipse가 없으신분은 http://www.eclipse.org 사이트 가셔서 다운받으시면 될거 같습니다. 참고로 저는 Eclipse Europa WTP 버전을 사용합니다. 설치는 Help > Software Updates > Find and Install을 이용합니다.
사용자 삽입 이미지

Install / Update 창에서 Search for New features to Install을 체크하고 Next를 누릅니다. New Remote Site에 아래와 같이 입력하고 OK를 누릅니다.
  • Name : CollabNet Desktop
  • URL : http://downloads.open.collab.net/eclipse/update-site/e3.3
사용자 삽입 이미지

아래와 같이 새로운 사이트가 추가되면 Finish를 누릅니다. 그러면 설치가능한 플러그인 목록이 나타납니다.
사용자 삽입 이미지

모든 플러그인을 다 설치해야 하는것은 아닙니다만 이후 테스트를 위해서 전부 설치하겠습니다. Next를 누르게 되면 라이센스를 확인하는 창이 한번 나타납니다. 동의하면 플러그인 다운로드창이 나타납니다.
사용자 삽입 이미지

InstallAll을 눌러서 인스톨을 하시면 몇번 확인창이 나타납니다. 설치가 성공적으로 끝나면 Eclipse를 재시작하라는 경고창이 나타납니다. 재시작 하고 나면 이쁜 Overview를 볼 수 있습니다.
사용자 삽입 이미지

제 포스팅 원칙이 스크롤 제로인데 스크린샷이 많다보니 어쩔수 없네요. Eclipse 플러그인 설치가 완료되었으니 다음번에는 프로젝트를 subversion 에 넣어보려 합니다. 빌드서버로 가는길이 멀고도 험하네요. :-)
크리에이티브 커먼즈 라이선스
Creative Commons License
SourceForge Enterprise Edition을 설치해 보려고 했는데 가만히 생각해 보니 CollabNet Subversion을 설치만 하고 테스트를 안해봤네요. 그래서 간단하게라도 레파지터리를 만들어서 잘 동작하는지 확인을 해봤습니다.

먼저 moai라는 이름으로 레파지터리를 만들었습니다. 설치할 때 최상위 레파지터리를 c:\svn_repository로 했습니다. 거기에서 subverion의 명령어 인터페이스를 이용합니다.
svnadmin create moai
그럼 아래처럼 moai라는 폴더가 만들어지면 안에 필요한 폴더와 파일이 좍 생겨서 들어갑니다.
사용자 삽입 이미지

이번에는 이 레파지터리를 사용할 사용자를 등록해 보겠습니다. 사용자 등록은 svnserve.conf 파일과 passwd을 이용 합니다. 레파지터리로 잡은 위치로 가보면 conf 폴더안에 이 파일들이 있는걸 볼 수 있습니다.
사용자 삽입 이미지

수정은 2단계로 이루어 집니다. 먼저 svnserve.conf 파일에 사용자 계정을 등록할 파일을 명시합니다.
눈치빠른 분은 벌써 그 파일이 뭔지 아셨을거 같네요. 예 바로  passwd 파일입니다. 그 다음에 passwd 파일에 원하는 사용자 계정을 입력하면 끝납니다.

그럼 바로 svnserve.conf 파일을 수정해 보겠습니다. 중간에 보면 주석으로 처리된 password-db 부분이 있습니다. 이 부분의 주석처리를 해제해 줍니다.
### The password-db option controls the location of the password
### database file.  Unless you specify a path starting with a /,
### the file's location is relative to the conf directory.
### Uncomment the line below to use the default password file.
 password-db = passwd
이번에는 passwd  파일을 수정해 보겠습니다. [users]로 표시된 부분 아래 주석 처리된 부분이 사용자 계정입니다. id = password 로 되어 있습니다. 이 부분의 주석처리를 해제해 줍니다.
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

[users]
 harry = harryssecret
 sally = sallyssecret
이것으로 사용자 등록이 끝났습니다. 이제 subversion을 시작해야 합니다. 저는 서비스로 등록해 놨기 때문에 이미 실행중이어서 서비스 메뉴를 이용해 재시작 했습니다만 아닌 분들은 아래 명령어를 이용해서 서비스로 서브버전을 시작할 수 있습니다.
net start svnserve
서비스로 등록하지 않고 개별적으로 실행하고 싶다면 아래처럼 하면 됩니다.
svnserve -d -r C:\svn_repository
좀전에 생성한 레파지터리에 대해서 checkout 명령을 날려 보겠습니다.
svn checkout svn://localhost/moai
revision 0 가 checkout 되었다는 결과가 떨어지면 성공한 것입니다.
간단한 작업인데 정리하면서 하려니 시간이 좀 걸리네요. 다음에는 클라이언트를 이용해서 형상을 실제로 넣고 빼는 작업을 해보겠습니다. 그럼 얼추 테스트가 끝날거 같네요.

ps) 이 포스트는 CollabNet Subversion의 readme를 참조 했습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License
작년에 진행하던 실용주의 스터디를 계속하기 위해서 일신하고 있습니다. :-)

어수선한 마음을 다잡고 빌드서버 테스트를 위해서 오늘은 형상관리 도구인 서브버전을 설치했습니다.
예전에 받아둔걸 설치하려다가 "그래도 최신버전이 낫겠지" 해서  subversion.tigris.org로 다운 받으려 들어갔는데 일전에 봐둔 openCOLLABNET이 생각났습니다.
openCOLLABET이 제공하는  subVersion은 두가지 버전입니다.
  • CollabNet Subversion
  • SourceForge Enterprise Edition
이중에서 먼저 CollabNet Subverion을 설치해 봤습니다. 일단 윈도우 버전이라서 그다지 설치에 어려움은 없었구요. 위자드 스타일로 필요한 설정을 다 해주니 정말 편리하더군요.

처음 물어보는 것이 아파치 웹서버를 같이 설치하겠느냐고 물어봅니다.
사용자 삽입 이미지

다음으로 서브버전이 사용할 포트번호와 서브버전 레파지토리로 사용할 위치를 물어봅니다. 아래 체크박스를 체크하면 서브버전이 윈도우즈 서비스로 등록됩니다.
사용자 삽입 이미지

그 다음에는 아파치 웹서버가 사용할 URI와 포트를 물어봅니다. 웹서버가 서브버전의 레파지터리를 바라보기 때문에 레파지터리 위치를 명시해야 합니다.
만약 아래와 같이 설치가 되면 나중에 사용자는 http://localhost/svn/repos-name 으로 레파지터리에 접근이 가능합니다.
사용자 삽입 이미지

설치후에 서비스를 확인해보면 자동으로 Subverion이 서비스로 등록되었음을 확인할 수 있습니다.
사용자 삽입 이미지

사실 collabNetSubversion이 기존 서브버전과 많이 다르지는 않지만 오픈소스가 갖고 있는 부족한점 - 안정성이나 편리성-을 채워줄 수 있는것 같습니다.

다음에는 sourceForge Enterprise Edition을 설치해 보려고 합니다.
크리에이티브 커먼즈 라이선스
Creative Commons License