DATOR


좋은 모델이란? 옹알이


좋은 모델이란 무엇일까?

왜 좋은 모델이 필요할까?


모델링을 공부하다 보면 항상 떠오르는 질문 입니다.
이 글은 이 궁금증에서 출발 합니다.

 

좋은 모델을 논할때 주로 다음 단어들을 보게 됩니다.

 

정규화(Normalization)
 - 제 3정규화 까지 진행 하였는가?

 

완전성(Completeness)
 - 사용자의 요구사항을 모두 모델에 반영하였는가?

 

비즈니스 룰(Business Rules)
 - 업무 규칙을 제대로 표현 하였는가?

 

독립성(Indepenedncy)
 - Application에 종속적이지 않은가?

 

유연성(Flexibility)
 - 새로운 요구사항을 반영할때 영향도가 적은가?

 

간결성(Simplicity)
 - 데이터 모델이 복잡하지 않은가?

 

의사소통(Communication)
 - 모델을 보왔을때 직관적으로 이해할 수 있는가?

 

통합성(Intergration)
 -  전사적 관점으로 유사한 집합을 적절히 통합하였는가?

 

제가 하고 싶은 말은 이 단어들의 설명이 아니기 때문에
제 방식대로 간단한 설명만 달아 보았습니다.


좋은 모델을 설명할때 떠올리는 저 단어들이
좋은 모델에 실제 차지하는 포션(Portion) 이 동일할까요?


저는 데이터 모델은 비즈니스를 담는 그릇이고,
그 비지니스는 곧 요구사항이라고 생각합니다.
아무리 요구사항을 많이 내놓아도 담아낼 데이터 모델이 없으면,
구현할수 없을테니까요.

 

인터넷을 보다 보면 프로젝트의 실패의 이유로 가장많이 꼽는 것중 하나가
요구사항을 제대로 반영하지 못하기 때문이라고 합니다.

즉, 사용자가 원하는 요구사항을 데이터 모델에 제대로 반영하는 것이
모델링에서 가장 중요한 포인트가 될수 있다는 말입니다.

 

프로젝트에 나가 보면 데이터 모델이 기본적인 정규화조차 제대로 진행하지 않고
유연성도 떨어지는 정말 형편 없는 모델들을 종종 보게 됩니다.
그런데 정말 신기한 것이 그 형편없는 모델때문에 개발자가 밤을새고,
데이터 품질이 떨어질 지언정 어쨋든 프로그램이 돌아가고
비즈니스도 진행된다는 것이죠.


이유가 무엇일까요? 그 이유를 곰곰히 생각해 보면 그 모델은 비록 정규형도 아니고
유연성 또한 떨어지지만 적어도 완전성만은 지키고 있기 때문이 아닐까? 라는 생각을 한번 해봅니다.
물론 완전성을 위해 프로젝트 막바지에 컬럼을 덕지덕지 추가하거나
비슷한 기능의 테이블을 여러개 만들어 놓는 비리(?)를 저질로 놓았을지도 모르지만..

 

사실 완전성이라는 것은 그리 거창한것은 아닙니다.
사용자에게 필요한 기능은 관계 하나 속성하나면 충분 할 수 있습니다.
그런데 그 속성 하나를 빨리 파악해내느냐 못하냐의 따라 차이는 크게 달라집니다.


기능에서 필요한 만큼 모델이 설계되어 있지 않다면
개발단계가 진행되어서야 필요한 테이블이나 속성들이 추가되기 시작할 것이고,
그렇게 되면 그 만큼 뒷단에서는 느끼는 부담은 더 커질 것입니다.

 

요새 유행하고 있는 개발 방법론인 애자일 방법론을 떠올려 보면,
결국 프로젝트의 실패의 원인은 요구사항을 제대로 반영하지 못한것에서 찾고,
그 해결책으로 제시한 것이 프로토타입을 먼저 사용자에게 보여주는 것입니다.

 

머리로 생각하는 것과 눈으로 직접보는 것은 다르니 그제서야 사용자도 생각지 못했던
요구사항들이 줄줄이 나오게 되고, 그것을 캐치하여 요구사항을 최대한 반영하는 것이 애자일 방법론의
궁극적 목표라고 생각합니다. 그리고 그것은 결국 완전성을 추구하는 것이 되겠네요.


저는 모델링을 공부하는 사람으로써 요구사항 부재라는 문제의 인식은
애자일방법론과 동일하지만 다른 해결책으로 논리모델의 상세화라는 카드를 제시하고 싶습니다.

 

전통적 정보공학 방법론인 폭포수(Water-fall) 방법론을 통해서도
분석/설계 단계에서 논리 모델만 상세히 진행한다면
최대한 요구사항을 반영할 수 있다고 믿습니다. 아니 믿고싶습니다!

 

데이터모델링은 과정의 도구라고 표현을 합니다.
그 말은 ERD는 분석/설계 단계에서 나오는 하나의 산출물에서 그치는 것이 아니라
ERD를 만들어 가면서 사용자와 끊임없이 대화하고, 끊임없이 비지니스를 분석하라는 것입니다.
저는 모델러가 비지니스를 잘 파악 할수록 완전성이 잘 갖춰진 모델이 나온다고 믿습니다.

 

모델링을 진행할때 모델에 대한 패턴을 통하여 유연성 확보도 좋지만,
비즈니스를 최대한 많이 파악하는 것이 그보다 선행되어야 한다고 생각합니다.
그것이 바로 완전성에 보다 가깝게 다가갈 수 있는 방법이라 생각하기 때문이죠.

 

그렇다고 다른 요소들이 중요하지 않다는 것은 아닙니다.
다만 좋은 모델을 갖추는 요소들의 포션은 각각 다를 것이고,
제 생각에는 그중 완전성이 차지하는 포션이 가장 크기 때문에
기본이 되어야 하고 그 기본이 갖춰진 후에
통합이나 유연성을 고려해도 늦지 않지 않을까 생각합니다.

 

데이터모델과 관련해서 패턴, 통합, 유연성에 대해서는 많은 이야기를 하지만
완전성에 대해서는 너무 기본적인 내용이라 그런지 몰라도
이야기를 하지 않는 것 같아서 이야기를 꺼내 보고 싶었습니다.

 

사람마다 생각이 다르듯 모델링을 공부하는 사람마다 중요하게 꼽는 요소가 다를 것입니다.
그래서 어느 모델이 더 좋은 모델이냐에 대한 해석도 사람마다 다를 것입니다.
물론 저는 그중 완전성을 가장 우선순위에 놓을것이지만...

 

지금까지 제 생각을 이야기 했으니 이 글을 읽는 분의 생각도 문득 궁금해 집니다.
이번기회에 한번 생각해보는 것은 어떨까요.


여러분이 느끼는 데이터 모델에서 가장 중요한 요소는 무엇인가요?
그렇게 생각하는 이유는 무엇인가요?

 

Tag :

Leave Comments