Figure 1: 현존하는 정적 분석 기술의 한계와 본 연구의 목표. 이러한 허위경보(false alarm)를 가질 수 밖에 없는데, 오탐율(전체 경보중 허위경보의 비율)이 정확도의 척도가 된다. 유용한 정적 분석기는 충분히 낮은 허위경보율을 가져야 한다. 대형 프로그

Similar documents
Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

KARAAUTO_1¿ù.qxd.ps, page Normalize

2014밝고고운동요부르기-수정3

2005프로그램표지

186최종

197

177

= ``...(2011), , (.)''

OCW_C언어 기초

6.24-9년 6월

04 Çмú_±â¼ú±â»ç

위해 사용된 기법에 대해 소개하고자 한다. 시각화와 자료구조를 동시에 활용하는 프로그램이 가지는 한계와 이를 극복하기 위한 시도들을 살펴봄으로서 소셜네트워크의 분석을 위한 접근 방안을 고찰해 보고자 한다. 2장에서는 실험에 사용된 인터넷 커뮤니티인 MLBPark 게시판

* pb61۲õðÀÚÀ̳ʸ

Vector Differential: 벡터 미분 Yonghee Lee October 17, 벡터미분의 표기 스칼라미분 벡터미분(Vector diffrential) 또는 행렬미분(Matrix differential)은 벡터와 행렬의 미분식에 대 한 표

09권오설_ok.hwp

여행기


02 프랜시스 베이컨은 책을 넓고 넓은 바다를 지나가는 배 로 표현했다. 윌리엄 채닝은 우리는 주로 책을 통해서 위인들과 대화한다. 위인들은 양서들을 통해서 우리에게 이 야기하고, 그들의 귀중한 사상들을 우리에게 전해 주며, 그 들의 정신을 우리에게 쏟아 부어 준다.

2009_KEEI_연차보고서

¹é¼Ł sm0229-1

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

<C0DAB7E120C7D5BABB2E687770>

Analysis of objective and error source of ski technical championship Jin Su Seok 1, Seoung ki Kang 1 *, Jae Hyung Lee 1, & Won Il Son 2 1 yong in Univ

<B3EDB9AEC0DBBCBAB9FD2E687770>

R을 이용한 텍스트 감정분석

=10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000 ±×to0.03ex±×to0.03ex±×=10100 =minusby by1000 ·¥to0.03ex·¥to0.03ex·¥=10100 =minusby by1000 ºÐto0.03exºÐto0.03exºÐ=10100 =minusby by1000 ¼®to0.03ex¼®to0.03ex¼®. SW=10100 =minusby by1000 ¿Àto0.03ex¿Àto0.03ex¿À=10100 =minusby by1000 ·ùto0.03ex·ùto0.03ex·ù=10100 =minusby by1000 °Ëto0.03ex°Ëto0.03ex°Ë=10100 =minusby by1000 Áõto0.03exÁõto0.03exÁõ. =10100 =minusby by1000 »êto0.03ex»êto0.03ex»ê=10100 =minusby by1000 °úto0.03ex°úto0.03ex°ú=10100 =minusby by1000 °ñto0.03ex°ñto0.03ex°ñ. =10100 =minusby by1000 ¹Ìto0.03ex¹Ìto0.03ex¹Ì=10100 =minusby by1000 °³to0.03ex°³to0.03ex°³=10100 =minusby by1000 ÇÑto0.03exÇÑto0.03exÇÑ.

Microsoft PowerPoint - chap05-제어문.pptx

CC hwp

exp

03-최신데이터

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형


Chapter ...

Artificial Intelligence: Assignment 6 Seung-Hoon Na December 15, Sarsa와 Q-learning Windy Gridworld Windy Gridworld의 원문은 다음 Sutton 교재의 연습문제

untitled

<5BB9E8C0E7B4EBC7D0B1B35DBFACB1B8BAB8B0EDBCAD2DC3D6C1BEC3E2B7C22E687770>

2002년 2학기 자료구조

02 _ The 11th korea Test Conference The 11th korea Test Conference _


KCC2011 우수발표논문 휴먼오피니언자동분류시스템구현을위한비결정오피니언형용사구문에대한연구 1) Study on Domain-dependent Keywords Co-occurring with the Adjectives of Non-deterministic Opinion

이 장에서 사용되는 MATLAB 명령어들은 비교적 복잡하므로 MATLAB 창에서 명령어를 직접 입력하지 않고 확장자가 m 인 text 파일을 작성하여 실행을 한다


