프로그램분석 어떻게하나 (quick/tiny)

Slides:



Advertisements
Similar presentations
언어의 자서전 소단원 (1) 단원. 언어의 특성 기호성 자의성 사회성 규칙성 창조성 역사성.
Advertisements

2016 년 3 월 18 일 2016 귀농현장실습교육 시스템 농촌인적자원개발센터 누리집 ( 홈페이지 )
전남행복수업 design 독서ㆍ토론 수업 지원 자료 활용 목포유달초등학교 김미향.
CRM(Customer Relationship Management)
전남행복수업 design, 독서·토론수업 연구의 개요를 말씀드리겠습니다..
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
선형 연립 방정식 풀기와 역행렬 구하기 신소재 김경옥.
How do They Make Computer Games?
10. 예외 처리.
* 그룹 상시 연락망 : 각사 조직도 기준 연락망으로 대체함
4. Matlab-Simulink를 이용한 메카니즘 해석
(Numerical Analysis of Nonlinear Equation)
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
시스템 생명 주기(System Life Cycle)(1/2)
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 1 강원대학교 컴퓨터과학전공 문양세.
정적분석기술을 이용한 sw오류 자동 검증 Airac의 예를통해서
프로그래밍 언어론 2004년 가을학기 창 병 모 숙명여대 컴퓨터과학과.
제7장 제어구조 I – 식과 문장.
시스템 생명 주기(System Life Cycle)(1/2)
자료구조 김현성.
Ch4.마디해석법, 메쉬해석법 마디해석법, 초마디 기법, 메쉬해석법, 초메쉬 기법
제Ⅲ부 상미분 방정식의 근사해법과 유한요소해석
효율적인 포인터 오류 검증 이욱세 한양대학교 컴퓨터공학과
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
CAS (Computer Algebra System) 소개
2주차: 변수, 수식, Control Flow.
Ch4.마디해석법, 메쉬해석법 마디해석법, 초마디 기법, 메쉬해석법, 초메쉬 기법
행렬 기본 개념 행렬의 연산 여러가지 행렬 행렬식 역행렬 연립 일차 방정식 부울행렬.
일차방정식의 풀이 일차방정식의 풀이 순서 ① 괄호가 있으면 괄호를 먼저 푼다.
제4장 제어 시스템의 성능.
1. 논리적이란? 논리적이지 못하다 말이나 글에 두서가 없다. 1. 논리적이란? 논리적이지 못하다 말이나 글에 두서가 없다.
Sequence Logic.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
2015. 인문소양교육.
1차함수 - m, c 값의 크기와 양음의 변화에 따른 직선의 변화 2’17’’
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
과거사 청산, 밝은 미래를 위하여 역사 청산 비교 분석-독일과 우리나라.
알고리즘(Algorithm)  알고리즘 개요 (효율, 분석, 차수) Part 년 봄학기
Chapter 01 자료 구조와 알고리즘.
Ch4.마디해석법, 메쉬해석법 마디해석법, 초마디 기법, 메쉬해석법, 초메쉬 기법 : 회로를 해석하는 일반적인 방법을 제시.
[CPA340] Algorithms and Practice Youn-Hee Han
Chapter 08 구조적 분석과 설계 8.1 구조적 분석(Structured Analysis)
2005년도 법학부 학술 세미나 기본 기획(안)
자바 5.0 프로그래밍.
김선균 컴퓨터 프로그래밍 기초 - 7th : 함수 - 김선균
이광근 프로그램분석 시스템 연구단 ropas.kaist.ac.kr KAIST 전산학과
프로그램 분석 기술의 산업체 이전을 위해서 이광근 서울대 컴퓨터공학부
메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용
⊙ 이차방정식의 활용 이차방정식의 활용 문제 풀이 순서 (1)문제 해결을 위해 구하고자 하는 것을 미지수 로 정한다.
CAS (Computer Algebra System) 소개
Signature, Strong Typing
Signature, Strong Typing
Signature, Strong Typing
Ch4.마디해석법, 메쉬해석법 마디해석법, 초마디 기법, 메쉬해석법, 초메쉬 기법 : 회로를 해석하는 일반적인 방법을 제시.
수학10-나 1학년 2학기 Ⅳ.삼각함수 3. 삼각함수의 그래프( 8 / 12 ) 삼각함수 수업계획 수업활동.
제 5장 제어 시스템의 성능 피드백 제어 시스템 과도 성능 (Transient Performance)
효율화와 활성화를 위한 조직구조의 설계 ►조직구조와 그 현상
원의 방정식 원의 방정식 x축, y축에 접하는 원의 방정식 두 원의 위치 관계 공통접선 원과 직선의 위치 관계
Flow Diagram IV While.
ISO규격에의 대응과 도입 Know-how ㈜드림힐
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
(제작자: 임현수)모둠:임현수,유시연,유한민
(Ⅰ) 독서와 언어의 본질 언어의 본질 1 2 [고등 국어] – 독서와 문법 독서의 본질 (1) 독서의 특성
수치해석 ch3 환경공학과 김지숙.
수학 2 학년 1 학기 문자와 식 > 미지수가 2개인 연립방정식 ( 4 / 4 ) 계수가 소수 분수인 연립방정식.
수학 2 학년 1 학기 문자와 식 > 미지수가 2개인 연립방정식 ( 1 / 1 ) 연립일차방정식의 해.
SNU 컴퓨터의 기초 월 14:00-16:00 43동101호 ropas. snu. ac
수학 2 학년 1 학기 문자와 식 > 미지수가 2개인 연립방정식 ( 3 / 4 ) 대입법으로 풀기.
Ch8.기본적인 RL, RC 회로 자연응답, 강제응답, 시정수, 계단입력과 스위치 회로
흐름도FLOWCHART 프로그래밍 과정 전단부 처리 단계 문제 분석 논리 설계
Presentation transcript:

