Posts List

Translate

2014년 2월 20일 목요일

[데이터 모델링]실전 데이터 모델링의 필수 무공(武功)

[데이터 모델링]실전 데이터 모델링의 필수 무공(武功)
사용자 요구사항에 대해서 전략을 수립하고, 업무를 파악하고 개선안을 찾아 새로운(to-be) 업무형태를 확정하는 분석 단계
정보시스템 형태로 전환하는  설계 단계
애플리케이션 개발 단계
문서화 단계
개발 시스템을 종합적으로 테스트하는 단계
공급(가동 및 안정화 단계)

실전 데이터 모델링의 필수 무공(武功)

첫번째 방법은 15층 빌딩의 옥상을 단번에 날아 오를 수 있는 슈퍼맨이 못되더라도 20cm 짜리 계단을 놓고 하나씩 열심히 올라가는 방법이 있다. 이와 같은 접근 방법을 가능하게 하는 것을 바로 '수평적 사고'라 부른다. 태산이 높다하되 하늘 아래 뫼라고 했다. 오르고 또 오르면 못오를 리 없지 만은 계단은 놓지 않고 산만 높다 해서 되겠는가?

두번째 방법은 이름하여 무협지에 나오는 '흡입신공(吸入神功)'이다. 이 무공은 남이 가진 무공이나 물건을 끌어 당겨 자신의 것으로 만드는 무공이다. 데이터 모델링은 과정의 툴이기 때문에 업무를 전혀 모르는 상태에서도 구체적이고 객관적으로 업무를 체계화 시켜 가야 한다.

세번째 방법은 '견물생심(見物生心)'을 시키는 방법이다. 견물생심이란 말 그대로 '사물을 봄으로써 마음이 생겨난다'는 것이다. 우리에게 판단의 근거를 제공해 주는 현업 사용자의 정보의 품질에 따라 데이터 모델링의 품질이나 생산성은 큰 영향을 받는다.

이를 가능하게 하는 가장 좋은 방법은 그들이 우리가 원하는 정보를 쉽게 생각해 낼 수 있도록 무엇인가를 보여 줌(견물)으로써 생각을 유도(생심)하는 것이다.

1. 수평적 사고 

수평적 사고를 하기 위해서는 먼저 현재 수준에서 우선적으로 정의해야 할 일정수준을 목표로 두고, 이것을 완벽하게 확정하는데 총력을 기울이는 것이다. 여기서 결정된 사항은 다음 단계에 해야 할 일들에 ‘정해진 상수값’의 역할을 함으로써 한꺼플씩 베일을 벗어 나가게 되는 것이다.

수평적 사고에 익숙해져 있지 않은 사람들의 공통적인 특징은 어떤 사안에 손을 댔다가 중간에 멈추면 매우 불안해 진다. 무엇인가 남겨주고 그냥 가버리는 것 같은 생각이 들어서 자꾸만 불안해 진다. 이것은 우리가 프로그램에서 어떤 프로세스를 처리할 때 한 번 손을 때면 끝을 봐야 하는 습관이 몸에 단단히 베었기 때문이다.

보다 정확하게 표현을 하자면 이것은 ‘=’이 아니라 ‘→(화살표)’가 맞는 표현일 것이다. 즉, 이 단계가 다음 단계로 진행되었다는 표시일 뿐이지 앞과 뒤가 정확히 일치(=)하지는 않는다. 그럼에도 불구하고 답을 만들어 내는 것이 우리나라 사람들이다. 이런 현상은 설계단계, 특히 기능 설계단계에서 DFD(Data Flow Diagram)를 그릴 때 확연하게 나타난다. 원칙적으로 보면 하위계층을 크게 둘러 싼 모양은 상위 계층의  버블(bubble)과 정확히 일치해야 하지만 어느 프로젝트에서도 이 원칙을 정확히 준수한 DFD는 볼 수가 없다. 그럼에도 불구하고 신기하게도 프로그램은 개발되고 시스템은 가동이 된다.

설계를 해 가는 과정에서도 마찬가지라고 할 수 있다. 건물을 지을 때 아직 문짝을 어디에 달지도 결정하지 않았는데 도어록을 가져다가 어디에 붙일 지를 걱정하는 바보가 되어서는 안된다. 만약, 풍경화를 그릴 때 주변은 아직 데생도 끝나지 않았는데 어떤 가지의 잎사귀를 자세하게 그렸다면, 다른 것들과 위치가 맞지 않거나 크기가 맞지 않다면 애써 그려 놓은 것을 모두 지워버려야 할 것이다.