슬라이드 1

#유한표지F

춤추는시민을기록하다_최종본 웹용

041~084 ¹®È�Çö»óÀбâ

1 경영학을 위한 수학 Final Exam 2015/12/12(토) 13:00-15:00 풀이과정을 모두 명시하시오. 정리를 사용할 경우 명시하시오. 1. (각 6점) 다음 적분을 구하시오 Z 1 4 Z 1 (x + 1) dx (a) 1 (x 1)4 dx 1 Solut

<333820B1E8C8AFBFEB2D5A B8A620C0CCBFEBC7D120BDC7BFDC20C0A7C4A1C3DFC1A42E687770>

<B1DDC0B6B1E2B0FCB0FAC0CEC5CDB3DDB0B3C0CEC1A4BAB82E687770>

425.pdf

ePapyrus PDF Document

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

키고 있다. 이하에서는 이러한 인적자원과 자격에 대한 주요 정책 이슈들을 논의한다. Ⅱ. 인적자원의 형성과 활용의 흐름 인적자원의 흐름은 사람이 태어나서 무덤에 이르는 생애기간 동안 학습하고, 학습결과를 일터 에서 활용하는 것을 망라하는 넓은 영역을 포괄한다. 우선 이

Frama-C/JESSIS 사용법 소개


<353420B1C7B9CCB6F52DC1F5B0ADC7F6BDC7C0BB20C0CCBFEBC7D120BEC6B5BFB1B3C0B0C7C1B7CEB1D7B7A52E687770>

¼øâÁö¿ª°úÇÐÀÚ¿ø

Observational Determinism for Concurrent Program Security

?

Ⅱ. Embedded GPU 모바일 프로세서의 발전방향은 저전력 고성능 컴퓨팅이다. 이 러한 목표를 달성하기 위해서 모바일 프로세서 기술은 멀티코 어 형태로 발전해 가고 있다. 예를 들어 NVIDIA의 최신 응용프 로세서인 Tegra3의 경우 쿼드코어 ARM Corte

04±èºÎ¼º

자연언어처리

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

인문사회과학기술융합학회

SIGIL 완벽입문

09오충원(613~623)

