Monday, June 8, 2009

groovy로 jude api를 이용하기

일본에서 java엔지니어에게 UML의 다이어그램을 그리라고 하면, jude-community를 꼽는 사람들이 많습니다. (윈도우즈 계열의 엔지니어라면 역시 visio를 사용하는 것 같습니다.)

jude-community는 무료이고, reverse engineering이 됩니다.
더 많은 기능을 지원하는 jude-professional도 있습니다만, 30일 평가판이후 라이센스 등록을 요구합니다.(그러나 실행하기 전에 시스템의 날짜를 평가판 사용기간의 날짜로 바꾸어 실행하는 것정도는 할 수 있네요)

자체로 몰론 GUI의 어플리케이션입니다만, 이 둘다 api를 제공하고 있습니다. 이 API로, save한 .jude파일을 읽거나 edit하는 것이 가능합니다. api는 jar의 형태로 제공하고 있습니다.
이를 사용해서 java로 save한 jude파일을 제어할 수 있습니다만, 이러한 작업이라면 역시 groovy를 사용하는 쪽이 더 매력적이라고 생각합니다.

다음은 groovy를 사용하여 jude의 api에 접근하는 방법을 나타냅니다.

우선 groovy를 실행할 때, API를 함께 load하도록 합니다.
>edit c:\Program Files\Java\groovy\conf\groovy-starter.conf
해서 다음을 추가

load /Progra~1/JUDE-P~1/*.jar


그리고 이하는 groovy script 소스입니다
class_listup.groovy


import com.change_vision.jude.api.inf.project.*
import com.change_vision.jude.api.inf.model.*

scriptName = System.getProperty("script.name")

if (args.length < 1) {
println "groovy ${scriptName} [jude fileName]"
return
}

def printClasses(packageObj) {
packageObj.ownedElements.each {
if (it instanceof IClass) {
println it.name
}
else if(it instanceof IPackage) {
printClasses(it)
}
}
}

def pro = ProjectAccessorFactory.projectAccessor
pro.open(args[0])

printClasses(pro.project)

pro.close()



제가 이 방법에 관심을 가지는 이유는, 바퀴를 재발명하지 않고, 잘 정의된 jude의 api를 이용하여, gui가 아닌 text 형태의 방식으로 쉽게 여러 아이디어를 구조화 하는데 도움이 될 수 있겠다고 생각해서 입니다. 아마 emeditor의 macro가 하나 더 증가 할 것 같군요. :)

1 comment:

Unknown said...

물론 argouml 이라는 무료 툴도 있습니다만,
http://argouml.tigris.org/
저는 jude쪽에 점수를 더 주고 싶군요.

그런데 argouml은 ava, C++, C#, PHP4 and PHP5의 Code Generation을 해주는 기능이 있네요. 사용해 보신 분은 코멘트 부탁합니다.