이런 무지한 짓을 하지 않기 위해서 사고를 수평적으로 접근할 수 있는 기가막힌 원리를 소개하겠다. 이름하여 ‘삼각형의 원리’라고 표현을 하는 것인데 여러분들은 다음에 설명할 내용의 의미를 가슴깊이 새겨 두기 바란다.



020131d_01.jpg


위의 그림에 있는 ‘전체 삼각형’은 우리가 하고자 하는 업무의 크기를 의미한다. 우리가 해야 할 업무의 크기에 따라 우리가 만나는 삼각형은 적을 수도, 혹은 매우 클 수도 있다. 그러나 일이 크든 작든 간에 난이도는 항상 동일해지지 않으면 우리가 인간이기 때문에 너무 큰 업무들은 도저히 풀어 낼 수가 없을 것이다.

동일한 난이도를 만드는 원리는 매우 간단하다. 자신의 능력과 수준에 맞는 ‘단위 삼각형’을 먼저 결정하고, 그 높이 만큼 ‘수평선’을 그어 보라. 그리고는 좌.우로 대각선을 그으면 여러 개의 단위 삼각형이 나타난다. 그림에서 알 수 있듯이 이제 우리에게는 전체 삼각형은 없어지고 동일한 크기의 단위 삼각형이 여러 개 생겨났다.

우리는 전체 삼각형의 크기와 상관없이 항상 동일한 단위 삼각형을 만들 수 있으며, 큰 삼각형이라면 단지 단위 삼각형의 개수가 늘어 날 뿐이라는 것을 알 수 있다. 이 단위 삼각형은 우리가 앞으로 풀어 가야 할 ‘독립적인 결정 단위’로써 난이도와 직결된다. 업무의 크기가 커진다고 난이도가 같이 늘어 난다면 경우의 수가 몇가지 되지 않을 때는 시행착오로 풀어낼 수도 있다. 그러나 복잡한 업무에서는 천문학적으로 경우의 수가 늘어 나기 때문에 도저히 불가능한 일이다.

먼저 자신이 올라갈 수 있는 적절한 크기의 어떤 계단을 놓아야 할 것이냐에 대해 살펴 보기로 하자. 이를 위해서는 가장 먼저 모델링의 구체적인 방법론을 알아야 한다. 그림을 그리는 방법이 아니라 앞으로 여기서 제시할 수사를 하는 방법을 알아야 한다는 뜻이다.

가령, 모델링을 하기 위해서 가장 먼저 해야 할 일이 ‘엔터티 선정’ 단계이다. 그러나 이 목표를 달성하기 위해서는 보다 세부적인 계단이 필요하다. 예를 들어 ‘엔터티 후보 도출’의 단계를 거쳐야 하고, 이어서 ‘후보 엔터티의 분류’, ‘엔터티 의미의 명확화’, ‘엔터티 확정’ 등의 단계를 거쳐야 한다.

‘엔터티 후보 도출’ 단계에서도 ‘엔터티 후보의 개념정립’, ‘관리대상 여부 확인’, ‘집합여부 확인’ 등의 단계가 필요하다. 물론 여기에 대한 자세한 내용 뒤에서 별도로 설명될 것이며, 지금 설명하고자 하는 것은 이러한 방법으로 보다 세부적인 수평선을 그어서 더 작고 구체적인 단계를 만들어야 한다는 것을 예를 들어 설명하는 것이다.

이렇게 해서 생겨난 각 계단(단위 삼각형)을 어떤 객관적인 잣대로 평가해 내어야 확실한 결론으로 도출할 수 있는 지는 매우 중요하다. 앞 장에서 이를 위한 객관적인 ‘판단의 근거’에 대한 중요성을 언급한 적이 있었다. 이러한 판단의 근거는 앞으로 모든 단계의 모델링 과정에서 구체적으로 제시되어 진다.

두번째 문제는 이미 올라갔던 계단을 다시 내려오는 일을 어떻게 방지하느냐가 관건이라는 것이다. 앞의 [그림 1]로 표현한다면, ‘커진 삼각형’으로 표시된 부분을 어떻게 예방할 것인지가 포인트라는 것이다. 결론부터 말하자면 삼각형을 커지지 않게 하는 유일한 방법은 먼저 결론을 내린 단위 삼각형을 반드시 ‘100% 확실’하도록 하는 것이다. 100% 확실하다는 것은 이 결과가 확정값(방정식이라면 상수값)이 되어, 다음 삼각형의 결정 사항에 판단의 기준으로 활용(미지수에 대입)될 수 있으며, 이 결정이 다시 수정될 필요가 없음을 의미한다.

