Books

앵버박사 2018. 5. 28. 04:33


[ 모델(Model) ]


모델이란 '복잡한 사물을 단순하게 표현한 것'


모델 기반 사고법은 사각형(요소)와 연결선(관계)만을 사용하여 사물을 표현


모델 기반 사고법으로 모델링하여, 아래 세 가지를 할 수 있다

  1) 사물을 이해

  2) 알기쉽게 전달

  3) 새로운 발상


프로그래머의 사고법 = 쓸모없는 것을 생략하고, 사물을 단순하게 생각한다 = 모델을 사용해서 생각한다


사물을 단순하게 표현하기 위해서 본질은 남겨둔 채 쓸모없는 부분을 제거해나가야 한다. 그 결과 '형식'이 남게된다. 이러한 '형식'이 모델이다

  서론-본론-결론, 기-승-전-결


'모형'도 모델이다

  인체 모형

    골격에 관한 공통점을 추출하여 단순하게 표현한 '형식'

    인체 모형을 각 뼈 부위를 요소로해서 관계선을 연결하여 모델 기반 사고법의 모델로 표현할 수 있다(세부 정보가 생략되지만 다른 이점을 얻는다)


노선도

  지하철 분포의 실제 지형과 관련없이 선과 이름으로 단순하게 표현  

  사용하기 편리학 단순한 형태로 종합하여 변형시킨 모델

  이해하기 수월한 형태로 단순화하여 표현


비즈니스 모델

  비즈니스의 다양한 측면들에 대해서 공통적인 형태를 추출한 모델

  비즈니스 모델(추상화한 형식)을 만들어 놓고, 다른 사업을 이 형식에 구체적으로 적용함으로써 유익한 힌트를 얻을 수 있다



[ 모델 작성법 ]


피카소의 작품 '황소 연작'은 황소의 본질을 표현하면서 어디까지 단순화할 수 있을지를 추구한 작품이다

'황소 연작'의 마지막 시리즈에서는 간단한 선을 사용하여 황소를 표현했다

피카소는 첫 단계부터 최대한 단순화된 황소를 그리려고 한 것은 아니다

여러 번 스케치를 수정하면서 황소의 어떤 부분이 본질인지를 찾아내려고 노력했다(처음 그림일 수록 실제 황소에 가깝다)

모델을 만들 때도 이와 같이, 생각하기 위해서 모델을 만들고, 모델을 만듦으로써 더 깊이 있게 생각할 수 있게 된다(수정해가며 반복)


복잡한 사물을 있는 그대로 이해하는 것이 어렵다

따라서 복잡한 것을 구성하고 있는 더욱 단순한 요소들로 분해하고, 그 요소들 사이의 관계를 명확히 함으로써 이해할 수 있다

(분할 정복, 분할=격리)


어떤 목적을 가지고 접근하느냐에 따라 사물을 바라보는 관점이 달라지고, 그에 따라 사물을 바라보는 방식이 다르게 된다(같은 대상이라고 하더라도)

그러면 당연히 완성된 모델도 달라진다. 즉, 어떤 사물에 대한 모델은 다양하게 존재한다

따라서 명확한 목적을 가지고 어떠한 의도와 그에 따른 어떠한 관점에서 현실 세계를 바라볼 것 인지를 미리 결정해야 한다

예)

  책의 물리적인 구조에 초점을 맞춘 모델 : 커버 - 표지 - 본문

  책의 내용(논리적인 구조)에 초점을 맞춘 모델 : 제목 - 차례 - 본문 - 맺음말


발상을 위한 사고법 = 발산과 수렴의 반복

  발산 : 아무 제한없이 아이디어와 가능성을 창조하고 도출(브레인 스토밍)

  수렴 : 발산으로 얻은 아이디어들을 제약사항에 맞게 가지치기하고 선택(이 과정에서 분석과 의사결정, 비판적 질문 등의 활동을 수행)


모델링 첫 번째 작업

  복잡한 사물을 구성하는 '중요한 요소들'을 모두 열거해보는 것

  중요한지 여부는 목적과 관점에 따라 결정된다(제약사항)

  발산과 수렴 활용해보자

  사물을 단순화하는 과정이기 때문에 모호함이 표함될 수 있는데, 요소를 명사로 표현함으로써(다소 길어지더라도) 이를 보완할 수 있다

  동일 요소가 여러개인 경우 중첩 사각형으로 표현한다


