추상화는 대표적인 특징으로 이해하는 것을 의미하는데 이것이 어떤 의미인지 현대 사회에서 가장 필수품으로 생각되는 자동차를 예로 한 번 더 살펴 보자. 자동차를 운전하려면 반드시 자동차 운전 면허증을 취득한 후 해야 한다. 그리고 자동차의 엔진 시동을 걸고, 가고자 하는 방향으로 핸들을 조작하면 된다. 운전은 의외로 간단하지만, 자동차를 움직이게 하는 원리를 알기 위해 자동차의 보닛을 열어보면 내부에 수 많은 부품들이 서로 복잡하게 연결되어있는 모습만 볼 수 있을 뿐 원리를 알기는 힘들다. 부품들은 각각 고유의 기능을 가지고 있으며, 목적은 자동차를 안전하게 잘 달리게 하는 것이다. 자동차를 만들거나 정비하는 사람들은 볼트와 너트, 연료 호스나 냉각파이프 그리고 여러 가지 전기장치 등과 같은 부품과 전체적인 구조를 잘 알아야 한다. 그러나 자동차 운전자인 우리는 도로를 달리기 위한 바퀴와 이것을 돌려주는 엔진과 방향을 조정하는 핸들을 가진 편리한 탈 것으로 자동차를 생각한다. 즉, 복잡한 모든 것을 감추고 중요한 몇 가지 특징으로 자동차를 이해하는 것이다. 이러한 인식 과정을 추상화라고 한다.

소프트웨어에서 말하는 추상화도 복잡한 현상과 사물의 대상을 대표적인 것으로 이해하려는 것이다. 그러므로 다른 사람들도 동일하게 인식할 수 있어야 추상화를 잘 한 것이다. 일종의 대표성을 가진 일반적인 법칙을 찾아 내는 것이라고 생각하면 된다. 일반적인 법칙이란 남들도 나와 같이 생각할 수 있어야 한다는 뜻이다. 다른 사람들의 생각과 틀린 별난 생각은 안 되는 것이다. 다른 사람들이 내가 생각한 것과 다르게 생각할 가능성이 있다면 추상화를 잘 못한 것일 수 있다.

추상화를 진행하면서 불필요하고 복잡한 세부적인 내용들을 감추는데 이것을 세부적인 정보는 감춘다는 뜻으로 정보은닉이라고 부른다. 또한 의도적으로 단편적인 정보를 감추는 이러한 행위를 캡슐화라고 한다. 캡슐 알약처럼 약 캡슐 안에 여러 가지 종류의 약을 한번에 담아 두고 먹으면 편하게 한 것과 동일한 의미이다. 그러므로 세부적인 설명이나 모습들을 모아서 캡슐화하는 방법으로 대표성의 의미를 정리하는 작업이 추상화라고 할 수 있다.

그림의 캡슐에는 다친 사람을 위한 캡슐이다. 이 안에는 상처를 빠르게 아물게 하는 항생제, 소화제 및 영양제가 복합적으로 들어 있다. 모아진 이런 약들을 추상화하여 ‘빠른 상처를 치유하는 캡슐’ 약이라고 할 수 있다.

실제 자동차의 사진과 자동차를 추상화한 그림을 보면 추상화 내용은 엔진과 바퀴를 가지고 있기 때문에 자동차의 전진과 후진이 가능하면서 방향은 핸들로 조작하여 전환이 가능하고 사람은 자동차 내부의 의자에 앉아서 편안하게 이동한다는 개념이다. 물론 먼지나 외부의 환경 변화에 대응할 수 있도록 천장과 유리로 안전하게 보호되고 있다.

자동차를 세부적으로 보면 엔진은 실린더, 크랭크축, 점화 플러그, 연료 공급장치로 구분되는데 이것을 캡슐화하며 엔진으로 추상화한다. 자동차바퀴는 변속기, 4개의 바퀴, 바퀴를 연결하여 동력을 전달하는 전달장치, 차동장치, 스프링 등으로 구성되어 있는데 바퀴로 캡슐화하여 추상화한다. 운전대는 운전대, 기어 조작기, 와이퍼 등의 조정장치로 구성되어 있는데 운전대로 추상화한다. 그러므로 최종적으로 자동차는 엔진, 바퀴, 운전대로 추상화할 수 있다.

추상화가 필요한 이유는 복잡한 현상이나 사물을 간단하게 설명하거나 쉽게 이해하기 위해서 이며 사물을 간단하게 설명하거나 쉽게 이해하려는 목적은 궁극적으로 모델화를 하기 위해서 이다. 모델화가 필요한 이유는 요구한 내용대로 작동하는 소프트웨어를 만들기 위해서 이다. 문제를 분석하여 나온 최적의 해결안을 추상화라는 과정을 통하여 가장 적합한 소프트웨어 모델 즉, 모형을 만들어 내는 것이다. 이 모형을 프로그램으로 구체화시킨 것이 우리가 실제로 사용하는 소프트웨어이다.

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

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

관련기사

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