지금까지 모든 소프트웨어 개발자들과 소프트웨어를 사용하는 사람들의 공통적이고 원초적인 갈망은 소프트웨어를 잘 만들어서 생각한 그대로 수행하는 것을 보는 것이다. 엄밀하게 말하면 전문가들이 결점이라고 하는 버그가 없어야 한다. 이렇게 만들어진 소프트웨어는 기업이나 개인이 잘 쓰게 된다.

하지만 한 번 만들어진 소프트웨어가 계속 사용되는 것은 아니다. 소프트웨어는 사용되다가 환경이나 상황이 바뀌면 소규모의 업그레이드를 통하여 기능이 개선된 소프트웨어로 변신하여 생명을 연장하거나 아니면 폐기되는 것이 일반적 상황이다. 하지만 개인이 만든 것들을 조합하여 커다란 소프트웨어 시스템을 구축하는 것이 일반적 관행이된다면 문제가 되는 소프트웨어 구성품을 잘 고치고 개선하는 것도 중요한 사회적 관심 사항이 될 것이다.

여러 사람에게 공개된 소프트웨어가 한참 잘 사용되고 있었는데 그 동안 알지 못했던 문제점에 봉착하여 더 이상 사용할 수 없어서 개선이 필요한 경우가 있을 것이다. 문제점이 빠르게 해결되지 않는 상황이고, 많은 사람들이 즐겨 쓰는 소프트웨어이라면 사회적 문제가 크게 발생할 수 있다. 또한 일반사람들의 소프트웨어 DIY(Do It Yourself)에 의해서 만들어지는 수많은 소프트웨어들의 문제점을 해결하는데도 많은 어려움에 봉착할 것이다.

널리 사용되지 않는 소프트웨어라면 개인이나 작은 집단의 문제로 한정될 수도 있지만 개인에게는 치명적일 수도 있다. 개인 사업가로써 핵심적인 소프트웨어로 개발하여 사업적으로 사용하는 소프트웨어 일 수도 있고, 연구소 내에서 중요하고 위험한 연구개발에서 한정적으로 사용하는 소프트웨어일 수도 있지만 만약 문제가 발생하면 주변에 막대한 피해를 줄 수 있는 상황일 수도 있다. 그러므로 소프트웨어를 개인이 개발했는지? 혹은 기업에서 개발했는지? 공동으로 했는지 아닌지는 중요한 관점이 아니다. 빠른 시간 내에 문제점을 파악하여 해결할 수 있는 사회적 역량을 갖추는 것이 우선인 것이다.

이러한 역량을 갖추고 문제 해결을 수행하는 소프트웨어 전문가가 소프트웨어 의사이다. 소프트웨어 의사는 소프트웨어에서 발생하는 문제점을 진단하여 원인을 파악하고 수정하여 해결해 주는 사람이다. 우리가 일반적으로 생각하는 의사와 동일한 일을 수행한다. 단지 진료 대상이 소프트웨어일 뿐이다. 미래사회를 그리는 영화에서는 인공지능, 로봇 등이 소프트웨어의 문제로 인간에게 해악을 끼치면 분노한 인간들이 해당 소프트웨어와 관련된 모든 것을 파괴하는 것으로 종종 묘사되곤 한다. 하지만 소프트웨어 의사는 치료가 우선이다.

병이 난 소프트웨어를 고치는 소프트웨어 의사가 없다면 공개된 소프트웨어를 수정하여 해결하는 것은 참으로 난망할 것이다. 처음에 개발에 참여한 설계자나 개발자를 다행히 찾아서 수정을 할 수 있다면 다행이지만 소재가 불명확할 경우 어떻게 해야 할까? 가장 확실한 방법은 기능이 비슷한 소프트웨어를 새로 개발하는 것이다. 하지만 많은 시간과 노력이 든다면 바람직하지 않은 결정이 될 것이다.

소프트웨어 의사들이 소프트웨어의 알고리즘 문제를 고치거나 개선하는 것이 가능할까? 대부분의 경험 있는 개발자들은 시간이 너무 오래 걸리거나 불가능할 것을 생각할 수도 있다. 사람들은 소프트웨어를 만드는데 있어서 각자의 경험과 능력을 가지고 자신만의 코딩을 하기 때문이다. 동일한 기능을 하는 소프트웨어라도 내부의 알고리즘을 들여다 보면 같은 것이 하나도 없다는 것이 경험이다. 그렇다면 남들이 만들어 놓은 소프트웨어를 먼저 이해하여 알고리즘을 이해하여 고치는 것은 상당히 힘들고 어려운 과정이 될 것이다.

그렇지만 힘들고 어렵다고 그냥 놔두는 것은 경제적으로 사회적으로 혹은 정치적으로도 큰 문제가 될 수도 있다. 소프트웨어 개발자가 직접 고치는데 많은 시간이 투입되어야 한다면 소프트웨어를 고치는 소프트웨어 알고리즘 즉 인공지능을 생각할 필요가 있다. 이 소프트웨어는 의사를 보조하는 소프트웨어로 고쳐야 할 소프트웨어의 알고리즘을 체계적으로 분석하여 의사에게 알려준다. 의사는 알고리즘을 파악하고 어떤 곳이 문제인지, 어디를 개선해야 하는지 쉽게 알 수 있고 그에 대한 해결 방안도 제시할 수 있다. 이 소프트웨어는 소프트웨어 알고리즘을 분석하여 제시하지만 소프트웨어 의사의 의사결정에 따라 행동하기 때문에 인간에 종속적인 소프트웨어이다.

병원에서 의사들이 진단하는데 많은 시간이 소요되지만 인공지능 소프트웨어의 지원 하에 빠르게 병을 진단하여 치료에 대한 의사결정을 하는 것처럼 소프트웨어 진단 소프트웨어는 인간이 알고리즘을 이해하고 습득하는데 필요한 시간의 절감과 인간의 오류에서 나오는 2차 실수를 사전에 감지하는 이점을 제공한다. 그럼으로써 많은 소프트웨어를 가용한 시간 내에 진단하고 치료할 수 있을 것이다.

채성수 chaesungsoo@iabacus.co.kr 소프트웨어개발 전문기업 ㈜애버커스 사업총괄부사장. 엘지전자와 엘지씨엔에스(LG CNS)에서 다년간 컴퓨터 관련 사업을 추진한 전문가이다. 국가 공인 최고 자격인 정보관리기술사로 대학에서 컴퓨터 관련 연구를 하였다. ‘속도경쟁사회’, ‘코딩을위한컴퓨팅사고력’ 등 5권의 책을 저술하였으며 넥스트데일리의 컬럼니스트로 활동하였다. 현재 ㈜애버커스의 COO로 근무하고 있다.

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

관련기사

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