모델링 두 번째 작업

  요소와 요소 사이의 관계를 하나씩 계속 생각하며 표현한다

  기본 : |매출액| -나타낸다- |사업규모| (매출액은 사업규모를 나타낸다)

  응용 : |매출액|

              | - 차감한다- |매출원가| (매출액에서 매출원가를 차감하면 매출총이익이 된다)

          |매출총이익|

  왼쪽에서 오른쪽으로 위에서 아래로 읽어가듯이 순서를 배치한다(Z의 법칙 : 사람의 시선은 Z자를 따라 흐른다는 법칙)


모델링 세 번째 작업

  전체 모습을 알기쉽게 하도록 요소-관계들 배치하기

  관련있는 요소들을 그룹지어 근처에 나란히 배치한다

  전체 규모에서 Z의 법칙에 따라 배치한다


p32, p35의 모델을 보면 모델링함으로써 얼마나 쉽게 이해가 가능한지 알 수 있다

또한 어떻게 모델링해야 하는지 알 수 있다(모든 요소가 전부 연결되어 있다)


p26처럼 생각을 우선 글로 러프하게 표현해놓고, 그것을 기준으로 모델링을 진행하면 좋을 듯 하다

이렇게 완성된 추상 모델을 구체화(요소의 상태와 행위 및 관계선의 인터페이스 정의)해서 클래스 다이어그램을 만들고 코딩을 진행해보자



[ 모델 사용의 장점 ]


1) 손을 움직여 직접 묘사해보면 '체험해본 정보'가 되어 두뇌에 장기간 남게 된다

  공부로 우리는 매일 대량의 정보를 두뇌에 집어넣는 입력 행위에 집중되어 있지만, 두뇌로 부터 정보를 끄집어내는 출력 행위의 기회가 적다

  모델링 작업 = 출력 행위

  (생각해보면 나는 모델링/코딩 등 보다 공부하는 것이 더 쉽게 느껴지고 더 많이 하게된다. 입력 행위가 익숙한 반면 출력 행위가 익숙치 않기 때문인듯 하다)


2) 모델을 제작하기 위해 대상을 더 주위 깊게 관찰하고 조사하고 생각하게 되면서 대상물에 대한 이해가 깊어지게 된다


3) 도식화의 이점을 누릴 수 있다

  도식화 이점 1 - 숫자와 문자에 비해 순식간에 전달할 수 있는 능력

  도식화 이점 2 - 숫자나 문자의 표현은 정보가 연속해서 직선 위에 열거되어 있지만, 도면은 평면 위에 정보를 표현할 수 있어 쉽고 유용하게 정리가 된다(예, 파이 차트)


4) 전체 모습을 파악할 수 있다

  모든 정보를 나열하면 정보량이 많아 전체 모습 파악이 어렵고, 모델은 단순화되어 파악이 쉽다

    빅데이터는 데이터가 많은 만큼 단순화되고 정리되지 않으면 유용하지 않다

    책의 내용을 요약하여 정리함으로써 전체 맥락을 쉽게 파악할 수 있다

  요소와 요소 사이의 관계를 글보다는 모델로 표현한 것이 이해하기 쉽다

  지적 재산권같은 정적인 구조 말고도 시간의 흐름에 따라 변하는 동적인 구조도 모델로 표현할 수 있다(p44~45 참고)


5) 논리적으로 생각할 수 있다

  4번의 장점에 따라, 만약 모델을 살펴봐도 전체 모습을 파악할 수 없거나 요소간의 관계를 파악할 수 없다면 논리적인 비약(논리, 사고방식 등의 점프)이 존재한다는 것 이다

  모델을 만들면 빠지거나 중복딘 것이 없이(Mutually Exclusive, Collectively Exhaustive, MECE, 상호 배타적이면서 전체를 포괄해야 함) 정리되어 있는지 수월하게 확인할 수 있다

  MECE 관점에서 생각해보자

  또한 요소간 관계 사이에 빠졌던 요소들과 관계들을 찾아낼 수도 있다(논리적 비약 발견)


6) 발상을 넓힐 수 있다

  발상이란 순간적으로 떠오른 생각뿐만 아니라 고민하여 도출해낸 생각도 포함된다

  연상법에는 브레인스토밍과 같은 자유연상법이 있고, 다른 사례에서 얻은 지혜와 유형을 적용하는 강제연상법이 있다

  강제연상법 - 추상화/구체화를 통한 새로운 발상의 예)

    ---------------                    ---------------                    -----------------

    |프린터 구매  |  -(추상화)->  | 초기 비용   |  -(구체화)->  | 시스템 구매   |

    ---------------                    ---------------                    -----------------

            ↓                                     ↓                                     ↓

    ---------------                    ---------------                    -----------------

    | 잉크 구매   |                     |   유지비     |                    |   유지보수     |

    ---------------                    ---------------                    -----------------

  구조 무너뜨리기 : 기존 모델 구조를 무너뜨려 새로운 발상을 얻는 방법으로 요소를 변경/추가 한다(p53 참조)



