2007.11.13 02:25

메타모델과 스테레오타입에 대한 이해를 돕는 한장의 그림

Figure 4: Metamodel and model approach

발췌한 글 논지의 중심에 선 그림은 아니지만, 글 자체보다는 이 그림이 확 시선에 들어왔다.

모델러가 모델을 그릴 때는 메타를 염두해야 한다.
메타(Meta)라는 말을 알 필요는 적다.
더구나 거북한 단어니까 가급적 남용할 필요도 없다.
다만, 어떤 기준을 가지고 모델을 도출하고 표현해야 하는데 그 기준이 곧 메타라 할 수 있다.

UML로 객체지향 모델링을 하면 가장 기본적인 단위가 클래스이다.
클래스 역시 일종의 타입이 된다.
모델링을 하면 구체적인 타입으로 클래스 이름이 부여된다.
클래스라는 타입과 개별 클래스 사이에서의 구분이 요구되는 경우는 거의 늘상 일어난다.
가령, 한국과 개별 번지 사이에 구분이 필요한 것처럼 세상은 무척 복잡하기 때문이다.

그래서, UML에서 확장방안으로 제공하는 것이 스테레오타입(stereotype)이다.
그렇다고, 반드시 스테레오 타입에 메타 타입을 부여해야 할 이유는 전혀 없다.
모델은 의사소통을 위한 것이라는 대전제를 잊지 않는한 그야말로 아무거나 부여할 수 있다.
'왜 그런 것을 스테레오타입으로 부여하느냐'라고 묻는 분들에게 대답을 준비할 필요는 있다.

하지만, 효용성의 관점과 형식적 완성이 늘 부합하지는 않는다.

그래도 우리는 선택의 자유가 있다. ^^

나는 대개의 경우 둘 사이의 조화를 찾으려고 노력한다. 조화가 궁극에 다다르면 오늘 조엘이 올린 글에 소개된 다리처럼 우아함을 갖게 된다.



하지만, 소프트웨어 개발에서는 우아함만 고수하기엔 현실이 척박하다. 따라서, 둘 중 하나를 포기해야 할 상황이 발생하고... 나는 어느 때고 효용성을 택한다. 그리고, 그래야 한다고 떠들고 다닌다. (그래서, Pragmatic 시리즈가 너무 좋다. ^^)

어디까지나 순전히 가상상황이지만, 내가 어떤 제품을 쓰는데 클래스나 메소드이름을 영문과 숫자가 섞인 12자리 암호로 정해야 한다면 어떻게 할 것인가? 스테레오타입에 한글 클래스명을 넣겠다. UML만 공부한 사람이 '쟤는 UML 알긴 하는거야' 라고 코웃음 칠 수 있지만... 나는 UML을 졸업했으니까, 굳이 규정(disciplines)에 얽매일 필요는 없다.

규칙과 원칙(principle)이 충돌하면, 원칙을 새우기 위해서 새 규정을 만들어야 한다.

Trackback 0 Comment 0