만약 지금 실시하고 있는 단위 삼각형의 판단을 대충하고 내려오는 순간 어떤 일이 벌어지겠는가? [그림 1]의 ‘커진 삼각형’처럼 크게 늘어나 버린다. 왜냐하면, 해당 삼각형에서 정의한 결정이 상위 삼각형의 결정을 변경시키고, 이것이 다시 하위 삼각형들에게 영향을 주게 되므로 우리가 신경을 써야 할 삼각형의 크기는 늘어나 버리는 것이다.

이렇게 모호한 결정이 여러군데 암세포처럼 퍼져 있는 상태로 자꾸만 아래로 내려오면 나중에는 엄청난 크기의 삼각형이 생기게 되므로 난이도는 크게 증가하고 시행착오는 반복된다. 필연적으로 이것은 시간과 노력을 크게 증가시켰음에도 불구하고 언제나 문제의 불씨를 끌어안고 있는 것 같은 불안정한 상태를 만들게 된다.

실전에서는 항상 이런 일이 실제 벌어지고 있다. 프로그램 개발 단계에서 수 많은 컬럼(column)이 추가되고, 새로운 테이블이 생성된다. 얼마 전 필자가 어떤 프로젝트의 개발단계에 컨설팅을 했었는데 강제로 테이블 변경(alter) 커맨드를 막으라고 한 적이 있었다. 한 반나절도 지나지 않아 개발을 진행할 수 없다고 아우성을 치고 있었다. 도대체 설계가 모두 끝나고 개발을 시작한 지가 언제인데 잠시 테이블 변경을 막았다고 해서 개발이 진행되지 않는 것일까?

설계가 끝나고 프로그램 개발하고 있는 과정에 왜 ‘alter table’ 커맨드가 필요한 이유는 설계단계가 대충 진행되다 보니 프로그램에서 구체적인 처리를 할려고 하니 그제서야 문제점과 누락이 발견되기 때문이다. 이것이 우리의 현실이며 과연 자신의 프로젝트는 절대로 그렇지 않다고 항변할 수 있는 곳이 얼마나 될 것인가?

이런 식으로 항상 변해 가기 때문에 위에 있던 것이 아래에 영향을 주고, 밑에 있던 것이 위쪽에 영향을 주기 때문에 업무가 크면 클수록 막바지에 와서 프로젝트는 복잡하게 실타레처럼 엉키게 된다. 불행하게도 이렇게 엉키는 현상을 감지하는 시점이 프로젝트가 70~80% 가야 이제 보이기 시작한다 것에 문제의 심각성이 있다.

처음에는 업무별로 사람별로 분할하여 독자적으로 열심히 앞만 쳐다보고 실적을 채워 나아간다. 이것을 결합을 해 보려면 프로젝트가 약70% 정도 진행되어야 가능하다. 결합 테스트를 해 보면 맞을 리가 있는가? 당연히 문제가 발생되고 이것을 고쳤다, 저것을 고쳤다 할 수 밖에 없다. 문제는 해당되는 것만 고쳐서 되는 것이 아니라 이것을 고치니까 저것이 연쇄 반응을 일으키고, 저것을 고치니까 또 다른 것이  연쇄 반응을 일으키게 된다는 점이다.

사실 문제가 있는 줄 알면서 게을러서? 아니면 인간성이 나쁘기 때문에 그냥 흘러 갔겠는가? 절대로 그것은 아니라고 확신한다. 그렇다면 왜 이러한 문제는 자꾸만 반복되는가? 엄밀히 말하면 그 이유는 다른 곳에 있다.

가장 큰 이유는 바로 자신이 해 놓은 일의 어디가 잘못되었는 지를 모르기 때문이다. 무엇이 잘못인 지를 모르는데 무엇을 보완할 수 있겠는가? 가장 답답한 것은 자신이 모르는 것이 무엇인지 모른다는 것이다.

정보시스템을 하는 사람들은 거의 대부분은 순수하고 꼼꼼하며, 문제해결을 위해 수 많은 밤을 세우는 것쯤은 겁내하지 않는 사람들이다. 단지 어떤 절차와 방법으로 어떻게 해야 제대로 할 수 있는 지를 잘 모르기 때문에 하지 않아도 할 고생을 하고 있다는 편이 맞는 말일 것이라 믿는다. 어디를 어떻게 찔러봐서 어떤 현상이 나오면 어떻게 해야 한다는 것을 정확히 알고 있으면서 문제를 양산할 사람은 없다.