[ 더 좋은 모델 만들기 ]


빈약한 모델 공통점

  1) 목적과 관점이 정해져 있지 않거나 명확하지 않다

  2) 필요한 요소가 빠져있거나 불필요한 요소들을 포함하고 있다

  3) 요소의 추상화 수준이 일관되지 않고, 너무 높거나 너무 낮다

  4) 요소들 사이의 관계가 잘 표현되지 못하고 있다


좋은 모델의 공통점은 빈약한 모델의 반대


목적과 관점 결정

  모델링 대상에 대해서 자시이 어떤 위치에서 바라보고 있는지 의식할 수 있다면 어떤 측면에 초점을 맞춰야 하는지 자연스럽게 알 수 있다

  모델링은 무엇 때문에 하는가? 에 대해 답변해본다

  목적을 바로 명확히 어려운 경우, 대략적인 목적을 의식하고 모델을 만들어 보면서 더 깊이 생각해본다(모델만들기와 목적 생각하기를 반복)


불필요한 요소 제거와 누락된 요소 찾기

  불필요한 요소를 확인하는 기법으로, 일단 삭제해보고 그래도 모델을 이해할 수 있는지 확인해 본다

  모델을 만든 후 위화감이 있다면 이미 추출해놓은 요소들로 부터 연산되는 새로운 요소들을 찾는 발산적인 과정을 거친다


모델 추상화 수준 조정

  추상화 수준을 높이는 조작을 '추상화', 낮추는 조작을 '구체화'라고 한다

  추상화 = 일반적, 구체화 = 구체적(현실 사물에 더 가깝도록)

  개에 대한 추상화와 구체와 예, p65 참조

  지나치게 일반적인 모델은 당연한 사항들만 표현되어 있어 표현하고자 하는 특징이 드러나지 않고,

  너무나 구체적이면 정보가 너무 많아 제대로 정보를 찾아낼 수 없게 된다

  (영화를 설명하는데 너무 세세하게 설명하면 듣기 싫어지고, '그 영화는 기승전결로 되어있어' 라고 한다면 때리고 싶어짐)

  스스로 저절한 추상화 수준인지 생각해보고 부족한 경우에는 타인에게 확인을 해보자

  일반적으로 구체화 방향으로 내려가면 갈수록 요소들이 증가하고, 추상화 방향으로 올라갈수록 요소들이 감소한다

  '구체 is a 일반' 으로 생가해봤을 때 이상하지 않으면 올바르게 추상화 및 구체화가 된 것이다


적절한 관계 표현

  빠진 관계 찾기 : 관계(연결선)가 아직 그려져 있지 않은 요소들 사이의 관계를 다시한번 살펴보자

  논리적 비약 찾고 : 요소간의 관계가 정말로 성립하는지 논리적으로 생각해보자. 말이 안된다면 더 필요한 요소/관계가 있는지 생각해보자


자신이 만든 모델은 무의식적으로 정보를 보충하여 바라보기 때문에 누락된 부분을 발견하기 쉽지 않다

따라서 타인에게 검토를 부탁하는 것도 좋다



[ 부가 내용 ]


속담과 같은 것은 문자 그대로 해석 하는 것이 아니라 추상화 했을 때 본질이 들어난다


일단 말 그대로 요소를 뽑아 관계를 맺어본다(구체 모델)

추상화 수준을 높인다(추상 모델)

올바르지 못한 구체모델은 추상화 수준을 높였을 때 의미를 잃게 된다

구체 모델과 추상 모델은 구조가 같다. 만약 다르게 나왔다면 잘못된 추상화다

추상 모델을 다른 구체 상황에 적용한다

추상화 하면 널리 사용할 수 있는 일반적인 모델이 된다


너무 명사에만 집중하지말고 '나무에서 떨어진다' 와 같은 것을 '나무에서 떨어짐' 으로 명사로 추출할 수 있다(나무보다 나무에서 떨어짐이 중요한 포인트라면)


케이스에 따라 모델이 두벌이상 나올 수 있다(p85 참조)


모델링하면 말로 설명하기 어려운 것도 형식화 할 수 있다(체험한 것 등)


콩코드 오류(Concorde fallacy)

  지금까지 해온게 아까워서 쉽게 포기할 수 없거나 자신의 선택을 정당화 하기 위해서 합리적인 판단이 불가능하게 되어 포기하지 못하고 결국 파국으로 치닫는 경우