빌딩이나 아파트를 짓는 건설 현장에서는 건물이 안전하게 서 있을 수 있게 하기 위해 땅을 파고 지반을 다지는 일을 한다. 땅을 파 내려가는데 커다란 바위가 있어서 공사가 방해 받고 있다면 다른 곳으로 옮기거나 제거해야 한다. 막강한 힘을 자랑하는 건설 장비들도 거대하고 무거운 바위를 한번에 옮기거나 제거할 수는 없다. 해결책은 커다란 바위를 장비들이 옮길 수 있는 작은 크기로 잘게 부수어서 옮기는 것이다. 그래서 드릴을 이용해 커다란 바위를 반으로 가르고, 갈라진 반쪽을 다시 반으로 가르는 방법을 사용 한다. 이 작업은 옮길 수 있는 크기로 작아질 때까지 계속한다. 잘게 부숴진 바위 덩어리들은 중장비를 이용해 쉽게 옮길 수 있다. 즉 큰 것을 해결하기 위해서 작은 과제로 만들어서 해결하면 좀 더 쉽게 문제를 해결할 수 있는 것이다.

자동차의 내부 구조를 살펴보자. 엔진이 들어 있는 자동차의 보닛을 열어보면 내부에 수 많은 부품들이 서로 복잡하게 연결되어 있는걸 볼 수 있다. 부품들은 각각 고유의 기능을 가지고 있지만, 목적은 자동차를 잘 달리게 하는 것이다. 엔진 외에도 도로를 달리기 위한 바퀴와 방향을 조정하는 핸들 장치와 같은 부품들이 가득 붙어 있다.

이미 완성된 자동차를 바라봤을 때 자동차의 구조를 쉽게 이해할 수 있지만, 이러한 구조의 자동차를 처음 만든다고 할 때는 상황이 많이 틀릴 것이다. 먼저 상상력을 발휘해서 자동차가 앞으로 가야 하므로 힘을 만들어 내는 엔진을 생각해내고, 자동차 엔진의 힘을 바퀴에 전달하는 구동장치, 구동장치에 연결되어 지면과 닿아 있으면서 마찰력으로 자동차를 움직이게 하는 바퀴, 앞으로 이동할 때 방향을 전환할 수 있도록 하는 조향장치가 꼭 필요하다. 그 밖에 운전사가 앉을 의자, 비나 바람을 막아주는 지붕과 창문 외에 편의 장치인 라디오, 에어컨, 난방장치 등 많은 전기 및 기계 장치들이 빼곡히 설치되는 것을 상상해야 할 것이다.

1. 엔진
1.1 엔진 블록
1.2 연료 공급 장치

2. 구동장치
2.1 변속기
2.2 바퀴

3. 조향장치
3.1 핸들
3.2 방향 지시기

4. 자동차 캐빈
4.1 계기판
4.2 의자
4.3 창문 및 자동차문

5. 편의장치
5.1 라디오
5.2 에어컨
5.3 난방기

자동차의 분할 목록으로 자동차 구조를 더 쉽게 이해할 수 있다. 자동차 전체를 한 번에 만든다고 하는 것보다 여러 개의 블록으로 나누고 나누어진 자동차의 블록을 먼저 만들어서 나중에 조립하는 것이 이해하기도 쉽고 만들기도 쉬워 보인다.

이것이 바로 문제를 분할해서 해결하는 방식으로 얻을 수 있는 이점이다. 어렵고 복잡해서 해결방법이 잘 보이지 않는 문제도 우리가 알고 있는 지식으로 해결할 수 있는 단계까지 잘게 쪼개 나가면 해결할 수 있는 수준에 도달하게 된다. 분할이란 어렵고 복잡한 문제를 이해하고 해결하는데 사용할 수 있는 매우 유용한 생각의 도구이다.

채성수 chaesungsoo@iabacus.co.kr 소프트웨어 개발 전문기업 ㈜ 애버커스 사업총괄 부사장. 엘지전자와 엘지씨엔에스(LG CNS)에서 다년간 컴퓨터 관련 사업을 추진한 전문가이다. 국가 공인 최고 자격인 정보관리기술사로 성균관대 및 서강대에서 컴퓨터 관련 연구를 수행했으며 소프트웨어 공학, 컴퓨터적 사고에 대해서 관심을 갖고 다양한 활동을 하고 있다.

(*이 칼럼은 Nextdaily의 편집방향과 다를 수 있습니다.)

관련기사

저작권자 © 넥스트데일리 무단전재 및 재배포 금지