이런 의미에서 문제를 근본적으로 해결해 줄 실전적인 절차와 방법을 매우 구체적으로 제시해 줄 것이다. 여러분들이 지금까지 독자적으로 해 오던 방법을 바꾸기 위해서는 처음에는 얼마간의 고통이 따르겠지만 크게 각오를 다져 탈태환골할 수 있는 기회로 삼을 수 있기를 바라마지 않는다.

2. 흡입신공(吸入神功) 

기업마다 문화가 다르고, 기준이 틀리며, 앞으로의 비젼이 서로 다르기 때문에 업무의 기본을 알 수 있을 지 언정 모든 것을 자기 지식화 할 수는 없다. 정말 우리가 해야 할 일은 현업에서 실무를 하는 사람들의 힘을 가장 완벽하게 이용해 내는 기술이 훨씬 더 중요하다는 것이다. 다시 말해서 그들이 가진 지식과 능력을  흡입해서 우리가 원하는 목표로 이끌고 가는 힘이 가장 필요하다는 것이다.

이와 같이 업무 지식은 그들 보다 못하지만 그것을 종합하여 최적의 결정을 이끌어 내는 사람이 바로 모델러라는 것이다. 필자는 정보시스템 분야 사람들을 만날 때마다 ‘우리는 역도선수가 아니라 유도선수가 되어야 한다’고 강조한다.

역도선수는 자신의 힘을 길러서 바벨을 들어야 하지만 유도선수는 상대방의 힘을 이용해서 쓰러뜨린다. 물론 유도선수라고 해서 힘이 없어도 된다는 것은 아니다. 힘이 있을수록 더 좋은 기술을 사용할 수 있기 때문인 것처럼 우리도 자신의 힘과 기술을 길러야 한다.

필자가 얼마 전에 국내 굴지의 반도체 회사에서 공정제어용 시스템을 구축하는  프로젝트를 했는데 그동안 정말 많은 업무의 모델링을 해 봤지만 굉장히 어려웠다.   왜냐 하면, 용어조차 그렇게 어려울 수가 없었다. 그들에게는 일상적인 용어겠지만 내가 알고 있는 것은 까만 육면체에 지네발이 달린 것이 반도체라는 것밖에 모르는 상태였으므로 이해하기가 무척이나 어려웠다.

여러분들이라면 이런 상황에서 오랫동안 그 업무만 해 온 수십명의 전문가들을 앞에 두고, 업무를 전혀 모르면서도 바로 모델링을 시작할 수 있겠는가? 그러면서도 몇 십분 내에 그들끼리 서로 업무적으로 다투도록 할 수 있겠는가? 불가능한 일이 아니다. 모델링의 진정한 능력은 바로 이런 힘을 말하는 것이며, 여러분들이 이러한 힘을 얻었다면 그 때는 흡입신공의 무공을 연마했다고 말할 자격이 있다.

여러분들은 지금부터 이제 이 흡입신공을 배워 나가는 것이다. 앞으로 전편에 걸쳐 상대방의 업무 지식을 손 쉽게 흡입해 낼 수 있는 수 많은 방법들이 여러분에게 제공될 것이다. 이것들을 모두 여러분들의 것으로 소화하여 자신의 수를 둘 수 있게 된다면 이제 우리는 연필 한 자루와 내 머리만 있으면 어디, 어떤 곳을 가더라도, 누구 앞에 서라도 그들을 꼼짝 못하게 만들 수 있다.

이 보다 더 강력한 무공이 어디 있겠는가? 우리는 모델링의 방법만 이해할 것이 아니라 바로 이런 능력을 익혀야 한다. 어떻게 생각하는가? 매력적이지 않는가? 크게 마음을 먹고 꼭 한 번 도전해 보기 바란다.



3. 견물생심(見物生心)

업무를 잘 모르는 채로 객관적으로 구체화를 시키기 위해서 수평적 사고로 접근하여 삼각형의 크기를 적절한 크기로 만들어 둔다. 이 단위 삼각형을 완벽하게 하기 위해서는 업무 담당자들의 업무 지식을 확실하게 흡입해 내야 한다. 이러한 업무 지식의 흡입을 보다 용이하게 하기 위한 무공으로 ‘견물생심’을 사용해야 한다.

