본문 바로가기
이전글/2006

KAF 코드생성기 1차 개발을 끝내고

by 물개선생 2006. 8. 21.
휴가 중 이틀을 투자해서 현재 개발에서 사용중인 KAF(KAIST Application Framework)의 코드생성기를 개발했다.

KAF의 구조가 단단해서 생성되는 코드가 심플하고, 명확하긴 하지만 1개의 프로그램을 개발하기 위해 Dao, Bl, Ctrl, Context, Jsp, Test Code, XML 설정에 이르기 까지 20 여개의 파일을 생성하고 조작해야 하기 때문에 기본적인 작업에 소요되는 시간이 너무 많다고 판단했기 때문이다. Convention이 명확해서 코드 생성기를 만드는 작업이 그다지 어렵진 않았지만, TDD로 개발하면서 Code Generation을 사용한다는 것이 조금 마음에 걸리긴 한다. 하지만, 개발팀이 충분한 훈련으로 KAF 기반 개발에 익숙해진 상태에서 반복되는 작업을 줄여준 것은, 업무 로직에 좀 더 집중하고 다들 열심히 수련중인 TDD 훈련에 매진할 수 있는 시간을 벌어주기 때문에 나쁘지 않은 선택이라고 생각한다.

코드 생성을 위한 템플릿 엔진은 Velocity를 사용했고, 모델 정보를 읽어들이는데는 Reflection API를 사용했다. 기본설정정보와 모델을 읽어서 Program, Template, Attribute 디스크립터를 초기화한 다음 Velocity로 디스크립터 정보와 템플릿을 merge해서 파일을 생성하는 방식이다. 단일 모델에 대한 코드 생성은 완료했는데, 모델 정보중 어떤 것을 검색 조건으로 해서 Context에 생성하고, Grid에는 어떤 값을 뿌리고, Criteria 조건으로는 어떤 것을 사용하고, Validation 체크는 어디까지 하고 하는 등의 값을 주지 않았더니 어디까지 기본적으로 생성해 줄 것인지에 대한 결정을 내리기가 쉽지 않다. 모두 다 생성해주면, 나중에 필요없는 코드를 지우는데 시간이 더 걸릴 것 같고.. 그래서 이번 기회에 이클립스 플러그인 개발을 익혀서, 마법사 방식의 플러그인 형태로 개발을 좀 더 진행해볼 생각이다.

우선 처음 목표한 대로의 개발은 완료했으니, 이번 주는 TDD 수련에 좀 더 힘써보자. 내일부터 우리은행 시스템과의 연동 부분을 개발하는데, TDD를 하기에 아주 적당한 주제가 될 것 같아 벌써부터 흥미로워진다.