1 / 32

프로그래밍 언어와 프로그램 오류 자동 검출 기술 Automatic Technology for Detecting Fatal SW Errors Before Testing

프로그래밍 언어와 프로그램 오류 자동 검출 기술 Automatic Technology for Detecting Fatal SW Errors Before Testing. 이광근 교수 Programming Research Laboratory ropas.snu.ac.kr 11/07/2007 @ POSTECH CSE Seminar. Content. What Challenges Us & How We Responded Within SW Technology Within Programming Language Technology

finola
Download Presentation

프로그래밍 언어와 프로그램 오류 자동 검출 기술 Automatic Technology for Detecting Fatal SW Errors Before Testing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 프로그래밍 언어와 프로그램 오류 자동 검출 기술Automatic Technology for Detecting Fatal SW Errors Before Testing 이광근 교수 Programming Research Laboratory ropas.snu.ac.kr 11/07/2007 @ POSTECH CSE Seminar

  2. Content • What Challenges Us & How We Responded • Within SW Technology • Within Programming Language Technology • What An Exciting Opportunities Ahead!

  3. Is CSE Advanced?How Much?

  4. CSE Is NOT Advanced At All

  5. 컴퓨터 하드웨어의 발전속도? 1997 Intel Teraflops 2002 IBM ASCI White 1946 ENIAC flops flops

  6. 다른 분야의 발전속도도 비슷했습니다

  7. 에너지 1980년 원자력발전소1기 1899년 하인1명 hp hp

  8. 교통 Boeing Delta-II Rocket 가마 j j

  9. SWs Are EverywhereSo, We Are As Advanced As Other Disciplines?No, Fortunately.

  10. 소프트웨어 기술의 발전은 얼마나 느린가? Open Problem: 작성한 소프트웨어가 제대로 실행될 지를 미리 엄밀하게 확인하는 방법은? 다른 분야에서는 이미 푼 문제: • 기계공학: 제대로 작동할 지를 미리 검증할 수 있는 기계설계 • 건축공학: 제대로 서 있을 지를 미리 검증할 수 있는 건축설계 • 화학공학: 제대로 진행될 지를 미리 검증할 수 있는 공정설계 • 전자공학: 제대로 작동할 지를 미리 검증할 수 있는 회로 설계 • 뉴튼역학, 미적분 방정식, 통계역학, XX이론, XX방정식 등등

  11. SW Bugs Are EverywhereWE Should Provide A Solution

  12. 소프트웨어 오류 자동 검출의 발달과정 3박자 1.오류의 정의(logic) 2.검증방법 고안(logic) 3.그 방법을 구현(logic and computation) 오류 자동 검출 방법의 연구 = 3박자의 반복된 발전과정

  13. 오류 자동 검출 프로그램: 1세대 문법 검증기: lexical analyzer & parser (80년대 초에 완성) 1.오류 = 프로그램 생김새 틀린것 “{intt x = 8*) }” 2.3. 100% 검증: 오류없슴 <=> 문법이 맞음

  14. 오류 자동 검출 프로그램: 2세대 타입 검증기: type checker (30년 PL분야의 결실) 1.오류 = 타입에 어긋나게 실행된다 “ free(1);” 2. Thm. “검증됨”(logic) => “오류없슴” 3. Thm. “검증됨”(logic) <=> “YES”(computation) • 효과적인 검증기 (10000 lines/sec) • 전자동 • higher-order & typed(HOT) languages: ML, Haskell • v.s. C, C++, Java, Python

  15. 오류 자동 검출 프로그램: 3세대 프로그램분석기: static program analysis (2000년이후) 1. 오류 = 타입보다 더 정교한 오류 “라면끓이기(신, 물, 불);” 2. Thm. “검증됨”(logic) => “오류없슴” 3. Thm. “검증됨”(logic) <= “YES”(computation) • 현재성능 (10-10000lines/sec) • 전자동

  16. Open Problem • 소프트웨어가 실행되기 전에 • 우리가 바라는대로 실행될 지를 • no core dump/segmentation fault • no buffer overrun • no memory leak • “x.s > 0 at line 321” • “notNull(y) whenever x = 0” • etc. • 엄밀하게 미리 확인해주는 기술은?

  17. 3rd Gen. Solution:Static Program Analysis 프로그램의 실행 내용을 실행전에 자동으로 안전하게 어림잡는 일반적인 기술 “static analysis” “정적분석” “프로그램분석”

  18. “실행전”: 프로그램을 실행시키지 않고 • “자동으로”: 프로그램이 프로그램을 분석 • “안전하게”: 모든 가능성을 포섭 • “어림잡는”: 실제 이외의 것들이 포함됨 • 어림잡지 않으면 불가능 • “일반적”: 소스 언어와 분석가능한 성질이 무제한 • C, C++, C#, Java, ML, UML, JVM, x86, bits, etc. • buffer overrun? memory leak? x=y at line 2? notNull(x) whenever y.s=0?

  19. 테스트와 다른점 • 테스트는 SW 를 실행시킬 수 있을 때 까지 기다려야 • 테스트는 찾고자 하는 오류를 모두 찾을 수 없음 • 프로그램 분석기(static program analyzer)는 • SW를 실행시키지 않고 타겟 오류의 위치를 자동으로 찾아줌 • SW의 소스만 준비되면 됨

  20. 정적분석이론 • 대상 언어 L • 디자인 • 분석기: L_PGM --> 분석결과 • 모든 L 프로그램 pgm에 대해서 모든실행성질(pgm) < 분석기(pgm) • 구현 • 많은 엔지니어링: cost-accuracy tradeoff, scalability • ropas.snu.ac.kr/~kwang/4541.664A/07

  21. 자동증명기술 SW오류 검증 기술의 진화 정적분석기술 효용 및 성숙도 coverity.com polyspace.com Sparrow 1.0 테스트기술 1980s 2000s 2010s 1990s

  22. Sparrow 1.0 • 이론: Semantic-based Static Analysis • 타겟 소스언어 • C, C++ • ANSI, GNU, MS, ARM, etc. • 타겟 오류 • buffer overrun • memory leak • uninitialized access

  23. spa-arrow.com

  24. Other Players • coverity.com • Stanford U., 미국시장에서 활발, ’05 국내 진출 • polyspace.com • Ecole Polytech., 유럽시장에서 활발, ’06 국내 진출 • grammatech.com • U. of Wisconsin-Madison, 미국정부시장, ’07 국내 진출 • 기타 (분석기술 미흡: “shallow” analysis) • fortify, klocwork, secure, seque, wily • 기존의 runtime tools • 상용 • PurifyPlus, Parasoft Insure++, Trace32, WinDBG, … • 공개SW • Valgrind …

  25. BMT Results (by S company) • S사 내부 소스코드 오류분석의 BMT결과 • 총 약 200만 라인 C코드 분석 • Sparrow만 찾을 수 있는 오류 다수 존재 Prevent Sparrow 6 11 19 7 2 3 11 K7 찾은 실제 오류의 수

  26. BMT Results (by D company) • 약 70만 라인 상용 OS source (Linux-base) buffer overrun memory leak 75 81 69 22 24 25 CodeSonar Sparrow CodeSonar Sparrow

  27. BMT Result (Open Source)

  28. 자동증명기술 SW오류 검증 기술의 진화 정적분석기술 효용 및 성숙도 coverity.com polyspace.com Sparrow 1.0 테스트기술 1980s 2000s 2010s 1990s

  29. Thank YouQnAropas.snu.ac.kr

More Related