백화점에 있는 신사복 코너의 판매원들도 견물생심의 무공을 사용한다. 무능한 판매원은 손님 뒤만 따라 다니다가 계산만 해 준다. 그러나 유능한 판매원은 손님의 판단을 돕기 위해 “이 옷이 너무 잘 어울린다”거나 “손님은 얼굴이 희기 때문에 비싸더라도 이 옷이 훨씬 멋져 보인다”라고 손님의 생심을 유도하면, 자기 월 급여를 다 털어서라도 그 옷을 산다는 것이다.

 이것이다. 바로 이렇게 견물을 해 줌으로써 생심을 유도해야 한다. 그래야 숨어 있던 마음이 동한다. 베테랑 수사관은 유도 신문을 잘 한다. “당신이 범인입니까?”라는 식의 직접적인 질문에 자신이 범인이라고 솔직히 답을 해 줄 용의자는 없다.

여러분들 중에는 회사 입사 시험에서 ‘인성검사’ 시험을 치루어 본 사람이 있을 것이다. 이 시험의 문제는 매우 재미있는 방법으로 구성되어 있다. 문제 하나 하나를 살펴 보면 내용이 매우 단편적이다. 가령, ‘나는 잠을 잘 들지 못하는 편이다’, ‘나는 남들을 많이 의식하는 편이다’ 등과 같은 단답적인 질문에 깊이 생각할 시간을 주지 않고 쉴 사이 없이 답을 하도록 요구한다.

그런데 만약 자신의 단점을 감추고 싶어 반대로 답변을 하면 거짓말을 한다는 것이 모두 드러 나도록 교묘하게 질문이 연결이 되어 있다. 다시 말해서 거짓말을 하면 어디에선가는 앞뒤가 맞지 않도록 함정을 파 둔 것이다.

견물생심을 시킨다는 것은 때로는 백화점 판매원과 같이 숨어 있던 생각이 동하여 밖으로 표출되도록 하는 것이며, 때로는 형사 콜롬보와 같은 수사관처럼 바람직한 답변을 유도하기 위해 ‘적절한 질문을 적절하게 하는 것’을 말한다.

이런 능력은 어쩌면 베테랑 판매원이나 형사 콜롬보 정도가 되어야 할 수 있는 능력이다. 다시 말해서 많은 경험과 논리력이 있어야 가능하다는 것이다. 손님의 반응을 재 빨리 감지하여 유연하게 대처하는 판매원의 능력이나, 용의자의 무심코 지나가는 말에 귀중한 단서를 잡거나 그 눈빛과 어투에서 상대방의 신뢰성을 감지할 수 있는 능력은 다를 것이 없다.

신뢰할 수 없는 정보를 가지고 내린 결정은 결국은 자신의 손해로 되돌아 오게 되어 있다. 불확실한 것들이 모이면 더 불확실해 지고, 10과 같은 확실한 상수값이라 하더라도 거기에 미지수 X를 더하면 불확실한 값이 되어 버린다.

이와 같이 우리가 모델링을 함에 있어서 완벽을 기하는 유일한 방법은 현업 담당자의 확실한 정보를 제공받는 것이다. 그러므로 그들이 가지고 있는 모든 업무 지식을 남김없이 끌어낼 수 있는 능력이야 말로 모델러가 보유하고 있어야 할 매우 중요한 기반 기술이라 하지 않을 수 없다.

이런 능력은 책을 아무리 읽고 암기하더라도 키워지는 힘이 아니다. 어떻게 보면 여러분들이 지금까지 어떻게 인생을 살아왔고, 어떤 고민을 하면서 살아왔으며, 또 어떤 생각을 해 왔느냐의 문제일지도 모른다.

이 말은 앞으로 여러분이 진정 모델러가 되고 싶다면 모델링 방법만 익힐 것이 아니라 이러한 방법 외적인 것들에 깊은 관심을 기울여야 할 것이다. 진정한 문학작가는 화려한 미사여구에만 능숙해서도, 상상력만으로서도 이루어 질 수가 없다. 작가의 작품 세계, 가치관, 인생관 들이 ? 바침 되어 있어야 비로소 대문호가 될 수 있는 것과 결코 다르다 할 수 없다.


발췌 - EN-CORE
http://www.dator.co.kr/?mid=textyle&category=44975&vid=encore&document_srl=205362

댓글 없음 :

댓글 쓰기