프로그램분석 어떻게하나 (quick/tiny) 이광근 서울대 프로그래밍연구실 kwang@ropas.snu.ac.kr

프로그램 분석 Static Program Analysis 실행전에 실행성질을 자동으로 안전하게 어림잡는 일반적인 방법

Value = Int U Real U Addr U Tree U Exception 프로그램의 실행 Value = Int U Real U Addr U Tree U Exception val(x) val(y) val(z) val(*p) val(p) 1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4 time

Value = Int U Real U Addr U Tree U Exception 프로그램의 실행 Value = Int U Real U Addr U Tree U Exception val(x) val(*p) val(p) 1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4 time

프로그램의 분석: 요약실행 V = I U R U A U T U E v(x) v(*p) v(p) pgm point 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 pgm point

Value = Int U Real U Addr U Tree U List U Exception 프로그램의 실행 Value = Int U Real U Addr U Tree U List U Exception v(x) v(y) 1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4 time

프로그램의 분석: 오류 검증 V = I U R U A U T U E v(x) v(*p) v(y) pgm point 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 pgm point

Value = Int U Real U Addr U Tree U List U Exception 프로그램의 실행 Value = Int U Real U Addr U Tree U List U Exception val(x) val(y) 1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4 time

프로그램의 분석: 늑대소년 V = I U R U A U T U E v(x) v(y) 프로그램 분석의 정확도 문제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 pgm point

Value = Int U Real U Addr U Tree U List U Exception 프로그램의 실행 Value = Int U Real U Addr U Tree U List U Exception val(x-y) 1 2 11 3 4 5 11 3 4 5 11 3 4 5 22 8 9 8 9 8 9 2 3 4 99 2 3 4 99 2 3 4 time

프로그램의 분석: 관계형분석 V = I U R U A U T U E v(x-y) pgm point 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 pgm point

프로그램 분석의 3-스텝 모든 프로그램 분석은 항상 다음의 세단계를 거친다 입력: 프로그램 단계1: “연립방정식”을 세운다 각 프로그램 지점에서 발생할 수 있는 모든 실제 프로그램 상태들을 어떻게 유한하게 요약할 지를 정한다 (abstract domain design) 각 프로그램 지점마다 그렇게 요약된 프로그램의 상태가 어떻게 흘러다니는 지를 정한다 (abstract execution flow) 단계2: 그 방정식을 푼다 각 프로그램 지점이 가질 수 있는 요약된 프로그램의 상태가 결정된다 단계3: 그 해를 가지고 분석의 결론을 내린다 (eg) 있는가 없는가? 같은가 다른가?

요약된 상태: 변수마다 변수가 가질 수 있는 정수값의 (min,max) s1 = {} 1: s2 = s1*{x:[1,1]} 2: y = 2; 3: if x 4: 5: then z=x+y; else w=y*-1 6: 7: 8: s2 = s1*{x:[1,1]} s3 = s2*{y:[2,2]} s4 = s3 s5 = s3*{x:[0,0]} s6 = s4*{z:s4(x)©s4(y)} s7 = s5*{w:s5(y)­[-1,-1] s8 = s6 U s7 s2 = {x:[1,1]} s3 = s4 = {x:[1,1], y:[2,2]} s5 = {x:[0,0],y:[2,2]} s6 = {x:[1,1],y:[2,2],z:[3,3]} s7 = {x:[0,0],y:[2,2],w:[-2,-2]} s8 = {x:[0,1],y:[2,2],z:[3,3],w:[-2,-2]}

요약된 상태: 변수마다 변수가 가질 수 있는 정수값의 (min,max) s1 = [-1,+1] 1: s2 = [1,1] s3 = (s2 U s4)Å[-1,9999] s4 = s3©[1,1] s5 = (s2 U s4)Å[10000,+1] 1: x = 1; 2: while x<10000 do 3: x = x+1; 4: od; 5: s1 = [-1,+1] s2 = [1,1] s3 = [1,9999] s4 = [2,10000] s5 = [10000,10000] 방정식의 해 구하는 방법: fixpoint iteration with widening

방정식의 해 구하기 S = F(S) S = limit of {?, F?, F(F?),} the sequence sometimes needs to be accelerated by special operation theory guides us how to make sure that the equation is correct how to make sure that the limit is computed in finite time