#title 복잡한 것을 단순하게 만드는 방법 [[TableOfContents]] ==== 기본원리 ==== 복잡한 것을 단순하게 만드는 방법은 여러 가지가 있겠지만 다음의 2가지가 가장 효과적이다. (세월이 흐르면 또 달라지겠지..) * 추상화 * 분할정복 추상화는 단순화하려는 대상에서 가장 많은 영향을 끼치는 특징을 모으는 것이다. 같은 대상을 놓고서도 추상화의 정도(일반적으로 '추상화 레벨'이라고 부른다.)는 다르다. 성형외과 의사가 성형을 위해 사람의 얼굴을 보는 것과 그냥 사람인지 아닌지를 판단하고자 하는 경우 자세하게 표현하는 정도가 다르다. 그러므로 목적에 맞게 추상화 레벨을 맞추는 것이 중요하다. 겉보기에 정신이 팔려 지나치게 자세하게 표현하려고 하는지 다시 되돌아 봐야 한다. 분할정복은 말 그대로 복잡한 대상을 쪼개어 하나씩 정복해 나가자는 것이다. 복잡한 수식도 쪼개보면 사칙연산이다. 복잡한 정보시스템도 하나씩 쪼개어 보면 매우 쉽다. 분할정보도 마찬가지로 적당한 레벨로 쪼개어야 한다. 일을 하는 사람들의 수준에 맞추어 적당한 복잡도를 가지도록 쪼개야 한다. 예를 들어, 초등학생의 문제풀이 단계와 고등학생의 문제풀이 단계를 보면 각 단계의 복잡도는 분명히 다름을 알 수 있다. 누가 말했는지 기억이 나지는 않지만 모든 문제는 39단계(왜 39단계인지는 모른다.)로 쪼개면 복잡한 문제가 없다고 했다. 복잡하면 일단 39단계로 쪼개보는 것도 좋겠다. ==== 종합 ==== 이제 2가지 방법을 조합하면 된다. 문제 해결의 대상의 특징을 목적에 맞게 뽑아내고, 적절한 복잡도를 가지도록 쪼개고 각각을 집중하여 해결해 나간다면 분명히 만족 할만한 결과를 얻을 수 있을 것이다.