컴퓨터는 인간과 달리 실수를 하지 않는다고 생각한다. 그러나 이는 잘못된 생각이다. 컴퓨터도 실수, 좀 더 정확하게 말하자면 ‘오류’를 범한다.
컴퓨터를 움직이는 소프트웨어(SW)를 조금만 들여다보면, 어딘가에 오류를 일으키는 버그(bug)가 존재하고 있음을 알게 된다. 아무리 완벽한 코드를 짰다고 자신해도, 대부분 에러가 생기는 것이 보통이다.
문제는 이런 버그들이 조금만 존재해도 컴퓨터 전체에 커다란 영향을 줄 수 있다는 점이다. 로켓 폭발이나 원전 가동 중지 등 컴퓨터 오작동으로 인해 발생하는 여파가 때로는 인류에게 엄청난 피해를 주는 경우를 볼 때, SW 버그는 결코 가볍게 여길 문제가 아니다.
첨단기술 전문 매체인 기즈맥(gizmag)은 지난 30일자 기사를 통해 미국의 과학자들이 버그를 자동으로 수정할 수 있는 새로운 SW를 선보여 화제가 되고 있다고 보도하면서, 이 SW가 상용화된다면 오류 수정을 위해 며칠 밤을 고생해야 하는 수고가 덜어질 것이라고 밝혔다. (전문 링크)
생체 시스템의 유전자 전이 개념을 활용
버그를 자동으로 수정할 수 있는 SW는 미 MIT대의 스텔리오스 시디로글루 더스코스(Stelios Sidiroglou Douskos) 박사와 동료들이 개발했다. 이 SW는 다른 프로그램에서 코드를 가지고와, 결함 있는 프로그램의 코드를 수정하는 매우 독특한 메커니즘을 지니고 있다.
연구진은 이 메커니즘이 ‘수평적 코드 이식(Horizontal Code Transplant)’의 원리로 이루어졌다고 설명했는데, 이는 생체 시스템에서 일어나는 ‘수평적 유전자 전이(HGT, Horizontal Gene Transfer)’ 개념에서 따온 것이다.
수평적 유전자 전이란 유전자를 부모세대에게서 물려받는 일반적인 경우와는 달리, 예외적으로 다른 곳에서 받는 것을 말한다. 이 현상은 일부 유전자들이 박테리아나 바이러스 속에 담겨진 플라스미드(plasmid)를 통해 다른 생명체로 전이되는 경우가 발생함에 따라 밝혀졌다.
물론 이렇게 전이되는 비중이 크지는 않지만, 과학계는 일부 유전자들이 이런 방식으로 이동을 할 수 있다는 사실만으로도 생물 진화에 여러 가지 영향을 끼쳤을 것으로 예측하고 있다. 유전자 입장에서 보더라도 다양한 생물체에 끼어들어가서 무한 증식을 할 수 있는 기회가 생기는 것인 만큼, 자신에게 유리한 선택을 하는 진화의 과정으로 볼 수 있다.
이처럼 버그를 자동으로 수정할 수 있는 SW는 생체 시스템의 개념을 빌렸기 때문에, 명칭도 생물학적인 이름과 유사하게 ‘코드파지(CodePhage)’로 정해졌다. 파지라는 단어 자체가 박테리오파지(bacteriophage), 즉 바이러스를 의미하는 용어이기 때문이다.
상용화된다면 SW업계에 일대 변혁 가져와
코드파지의 놀라운 기능은, 필요한 코드를 제공해주는 프로그램의 소스코드를 알 필요가 없다는 점이다. 이 SW는 코드를 제공해주는 프로그램의 소스코드를 살펴보는 대신, 해당 프로그램의 실행과정을 분석하여 필요한 코드를 파악하는 것으로 알려졌다.
따라서 오류가 발생한 프로그램과 코드를 제공해주는 프로그램이 각자 다른 프로그래밍 언어로 작성되어 있어도 코드의 복사 및 삽입이 가능하다는 것이 연구진의 설명이다.
실험에 앞서 연구진은 오류가 생긴 프로그램을 ‘이식자’, 코드를 제공하는 프로그램을 ‘기증자’라고 이름 붙였다. 이어서 오류가 생기는 프로그램이 어떤 경우에 오류가 나타나는지를 점검했다.
다음으로 연구진은 코드파지를 통해 오류를 보완해 줄 코드 제공 프로그램을 찾았다. 그리고 이 코드를 이용해서 에러를 자동으로 수정하거나, 경고를 띄울 수 있는 프로그램으로 바꾸는데 성공했다.
다시 말해 이식자 프로그램에서 발생한 결함을 확인한 후에 기증자 프로그램을 분석하면서 필요한 코드를 파악하고, 이어서 코드를 이식자 프로그램의 프로그래밍 언어로 변환한 뒤에 이식자 프로그램의 소스코드에 삽입한다는 것이다.
이 같은 결과에 대해 MIT대 컴퓨터공학부의 ‘에머리 버거(Emery Berger)’ 교수는 “유사한 기능을 수행하는 다른 프로그램으로부터 코드를 빌려와 보안결함이 있는 프로그램을 고치는데 사용하는 코드파지의 기능이 정말로 놀랍다”고 평가했다.
그 이유로 “코드를 제공해 주는 ‘기증자’ 프로그램들이 제각기 다른 사람들에 의해 만들어진 만큼, 서로 다른 코딩 기준과 다양한 종류의 변수가 적용되고 있다”고 설명하면서 “그럼에도 불구하고 변수들 간의 상관관계를 분석한 후에 적절한 코드를 수집하여 제공한다는 것은 SW 역사에 있어 한 획을 긋는 사건”이라고 강조했다.
정말로 이 같은 일이 가능해 진다면, SW 업계는 일대 변혁이 일어날 전망이다. 프로그래머의 시간을 엄청나게 뺏는 코드 수정 작업을, 이제는 자동으로, 그것도 단 시간에 할 수 있다는 것을 의미하기 때문이다.
SW업계의 관계자들도 “코드파지가 상용화된다면 프로그램 개발 시간이 단축되는 것은 물론, 오랜 시간이 걸리는 프로그래머들의 단순노동 또한 대폭 줄어들 것으로 보인다”고 기대했다.
- 김준래 객원기자
- stimes@naver.com
- 저작권자 2015-07-09 ⓒ ScienceTimes
관련기사