스프링 3.0은 18개의 모듈과 100개 가까운 직접 의존 라이브러리로 구성되어있다. 스프링으로 새로운 프로젝트를 만들때 이 모듈과 라이브러리 중에서 어떤 것을 선택해야 할지 결정하는 것이 매우 부담스러운 일이다. 이를 위해서 이전에 각 모듈의 의존 라이브러리에 대한 분석을 한 적이 있는데, 그 뒤로 계속 라이브러리가 추가,삭제 되거나 버전이 바뀌고, 심지어 스프링 모듈자체에도 변경이 있어서 기존 정보와 최신 버전의 스프링3의 의존관계 정보는 조금 차이가 난다.

스프링 빌드에 의해서 생성되는 POM이나 Ivy 설정정보에서 각 모듈의 의존 라이브러리의 정보와 버전, 스코프, 옵션 여부 등에 대해서 알 수가 있는데, 이를 엑셀로 해서 매트릭스를 만들면 보기가 편하다. 일전에 작업한 것을 구글 스프레드시트에 공개했었는데, 계속 수작업으로 업데이트하기도 힘들고 해서 한동안 방치했었는데, 더 이상 수동으로 관리하기가 귀찮아서 아예 자동으로 의존관계 매트릭스 엑셀파일을 만드는 프로그램을 하나 만들었다. 이름은 s3matrix.

스프링 소스를 받아서 ant publish-maven-local 을 실행하면 Ivy정보를 참조해서 Maven 로컬 리포지토리에 인스톨을 해준다. s3matrix를 실행하면 리포지토리에 설치된 스프링 pom 중에서 가장 최신 버전을 찾아서 그 dependecy 정보를 분석해서 엑셀파일 형태로 생성을 해준다.

이렇게 만든 의존관계 매트릭스 정보를 http://spreadsheets.google.com/ccc?key=ppDRa3Yit-05zS2cqWYFlNA 에 공유해놨다. 덕분에 라이브러리가 바뀔 때마다 쉽게 정보를 갱신 할 수 있게 되었다.

 

s3matrix를 만들면서 3.0에서 도입된 OXM 모듈을 사용해봤다. 엔진은 편리한 JAXB를 사용했다. xjc를 써서 스키마를 컴파일해 매핑 파일을 만들고 OXM의 unmarshaller를 세팅한후, 이를 이용해서 간단히 POM의 Model 오브젝트로 만들어 낼 수가 있다.

엑셀파일 생성은 기존에 사용하던 POI 말고 스프링에 새롭게 추가된 JExcelAPI를 사용했다. POI에 비해서 API도 깔끔하고 그 덕분에 코드도 간결해지고 성능도 더 좋은 듯하다. 앞으로 ExcelView는 JExcelAPI를 이용한 것으로 바꿔야 겠다.

최근에 1.1.30으로 업그레이드 된 JUnitMax를 사용해서 TDD로 개발했는데, TDD개발의 번거로움을 완벽하게 제거해주는 JUnitMax의 편리함에 계속 감동이다. 1.1.25이후에 추가된 상태바의 왼쪽에 최근에 수행한 테스트의 최종결과가 표시되는 기능도 맘에 든다. 실패한 테스트를 통과시키기 위해서 코드를 수정해 가다가, 상태바에 빨간색이 녹색으로 바뀌는게 보이면 패스. 어느 순간에 테스트가 동작하는지 거의 느끼지도 못할 정도로 자연스럽게 테스트가 진행된다.

특히 JUnitMax의 장점인 테스트 순서를 다이나믹하게 선택해주는 기술은 정말 매력적이다. 최근에 실패한 테스트가 있어서 그것을 성공시키기 위해 코드를 손을 보고 저장하면, JUnitMax가 알아서 가장  최근에 실패한 테스트를 우선적으로 수행해주기 때문에 작업한 코드에 대한 성공여부를 매우 빠르게 확인할 수 있다. 코드의 양이 늘어나고, 수행해야 할 테스트의 숫자가 늘어난다고 하더라도 지금 손보고 있는 코드와 관련된 테스트가 그 중에서 우선적으로 수행될 수 있기 때문에 전체 테스트가 다 돌아가기를 기다리는 불편도 없다.

이렇게 코드의 수정과 테스트가 거의 병렬도 수행되기 때문에 테스트를 수행하느라 코딩의 리듬이 끊기는 것을 막아주는 것이 TDD의 성공에 미치는 영향은 매우 크다고 생각된다. 이미 오래전부터 이런 방식의 테스트를 연구한 사람들이 있다.

http://blog.objectmentor.com/articles/2007/09/20/continuous-testing-explained 에 보면 MIT의 Program Analysis Group에서 이런 방식의 테스트를 Continuous Testing이라고 이름을 붙였고, 테스트와 관련되서 낭비되는 시간을 90% 이상 제거해준다는 연구결과도 내놓았다고 한다. TDD에 적용하기에 최고의 방법이다. 앞으로는 Continuous TDD 또는 CTDD라고 불러야겠다.

 

작업한 코드를 opensprout의 리포지토리에 올리긴 했는데 전체 공개로 권한 설정을 해놔도 자꾸 로그인 창이 뜨는게 뭔가 이상하다. 오래전에 설치한 구닥다리 Subversion을 좀 최신버전으로 업그레이드 하던가 Git으로 이 참에 아예 바꾸던가 해야겠다.

Related posts:

  1. Spring 3.0 (7) Spring 3.0 Dependency Matrix
  2. Spring 3.0 (53) Spring Dependency Matrix 업데이트
  3. Spring 3.0 (26) Spring Expression Language와 @Value
  4. Spring 3.0 (35) Spring 3.0 Reference Document 공개
  5. Spring 3.0 (42) Spring Dependency Matrix 업데이트
  6. 유쾌한 이슈처리 재촉 메일
  7. Spring 3.0 (4) – Maven에서 Spring 3.0 최신버전 사용하기
  8. Spring 3.0 (44) Spring 3.0과 JEE6
  9. Spring 3.0 (38) Spring Reference 업데이트
  10. Spring 3.0 (29) M2 Released
  11. Spring 3.0 (16) Jms 모듈의 선택 라이브러리 분석
  12. Spring 3.0 (52) 반쪽짜리 3.0 RC1 공개
  13. Spring 3.0 (10) AOP 모듈의 선택 라이브러리 분석
  14. Sprint 3.0 Spring @MVC -모델의 일생
  15. Spring Framework 3.0.3 릴리스 & 의존 라이브러리

Facebook comments:

to “Spring 3.0 (37) 스프링 모듈-라이브러리 의존관계 매트릭스 업데이트와 CTDD”

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha