Intel’s news source for media, analysts and everyone curious about the company.

인텔, 코드에서 버그 감지하는 머신 프로그래밍 도구 공개

2020 12 4, 서울 인텔은 오늘 개최한 인텔 랩스 데이(Intel Labs Day)에서 코드 상 오류를 자율적으로 감지할 수 있는 머신 프로그래밍 연구 시스템인 컨트롤플래그(ControlFlag)를 선보였다. 컨트롤플래그는 새로운 자기 지도 시스템(self-supervised system)을 갖춰 개발 초기 단계임에도 불구하고 소프트웨어 개발자들에게 디버깅과 같은 노동 집약적인 작업을 보조하는 강력한 도구로 거듭날 가능성을 선보였다. 컨트롤플래그는 예비 테스트에서 분류되어 있지 않은 10억 개 이상의 생산 품질 코드에 대한 결함을 훈련하고 학습했다.

저스틴 고트슐리히(Justin Gottschlich), 인텔 머신 프로그래밍 연구소 설립자 및 수석 과학자 겸 소장은 “컨트롤플래그는 코드를 평가하고 디버깅하는데 필요한 시간과 비용을 획기적으로 줄일 수 있는 강력한 도구”라며 “연구에 따르면, 소프트웨어 개발자들은 시간의 50%를 디버깅에 할애한다. 컨트롤 플래그 및 이 같은 시스템을 통해 프로그래머들이 디버깅에 할애하는 시간을 현저히 줄이고, 그들이 가장 잘 하는 일, 즉 기계에 창의적인 아이디어를 적용하는 일에 더 많은 시간을 사용할 수 있을 것이라 생각한다”고 말했다.

개발자들은 소프트웨어로 많은 것이 운영되고 있는 세상에서 코딩보다는 버그를 고치는데 많은 시간을 쏟고 있다. 실제로, 매년 IT 산업에 드는 소프트웨어 개발 비용 1조 2,500달러 중 50%가 코드 디버깅을 위해 쓰이는 것으로 추산된다.[1]

디버깅은 개발자와 업계 전반에 훨씬 더 큰 영향을 줄 것으로 예상된다. 오늘날 방대한 양의 데이터를 관리하기 위해 특수 제작된 프로세서를 혼합 사용하는 이종 아키텍처 시대로 발전함에 따라, 이러한 시스템을 관리하는데 필요한 소프트웨어는 점점 더 복잡해지고 있으며, 버그 발생 가능성 역시 높아지고 있다. 다양한 하드웨어에 걸쳐 정확하고 효율적이며, 안전하게 프로그래밍을 할 수 있는 전문성을 갖춘 소프트웨어 프로그래머를 찾는 것 역시 더욱 어려워지고 있다. 이는 코드에서 발견하기 힘든 새로운 오류를 야기할 수 있다.

컨트롤플래그의 기능이 완전히 실현될 경우 테스트, 모니터링, 디버깅 등 소프트웨어 개발 과정에 있어 지루한 부분을 자동화해 문제를 해결하는 데 도움이 될 수 있다. 이는 개발자들의 효율적인 업무를 지원해 창의성을 발휘할 수 있는 시간을 확보할 뿐 아니라 오늘날 소프트웨어 개발 분야에서 가장 많은 비용이 드는 코드 디버깅 관련 문제를 해결할 수 있을 것이다.

컨트롤플래그의 버그 감지 기능은 머신 프로그래밍과 머신러닝, 정형 기법, 프로그래밍 언어, 컴파일러들과 컴퓨터 시스템이 결합하여 활성화된다.

컨트롤플래그는 ‘이상 감지’로 알려진 기능을 통해 작동한다. 자연계에 존재하는 인간은 관찰을 통해 ‘정상’이라고 판단하는 일정 패턴들을 학습한다. 마찬가지로 컨트롤플래그는 정상 코딩 패턴들을 감지하기 위해 검증된 샘플을 통해 학습해 버그를 발생시킬 가능성이 있는 코드에서 이상 징후를 식별한다. 특히, 컨트롤플래그는 프로그래밍 언어에 관계없이 이상 징후를 감지할 수 있다.

컨트롤플래그의 패턴 인식에 대한 비감독(unsupervised) 접근법의 주요 이점은 학습을 통해 본질적으로 개발자의 스타일에 적응할 수 있다는 것이다. 컨트롤플래그는 프로그램이 평가해야 하는 관리 도구에 대한 제한된 입력값을 통해 인간이 영어에서 전체 단어와 축약어 간의 차이를 인식하는 방식과 유사하게 프로그래밍 언어 스타일 변화를 식별할 수 있다.

컨트롤플래그는 다양한 스타일의 식별과 태그를 학습한다. 아울러, 이 과정에서 얻은 통찰력을 바탕으로 사용자에 맞춘 오류를 식별하고 솔루션을 추천할 수 있다. 이를 통해, 두 개의 개발팀의 서로 다른 스타일로 인해 발생하는 코드의 차이점을 오류라고 식별하는 가능성을 최소화할 수 있다.

컨트롤플래그는 과거 소프트웨어 개발자들이 검토하고 현재 널리 사용되고 있는 생산 품질 코드에 존재하는 잠재적 버그를 식별하는 능력을 이미 입증했다. 예를 들어, 오픈 소스에서 사용할 수 있고 프로그래머들이 널리 채택해 인터넷 다운로드가 가능한 명령행 도구인 cURL을 컨트롤플래그가 분석할 때, 이전에 감지되지 않았던 이상 징후를 발견해 cURL 개발자들이 더 나은 솔루션을 제안하도록 유도했다.

인텔은 이미 자체 소프트웨어와 펌웨어의 제품화에서 버그 식별을 위해 내부적으로 컨트롤플래그의 사용 평가를 시작했다. 이는 개발자들의 속도 향상을 위해 전문적 지원을 제공하는 인텔의 개발자용 고속 분석(Rapid Analysis for Developers) 프로젝트의 핵심 요소다.

많은 정보: 인텔 랩스 데이 (프레스킷) | MISM: 엔드 투 엔드 신경 코드 유사성 시스템 | 소프트웨어 개발이 머신으로 확대되어야 하는 이유 | 인텔 랩스 (프레스킷) | 머신 프로그래밍의 세가지 특징

[1] http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.370.9611&rep=rep1&type=pdf

인텔에 대하여

반도체 업계의 선두주자인 인텔(Nasdaq: INTC)은 우리의 삶을 윤택하게 하고 전 세계의 발전을 가능케 할 세상을 바꾸는 기술들을 창조하고 있다. 무어의 법칙에 고무된 인텔은 고객의 문제 해결을 돕기 위해 반도체의 설계와 제조 과정을 지속적으로 발전하기 위해 노력하고 있다. 인텔은 클라우드, 네트워크, 엣지 그리고 모든 컴퓨팅 디바이스에 인텔리전스를 접목함으로써 데이터의 잠재력을 끌어내 기업의 비즈니스는 물론 우리가 살고 있는 사회를 좀 더 나은 방향으로 변화시키고 있다. 인텔의 혁신적인 노력에 대한 보다 자세한 정보는 newsroom.intel.com 혹은 intel.com에서 확인 가능하다. 인텔©. 인텔 및 인텔 로고는 인텔사 또는 그 자회사의 상표이다. 기타 명칭과 브랜드는 해당 소유업체의 자산이다.