2013unihangulchar {45380} 2unihangulchar {54617}unihangulchar {44592} unihangulchar {49328}unihangulchar {50629}unihangulchar {51312}unihangulchar {51

À±½Â¿í Ãâ·Â

ÀÛ¾÷

초보자를 위한 C++

<3235B0AD20BCF6BFADC0C720B1D8C7D120C2FC20B0C5C1FE20322E687770>

Microsoft PowerPoint - chap03-변수와데이터형.pptx

SNU =10100 =minusby by1000 ÇÁto0.03exÇÁto0.03exÇÁ=10100 =minusby by1000 ·Îto0.03ex·Îto0.03ex·Î=10100 =minusby by1000

ÆÊÇ÷¿

THE JOURNAL OF KOREAN INSTITUTE OF ELECTROMAGNETIC ENGINEERING AND SCIENCE Nov.; 26(11),

REP - CP - 016, N OVEMBER 사진 요약 25 가지 색상 Surf 를 이용한 사진 요약과 사진 배치 알고리즘 Photo Summarization - Representative Photo Selection based on 25 Color Hi

PowerPoint 프레젠테이션

31. 을전개한식에서 의계수는? 를전개한식이 일 때, 의값은? 을전개했을때, 의계수와상수항의합을구하면? 을전개했을때, 의 계수는? 를전개했을때, 상수항을 구하여라. 37

박선영무선충전-내지

untitled

< FBEC8B3BBB9AE2E6169>

<BED6C7C3BCD2BDBA5F4B5350BBFDBBEABCBA31C0E5312D32302E70312E504446>

와플-4년-2호-본문-15.ps

Drucker Innovation_CEO과정

4-Ç×°ø¿ìÁÖÀ̾߱â¨ç(30-39)

03 ¸ñÂ÷

APICS 컨퍼런스 수정 2

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

13.11 ①초점

<3031B0ADB9CEB1B82E687770>

DocHdl2OnPREPRESStmpTarget

제 1 절 복습 \usepackage{ g r a p h i c x }... \ i n c l u d e g r a p h i c s [ width =0.9\ textwidth ] { b e a r. j p g } (a) includegraphics 사용의일반적인유형

BibLaTeX을 이용한 한국어 참고 문헌 처리의 가능성

슬라이드 1

<312E20C0AFC0CFC4B3B5E55F C0FCC0DAB1E2C6C720B1B8B8C5BBE7BEE7BCAD2E687770>

Microsoft PowerPoint - chap06-2pointer.ppt

<5BB0EDB3ADB5B55D B3E2B4EBBAF12DB0ED312D312DC1DFB0A32DC0B6C7D5B0FAC7D02D28312E BAF2B9F0B0FA20BFF8C0DAC0C720C7FCBCBA2D D3135B9AEC7D72E687770>

Transcription:

고성능 정적 프로그램 분석 기법 오학주 고려대학교 컴퓨터학과 서론 1 1.1 소프트웨어 오류 문제 소프트웨어가 모든 산업의 기반 기술이 되면서 소프트웨어의 오류로 인해 발생하는 사회경제적 비 용이 천문학적으로 증가하고 있다. 한 예로 미국의 투자금융회사인 KCG(Knight Capital Group)은 2012년 8월 1일 하루동안 2년치의 매출액에 해당하는 4억 달러의 손실을 입었는데, 이는 주식거래 소 프트웨어의 사소한 오작동 때문이었다.1 이뿐 아니라 소프트웨어 오류로 인한 손실은 IT, 전자, 기계, 항공, 국방 등 전 산업분야에 걸쳐 광범위하게 발생하고 있으며, 미국 표준원(National Institute of Standards and Technology)는 소프트웨어 오류로 인해 발생하는 미국내 사회경제적 손실을 연 595 억 달러로 추정한 바 있다.2 1.2 배경기술: 정적 프로그램 분석 정적 프로그램 분석(정적 분석, static program analysis)은 소프트웨어 오류 문제에 대한 유력한 답 으로 여겨지는 기술이다. 정적 분석은 주어진 프로그램이 실행중에 어떤 성질을 가지는지를 미리 엄밀하게 확인하는 기술로써, 프로그램의 모든 실행 경로에 대하여 오류가 없는지를 확인할 수 있다. 특히, 그 확인이 또 다른 소프트웨어(정적 분석기)를 통해서 자동으로, 대상 프로그램을 실행시키지 않고 이루어지므로 비용이 저렴하다. 특히, 정적 분석은 테스팅(program testing)을 보완하는 기술로 주목받고 있다. 테스팅은 소프트 웨어를 직접 실행시켜서 오류가 발생하는지를 확인하는 기술로써 소프트웨어의 오류를 찾는데 현재 가장 일반적으로 사용되는 기술이다. 하지만 테스팅은 주어진 유한한 입력에 대해서만 오류가 있음을 확인할 수 있을 뿐 오류가 없음을 검증하지 못한다. 또한 프로그램을 일일히 실행시켜야 하므로 대형 소프트웨어에 적용하기 어렵다. 1.3 고성능 정적 분석 기법 정적 분석이 실제 소프트웨어 개발 현장에서 일상적으로 사용되려면 해결해야할 문제가 많다. 특히 다음의 세가지 성능을 갖춘 정적 분석 기술이 필요하다. 안전성(Soundness): 정적 분석이 주어진 프로그램의 실제 실행을 모두 포섭하는지를 의미한다. 프로그램은 그 입력에 따라서 무한히 많은 실행을 가질 수 있는데, 정적 분석은 이 모든 가능 성을 포섭해야 하며, 이러한 정적 분석기를 안전(sound)하다고 한다. 정적 분석이 안전해야만 프로그램에 존재하는 모든 오류를 찾거나 특정 오류가 없음을 보장할 수 있다. 정확성(Precision): 낮은 오탐율을 의미한다. 정적 분석은 본질적으로 실제 프로그램 실행이 아닌 실행도 고려하게 된다. 예를들어, 프로그램에 x / y와같은 나누기 연산이 있고 프로그램 실행중에 y가 0을 가지는 경우가 절대 없지만, 정적 분석기는 y가 0을 가질 수 있어서 실행 중에 0으로 나누는 오류가 발생할 수 있다고 보고할 수 있다. 모든 정적 분석기는 근본적으로 정보과학회지 제34권 제3호 1 http://dealbook.nytimes.com/2012/08/02/knight-capital-says-trading-mishap-cost-it-440-million/?_r=0 2 http://www.ashireporter.org/homeinspection/articles/software-errors-cost-u-s-economy-59-5-billion-annually/ 740 1

Figure 1: 현존하는 정적 분석 기술의 한계와 본 연구의 목표. 이러한 허위경보(false alarm)를 가질 수 밖에 없는데, 오탐율(전체 경보중 허위경보의 비율)이 정확도의 척도가 된다. 유용한 정적 분석기는 충분히 낮은 허위경보율을 가져야 한다. 대형 프로그램(Scalability): 대형 소프트웨어를 적은 비용으로 분석할 수 있는 능력이다. 실제 현장의 소프트웨어는 그 크기가 수백만 라인에 달하는 경우도 흔하다. 대형 소프트웨어를 안 전하고 정확하게 분석하려면 보통 큰 분석 비용이 필요하기 마련이다. 하지만 실용적인 정적 분석기는 이러한 대형 소프트웨어를 적절한 비용(시간, 메모리)내에서 분석을 마칠 수 있어야 한다. 정적 분석 분야에서 위의 세가지 성능을 모두 갖춘 정적 분석 기술을 달성하는 것은 그동안 불 가능하다고 알려져 있었지만, 최근들어 조금씩 그 가능성을 보이는 연구성과들이 나오고 있다. 이 글에서는 이들 기술 가운데 두 가지 최신 기법을 설명한다. 먼저 2장에서는 기존 정적 분석 기술의 한계를 설명하고, 3장에서 이를 극복하기 위한 기술들을 소개한다. 2 기존 정적 분석 기술의 한계 그동안 안전하고, 정확하게, 대형 프로그램을 분석할 수 있는 정적 분석 기법은 불가능하다고 여겨져 왔다. 그 결과 현재 정적 분석 도구들은 그림 1(a)-(c)와 같이 제한적인 성능을 가진다. 오류 검출기 들은 안전성을 포기한다(그림 1(a)): 소프트웨어의 오류 검출을 목적으로 하는 정적 분석 도구들은 모두 실제 개발현장의 대형 소프트웨어를 적은 비용으로 분석할 수 있고 낮은 허위 경보율을 가지지만 이는 분석의 안전성을 포기함으로써 가능한 것이다. 따라서 이들 도구는 대상 오류를 모두 찾을 수 없고 일부만 검출할 수 있어서, 근본적으로 소프트웨어 테스팅 기술과 동일한 한계를 가진다. 오류 검증기 들은 대형 프로그램을 포기한다(그림 1(b)): 안전성이 매우 중요한 소프트웨어 (safety critical software)를 분석할 때는 대상으로 하는 모든 오류들을 찾아내는 것이 매우 중 요하다. 이 경우에 사용되는 오류 검증기들은 안전성을 유지한 채 낮은 허위경보율을 가진다. 하지만 이 경우 분석 비용이 매우 커져서 대형 프로그램에는 적용할 수 없다. 2

Figure 2: 스파스 분석 (Sparse Analysis) 아이디어 컴파일러 최적화 에 사용되는 정적 분석기법들은 정확성을 포기한다(그림 1(c)): 컴파일러는 그 특성상 안전성과 대형 프로그램을 포기할 수 없다. 따라서 컴파일러 최적화 단계에 사용되는 정적 분석 기법들(자료 흐름 분석, data-flow analyses)은 주로 프로그램의 간단한 특성을 알아 내는 기술들을 중심으로 발달해 왔고, 프로그램이 복잡해지면 충분히 최적화된 코드를 생성하지 못한다. 3 고성능 정적 분석 기법 이상적인 정적 분석은 그림 1(d)와 같이 안전성, 정확성, 대형 프로그램의 세 가지 성능을 모두 갖춘 것이다. 최근들어 이를 가능하게 하는 기법들이 발표되고 있는데 그 중 두가지 방법을 소개한다. 3.1 스파스 분석: 필요한 순간에, 필요한 부분만 분석하기 첫 번째는 필요한 순간에 필요한 부분만 분석하는 기법이다. 스파스 분석(sparse analysis)라고도 한다. 먼저 기존의 정적 분석이 동작하는 방식을 보자. 그림 2의 왼쪽은 흐름 그래프(control-flow graph) 로 표현한 프로그램을 정적 분석하는 과정을 보여준다. 흐름을 고려하는(flow-sensitive) 분석은 그림 과 같이 각 프로그램 지점마다 프로그램 변수들이 어떠한 값을 가지는지를 나타내는 요약 메모리를 계산하는 것이라 볼 수 있다 (그림에서 각 변수가 가지는 값들은 편의상 생략하였음). 이러한 요약 메모리들은 프로그램의 시작 지점부터 순차적으로 계산되는데, 예를 들어 첫 번째 문장 x=x+1 을 계산하면 입력 메모리의 x값이 x+1로 바뀌는 식이다. 이러한 단계를 거쳐서 마지막 문장까지 모두 요약 메모리를 계산하는 것을 정적 분석 과정으로 생각할 수 있다. 하지만 이 방식은 두가지 측면에서 불필요한 계산을 수반하고 있다. 첫 번째 문장인 x=x+1 을 계산하기 위해서는 x의 값만 필요함에도 불구하고 그 입력 메모리에는 모든 변수의 값이 저장되어 있 다. 그리고 여기서 새로 만들어진 x값은 세 번째 문장에서만 사용됨에도 불구하고 프로그램의 흐름을 따라서 x의 값이 모두 전파된다. 스파스 분석(sparse analysis)은 이러한 두가지 비효율성을 개선한 분석 기법이다. 그림 2의 오 른쪽을 보자. 스파스 분석에서는 먼저 각 프로그램 지점마다 해당 프로그램 지점에서 필요로 하는 변수의 값만을 기억하고 있다. 예를 들어, 첫 번째 문장에서는 x의 값만, 두 번째 문장에서는 y의 값만 3

Figure 3: 스파스 분석의 성능 향상 정도 이 매달려있다. 그리고 생성된 값들은 바로 그 값이 사용되는 지점으로 바로 전달된다. 예를 들어 첫 번째 문장에서 생성된 x의 값은 두 번째 문장을 거치지 않고 바로 세 번째로 전달된다. 이러한 과정을 거쳐서 필요한 부분만, 필요한 순간에 분석하는 기법이 스파스 분석이다. 그림 3는 정적 분석기 스패로우 [2]에 적용했을때 스파스 분석의 성능을 보여준다. 스파스 분석 기법이 적용되기 전에는 최대로 분석할 수 있는 프로그램의 크기가 3만 5000라인 정도인 반면, 스파스 분석을 최대로 적용했을때에는 백만라인 이상의 프로그램을 분석할 수 있을 정도가 되었다. 그리고 스파스 분석을 적용하지 않았을때의 분석속도(lines/sec)는 평균 600배가 증가하였다. 이처럼 스파스 분석은 간단하고 강력한 아이디어이지만 그 이론적 배경은 최근들어 정립되었다. 기존 컴파일러 최적화등의 기법들에서는 이러한 스파스 분석의 초기 아이디어들이 사용되었지만 그 기법들은 모두 초보적이었다. C 프로그램과 같이 포인터가 빈번히 사용되는 경우에는 각 프로그램 지 점마다 어떠한 변수들이 사용되는지 미리 알기가 어렵기 때문이다. 그래서 기존 기법들은 제한적으로 스파스 분석의 아이디어를 사용해왔다. 스파스 분석이 엄밀하게 정의되고, 그 유용성이 일반적으로 보여진 것은 최근의 일이다 [1, 3]. 3.2 선별적 정확도 향상 기법 두 번째로 소개할 기술은 정교한 정적 분석 기술을 선별적으로 적용하는 기법이다. 먼저 정적 분석에서 정확도 의 개념을 이해하기 위해서 아래 그림을 보자. 왼쪽 그림에서 별 영역은 프로그램이 실행중에 가지는 상태들을 의미하고 오른쪽 위의 팔각형은 프로 그램에서 오류가 발생하는 상태를 나타낸다. 프로그램 실행상태와 오류상태가 서로 겹치지 않으므로 실행중에 오류가 발생하지 않는 상황을 의미한다. 정적 분석은 프로그램을 실행시키지 않고 오류가 4

발생하지 않음을 알아내는 것인데, 이를 정확히 알아내는 것은 논리적으로 불가능하다 (이것이 가능 하면 종료문제(halting problem)을 푸는 것이 가능하기 때문). 따라서 정적 분석은 왼쪽 그림과 같이 프로그램 실행을 포함하는 요약 상태 를 계산하는데 왼쪽 그림과 같이 너무 안전하게 요약하면 실제 오류가 아닌데 오류라고 보고하는 허위경보(false alarm)가 발생하게 된다. 주어진 요약 상태로부터 많은 허위경보가 발생한다면 오른쪽 그림과 같이 정교하게 요약함으로써 허위경보를 최대한 줄일 수 있다. 하지만 이러한 경우 대게 정적 분석은 그 비용이 매우 커지게 된다. 즉, 정적 분석에는 본질적으로 비용이 작으면 정확도가 떨어지고, 정확도가 높으면 비용이 증가하는 딜레마가 있다. 선별적 정적 분석의 목표는 이러한 정적 분석의 딜레마를 해결하는 것이다. 핵심 아이디어는 매우 간단하다. 선별적 분석 방식에서는 아래 그림과 같이 오류가 발생할만한 지점의 요약 상태만 정교하게 하고, 나머지 부분에서는 부정확한 분석을 유지함으로써 분석 비용의 증가는 최소화하고, 그로 인한 정확도 증가는 최대화 시키는 것이다. 문제는 정교화할 부분을 어떻게 찾느냐인데, 이를 위해 두가지 방식이 제시되었다. 첫 번째는 사전 분석(pre-analysis)를 이용하여 정확도 향상이 예상되는 부분을 어림잡는 방식이다 [4, 5]. 본 분석을 진행하기에 앞서서 본 분석의 행동을 한단계 더 요약하여 그 행동을 예측하는 방식이다. 다른 방식은 정확도 향상이 예상되는 지점을 주어진 데이터로부터 학습하는 방식이다 [6]. 이 방식에서는 주어진 데이터(코드베이스)로부터 어떠한 부분을 선별하는 것이 가장 효과적인지를 학습하고, 새로운 프로 그램이 주어졌을 때 학습한 전략을 활용하여 정확도를 높일 부분을 선별해낸다. 두 가지 모두 최근에 제안된 기법으로 각각의 장단점을 가지고 있다. 사전분석 방식은 그 예측이 어느정도 올바르다는 이론적 보장이 가능하지만 각 분석 방식마다 사전분석을 전문가가 디자인해야 한다는 부담이 있고, 기계학습을 이용한 방식은 일반적으로 적용가능하지만 기계학습의 특성상 어떠한 보장도 해줄수 없다 는 점이다. 선별적 정적 분석은 현재 초기단계의 연구성과만 달성되었을 뿐이다. 앞으로 더 획기적인 선별방법, 혹은 위의 두 가지 방식의 장점을 결합하는 방법들이 계속 개발될 것으로 기대된다. 4 결론 이 글에서는 대형 프로그램을 안전하고 정확하게 분석할 수 있도록 하는 정적 분석 기법들의 최근 동향을 살펴보았다. 정적 분석은 소프트웨어 오류 검출 및 검증, 소프트웨어 취약점 검출, 프로그램 최적화, 변환, 합성 등 소프트웨어 개발 전반에 영향을 주는 기반 소프트웨어 기술이지만 현존하는 정적 분석 도구들은 모두 본질적인 제한점을 가지고 있다. 최근들어 그 제한점을 극복하려는 연구 가 수행되고 있고 차차 성과가 보이고 있다. 이 글에는 가장 최근에 이루어진 두가지 연구인 스파스 분석과 선별적 정적 분석 기법을 소개하였다. References [1] Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, Daejun Park, Jeehoon Kang, and Kwangkeun Yi. Global sparse analysis framework. ACM Trans. Program. Lang. Syst., 36(3):8:1 8:44, September 2014. [2] Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, and Kwangkeun Yi. Sparrow. http: //ropas.snu.ac.kr/sparrow. [3] Hakjoo Oh, Kihong Heo, Wonchan Lee, Woosuk Lee, and Kwangkeun Yi. Design and implementation of sparse global analyses for c-like languages. In Proceedings of the 33rd ACM 5

SIGPLAN Conference on Programming Language Design and Implementation, PLDI 12, pages 229 238, New York, NY, USA, 2012. ACM. [4] Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, and Kwangkeun Yi. Selective contextsensitivity guided by impact pre-analysis. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 14, pages 475 484, New York, NY, USA, 2014. ACM. [5] Hakjoo Oh, Wonchan Lee, Kihong Heo, Hongseok Yang, and Kwangkeun Yi. Selective x- sensitive analysis guided by impact pre-analysis. ACM Trans. Program. Lang. Syst., 38(2):6:1 6:45, December 2015. [6] Hakjoo Oh, Hongseok Yang, and Kwangkeun Yi. Learning a strategy for adapting a program analysis via bayesian optimisation. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2015, pages 572 588, New York, NY, USA, 2015. ACM. 6