칼럼

[채성수의 소프트웨어 논리] 소프트웨어를 통한 문제의 해결

발행일시 : 2017-02-06 00:10
[채성수의 소프트웨어 논리] 소프트웨어를 통한 문제의 해결

최근에는 컴퓨터에게 스스로 학습할 수 있게 하는 능력을 부여하기 위해 많은 연구가 이뤄지고 있다. ‘알파고’라는 인공지능 컴퓨터는 인간과의 경쟁이 불가능할 것으로 여겨졌던 바둑에서 승리해 세계를 놀라게 했다. 그러나 컴퓨터가 인간보다 뛰어난 능력을 보이는 분야는 극히 제한적이다. 대부분의 경우에 인간이 명령하는 데로 수행하는데 그친다. 그렇기 때문에 인간의 창의성과 논리적 사고 능력이 컴퓨터에게 제대로 일을 시키기 위해서 절대적으로 필요한 이유이기도 하다. 즉 인간의 능력이 높아질수록 좋은 소프트웨어를 개발할 수 있고 이로써 컴퓨터의 능력도 배가 된다는 의미이다. 소프트웨어를 만드는 기본적인 목적은 문제를 해결하기 위해서이다.

우리가 사는 세상에는 여러 가지의 문제가 있다. 뉴스나 신문을 보면 많은 기사들이 사회의 다양한 문제를 가지고 보도한다. 요즘은 환경오염 같은 인류에게 심각한 문제가 있다. 서울과 같은 대도시의 경우 올림픽대로 같은 주요 간선 도로는 극심한 교통체증의 문제가 있다. 사회적으로는 청년 취업 문제, 인구 감소 문제, 복지 문제 등이 있다. 사람마다의 개인적인 문제들도 많이 있다. 학생은 공부가 잘 안되거나 성적이 원하는 만큼 오르지 않아 고민을 하는 경우도 있을 것이다. 쓸 곳은 많은데 용돈을 적게 줘서 고민을 하기도 한다. 이와 같이 ‘문제’는 ‘해결의 대상’이라고 할 수 있다.

[채성수의 소프트웨어 논리] 소프트웨어를 통한 문제의 해결

간단한 문제도 있지만 복잡한 문제도 있으며, 해결이 쉬운 것도 있지만 해결하기 아주 어려운 문제도 있다. 마찬가지로 단기간에 해결이 가능한 것도 있지만, 시간이 오래 걸리는 문제도 있으며, 혼자서도 할 수 있지만 여러 사람이 같이 하지 않으면 안 되는 것도 있다. 그런데 문제를 해결하려면 문제를 잘 이해해야 하는데, 남에게 내게 닥친 문제 해결을 부탁하려면 어떻게 해야 할까? 여기서 얘기하고자 하는 주제가 이것이다. 남에게 문제를 해결시키기 위해서는 상대방이 이해할 수 있는 수준으로 문제에 대한 설명을 잘 해야 한다. 그렇지 않으면 문제가 잘 풀리지 않을 것이다.

과학적으로 문제를 정의하고 해결하는 방법 중에 가장 효과적인 수단이 수학이라고 한다. 수학으로 문제를 정의하면 정확하게 표현할 수 있어서, 다른 사람들도 동일하게 이해할 수 있다. 물론 수학적 지식이 있는 사람만 이해를 할 수 있겠지만, 수식으로 표현한 내용에 대해서 서로 다르게 생각하지 않는다. 간단한 계산이지만 ‘2+2=’, ‘24x365=’ 에 대해서 서로 다르게 계산할까? 수학을 배운 사람들은 절대로 그렇지 않을 것이다. 이미 + 기호는 두 수를 덧셈하라는 것이고 x 기호는 두 수를 곱하라는 기호로 알고 있기 때문이다. 수학을 배운 사람은 학습한 대로 약속을 잘 지키고 있기 때문이다.

그렇지만 수학이 아닌 다른 분야의 문제는 어떻게 정의 할까? 먼저 문제가 무엇인지 정확하게 규명하는 것이 중요할 것이다. 예를 들어 새로 구입한 최신형 전자동 세탁기가 세탁이 안 되는 현상을 가지고 이해해 보자. 문제가 발생하는 이유를 4가지 방향에서 생각해 보았다. 크게 보면, 물 공급이 안돼서 발생하는 문제, 세탁기 자체가 발생시키는 문제, 세제가 원인인 경우 그리고 빨랫감이 원인인 경우가 있다고 분석했다.

물 공급의 문제는 파이프가 연결이 안되었거나, 수압이 낮을 수 있으며 혹은 수도관이 동파되었을 수도 있다. 세탁기의 기계적 문제는 스위치 불량, 타이머의 고장, 모터의 고장, 세탁기의 수평이 안 맞아서 생기는 문제로 나눌 수 있다. 세제의 경우 세제 공급 시기가 안 맞거나, 세제가 없을 수도 있다. 또한 세제가 녹지 않을 수도 있다. 세제가 아닌 것을 넣었을 수도 있다. 빨랫감 자체의 문제도 있을 것이다. 기름때여서 세탁이 안되거나 옷을 너무 많이 넣어서 그럴 수도 있고, 옷의 소재가 세탁이 안 되는 것일 수도 있다. 문제의 원인을 분석하여 물고기 뼈 모양의 그림으로 표시하는데 이것을 영어로 피쉬본(Fishbone)이라고 한다. 이 방법은 원인 분석을 하는 기법으로 자주 사용한다. 그림으로 표현하는 것이 말이나 글로 일일이 설명하는 것보다 체계적이고 이해하기 쉬운 방법임을 알 수 있다.

[채성수의 소프트웨어 논리] 소프트웨어를 통한 문제의 해결

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

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

© 2017 nextdaily.co.kr 무단전재 및 재배포금지

서울시 금천구 가산디지털2로 123, 701호 ㅣ 대표전화 : 02-6925-6318
사업자등록번호 : 119-86-28010 ㅣ 정기간행물 등록번호 : 서울 아 01185

Copyright © Nextdaily. All Rights Reserved