프로그래밍에서 모델링은 매우 광범위한 의미로 사용된다. MVC에서는 mental model을 어떻게 computer model에 잘 반영하는지를 고민하며 Enterprise architecture 에서는 관련 business 의 domain model을 잘 만들수 있는 방법들을 고민하여 Layer간 소통의 주요 객체로 삼는다.
UML은 이러한 모델링을 쉽게 할수 있도록 잘 정의된 언어이다.
UML에 대해 최근 두가지 생각을 해봤는데, 하나는 엉클밥 아저씨가 말씀하신, 컴퓨터 분야에서의 모델링을 건축에서의 모델링과 비슷한 개념으로 봤을때, 컴퓨터에서의 모델링이 건축에서 만큼 비용절감 효과가 있는지 잘 모르겠다는 말씀이다. 즉, 빠른 실행 및 피드백이 가능한 소프트웨어에서 자세한 모델링이 얼마나 효과적인지에 대한 고민이다.
다른 하나는, 모델링이 광범위하다고 하지만 모델링이라는, 본질의 핵심을 추출하여 시각화하는 측면에서 UML을 굳이 정해진 방법대로만 사용하지 않더라도, 여러가지가 서로 의존하고 있는 프로젝트에서는 효과적으로 사용할수 있다는 점이다.
dev-sync 프로젝트에서는 “개발”에 필요한 요소들을 정리하는 용도로 이러한 UML툴을 사용하였다.
화살표는 의존을 의미하는데, path와 item노드만 구체적인 sync 대상임을 나타내기 위해 화살표 방향을 바꾸었다.
이러한 용도로 UML을 사용하니 내 경우에는 많은 등장 구성요소가 나름 정리되어 꽤 많은 도움이 되는것 같다. 그런데 eclipse는 모델링툴을 이러한 개념정리보다는 실제 소스와의 코드 연동 및 현황화에 초점을 맞추고 개발하고 있는것 같다. 그래서 이제는 저렇게 마음대로 drawing할수 있는 툴이 줄어들고 있는것 같다. - 내가 사용하고 있는 UML툴은 꽤 오래된 버전인 AmaterasUML 이라는 툴이다.
한줄요약 : 앞으로 모델링 언어로서 UML과 툴을 적극 이용해야 겠다.