What is Domain Model (2)

도메인 모델이 무엇인지 알기 위해 앞의 글에서 먼저 “모델”에 대해 알아보았다. 모델은 실제를 단순화해서 나타낸 인공물이라 하였다. 이 글에서는 이 모델이 탄생하기 까지의 전반적인 과정과 행위인 “모델링”에 대해 이야기해보겠다.

결론부터 말하자면 모델링은 대상을 인식하여 형성된 사상을 모델로 표현하는 과정이다. 하지만 모델링이란 한마디로 정의 할 수 있는 사전적인 단어가 아니고 이런 표면적인 뜻보다 더 심오하고 깊은 뜻을 가지고 있다. 그래서 이 글에서는 하나의 이론과 함께 모델링을 설명할 것이다.

Three Worlds

철학자 칼 포퍼는 세상을 3개의 세계로 나눌 수 있고 나눠진 각 세계는 서로 상호 작용한다는 “3세계 이론(3-world theory)”을 내세웠다. 이 이론에서 제기되는 3개의 세계를 도식화하면 다음과 같다.

Placeholder image 포퍼의 3개의 세계, 각 세계는 공존하면서 상호 작용한다.

칼은 1세계를 물리적 세계(physical world) 즉 별, 돌, 모든 종류의 에너지, 현상 뿐 아니라 동식물을 포함하는 자연법칙의 세계라고 말한다. 다시 말하면 우리가 살고 있는 세상이며, 칼은 이 세계를 인간 중심적으로 본 세계라고 말한다.

2세계는 인간의 심리와 정신의 세계라 정의한다. 이 세계에서는 고통과 기쁨, 생각과 선택, 관점과 관찰과 같은 개념이 존재한다. 이런 심리 상태와 생각 과정의 개념들로 인해 2세계는 인간의 주관적인(subjective) 성격을 가진다.

그리고 칼은 2세계와 구별되는 3세계를 고안한다. 3세계는 2세계의 주관적인 생각, 관점등의 개념을 사상, 언어, 윤리, 제도, 과학, 예술 등으로 인간 마음의 산물을 설명한다.

그는 1세계, 2세계, 3세계가 시간의 순서대로 탄생했다고 주장한다. 인간은 1세계의 대상을 지각하고 얻은 정보를 감성, 지성, 이성과 같은 인지활동을 통해 이해하고 개념화하여 그 결과로 대상의 심상(image)으로 나타낸다. 인간의 이런 심상을 얻는 과정을 통해 1세계는 2세계를 낳게된다. 1세계가 2세계를 출현시켰지만 2세계는 자신을 출현시킨 1세계와도 상호작용하고 이런 관계는 2세계와 3세계도 동일하게 적용된다.

인간은 2세계 활동의 결과물인 심상을 언어, 물질, 소리 등과 같은 매체를 통해 3세계에 표현한다. 칼은 이러한 매체로 표현된 심상의 인공물(artifacts)이 실재(objective)하는 영역으로 3세계를 정의하고 1세계와 2세계의 관계가 형성됐듯이 마찬가지로 2세계는 3세계를 출현시킨다.

Create a New World

여기까지의 내용을 이해했다면 모델링이 무엇인지 어렵지 않게 유추할수 있을 것이다. 3세계의 인공물은 우리가 앞에서 말한 모델이고 이런 모델을 품은 3세계는 즉 모델의 세계라고 다시 말할 수 있다. 칼의 이론을 설명할 때 하나의 흐름을 중심으로 각 세계를 거쳤는데 그 흐름이 바로 ‘모델링’이고 흐름의 결과 즉, 모델링의 결과가 ‘모델’이다.

1세계의 대상을 3세계의 모델로 창조해내는 모델링의 주체는 인간이다. 인간은 문제를 해결 하기 위해 스스로 생각하고 방식을 결정하는 존재이다. 즉 인간은 주관적인(subjective) 생각, 이념, 경험을 통해 같은 대상이라도 모델링으로 다른 결과물을 만들어낸다(자연을 보고 누군가는 악상이 떠오르거나, 누군가는 시의 영감이 떠오른다거나).

그렇다면 모델링을 평가하는 척도라는게 존재 할까? 모델링을 잘한다는것 즉 적절한 모델을 만들어내는 것이다. 사실 해결하려는 문제나 대상을 잘 이해하는 것이 보기 좋은 모델링이라 할 수 있다. 대상을 잘 아는 전문가와 끊임없는 상호작용, 지식 탐구 같은 활동이 결여되면 좋은 모델을 만들수가 없다.

What Modeling Brings

http://m.blog.daum.net/maka3e/5 소를 떼려잡는 인간의 모습을 그린 벽화

인간은 모델링을 통해서 무엇을 얻을까 라는 의문이 들을 수 있다. 또 왜 인간은 끊임없이 모델링을 하면서 진화했는지 궁금하다. 위 그림은 스페인에서 발견된 가장 오래된 벽화인 알타미라 동굴 벽화다. 이 벽화도 모델링을 통해서 나온 모델의 예인데 우리는 이 벽화를 통해 소의 형태라는 것을 불필요한 설명없이 알 수 있다. 바로 여기서 모델은 소통을 할 수 있는 도구의 역할을 한다고 할 수 있다. 모델링의 정의를 조금 더 풍부하게 한다면, 소통을 하기 위한 언어의 역할로 수행 할 수 있도록 대상을 사용하기 쉬운 형식으로 만드는 행위라 할 수 있다.

Domain Modeling

도메인 모델이 무엇이냐는 짧은 질문으로 시작한 글이 장엄하게 이어졌다. 하지만 도메인 주도 설계의 도메인 모델을 도출 할 때, 모델과 모델링의 개념이 께끗하지 않으면 과연 적절한 모델을 찾을 수 있을까? 라는 소심한 질문을 던져본다. 앞으로 이 시리즈의 내용을 얼마나 더 올릴 지는 모르겠지만 이 글로 인해 도메인 주도 설계를 입문하는 공학자들에게 도움이 되길 바란다. 다음의 글은 도메인 주도 설계의 핵심 개념인 ‘도메인’에 대해 알아보겠다.