프로그램 분석 기술의 산업체 이전을 위해서 이광근 서울대 컴퓨터공학부

Slides:



Advertisements
Similar presentations
지금의 소프트웨어 기술 얼마나 미개한가 이광근 교수. 이력 ’87 학사 (computer science & statistics) 서울대 ‘93 박사 (computer science) University of Illinois at Urbana-Champaign ‘93-’95:
Advertisements

프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
문산고등학교 학교에서의 인터넷 이용 수칙 사이버 예절, 건강한 디지털 세상의 시작입니다
세종사이버대학교 재학생 분들을 위한 Office 365 학생용 ProPlus 신청 및 설치안내서.
컴퓨터와 인터넷.
Secure Coding 이학성.
10. 예외 처리.
DB 프로그래밍 학기.
1. 신뢰할 수 있는 싸이트 등록 인터넷 익스플로러 실행 후 실행
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
밥 파이크의 창의적 교수법.
Introduction To Computers
이광근 교수 Programming Research Laboratory ropas.snu.ac.kr
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
Report #2 - Solution 문제 #1: 다음과 같이 프로그램을 작성하라.
3조 오세혁 김문환 김용현.
컴퓨터 프로그래밍 기초 [Final] 기말고사
정적분석기술을 이용한 sw오류 자동 검증 Airac의 예를통해서
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
RedicoatTM System by Nordson
ATMEG2561 & TFT-LCD를 이용한 MOBILE DEVICE 구현
디지털시스템설계 과목 담당교수 : 원 충 상 한국교통대학교 컴퓨터공학과
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
07. 디바이스 드라이버의 초기화와 종료 김진홍
분석적 사고 (Analytical Thinking)
C++ Programming: Sample Programs
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
컴퓨터정보공학부 서버 안내 [ IBM x3500 ] it.sangji.ac.kr ict.sangji.ac.kr 혹은
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
10장. 예외처리.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
건축설계사 임동진.
Computational Thinking
소프트웨어 오류 자동 검증 기술.
Method & library.
Chap 6.Assembler 유건우.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
자료구조: CHAP 7 트리 –review 순천향대학교 컴퓨터공학과 하 상 호.
LIT-GenAppSetup ※ Texting+ 클라이언트 프로그램은 제품 인증을 받은 제품입니다.
HEVC기반 실시간 Full-HD 비디오 플레이어 기술)
제1장 생산공정 개요.
AUTODESK AUTOCAD ELECTRICAL 전기제어 2D 설계 소프트웨어 표준기반 설계 생산성 도구 구조도 설계
04. DBMS 개요 명지대학교 ICT 융합대학 김정호.
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
이광근 프로그램분석 시스템 연구단 ropas.kaist.ac.kr KAIST 전산학과
메모리 타입 분석을 통한 안전하고 효율적인 메모리 재사용
판매 교육 발표자: [이름].
문자열 컴퓨터시뮬레이션학과 2015년 봄학기 담당교수 : 이형원 E304호,
※ 편리한 사이버 연수원 사용을 위한 인터넷 최적화 안내 ※
Java , 안드로이드를 이용한 ‘사천성’ Game
( Windows Service Application Debugging )
소프트웨어 중심에 존재하는 복잡성 에 도전장을 내밀다
프로그램분석 어떻게하나 (quick/tiny)
인공 지능 시대에 필요한 인재 행복한 미래를 만드는 기술자 김송호.
Lecture 4 C 프로그램 구성의 기본 C 프로그램에서 이름짓기 C 프로그램에서 이름 충돌/이름 재사용.
농구 로봇 따라해 보기.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
발표자 : 이지연 Programming Systems Lab.
.Net FrameWork for Web2.0 한석수
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
학부 컴퓨터공학부 교육과정 (학부) 2학년 4학년 3학년 1학년 1학기 2학기 IPP 자격과정 전공트랙
1. 강의 소개 컴퓨팅적 사고와 문제해결.
SNU 컴퓨터의 기초 월 14:00-16:00 43동101호 ropas. snu. ac
임시테이블과 테이블변수 SQLWorld Study Group - 최명환 -.
AUTOSAR 기반 차량 전장용 운영체제 및 MCAL 기술 V2.0
소프트웨어 설계 및 실습 강기준.
Presentation transcript:

프로그램 분석 기술의 산업체 이전을 위해서 이광근 서울대 컴퓨터공학부 kwang@cse.snu.ac.kr 프로그램 분석 기술의 산업체 이전을 위해서 이광근 서울대 컴퓨터공학부 kwang@cse.snu.ac.kr 3/4/2004 @ Samsung SW Center

프로그램 분석 시스템 연구단 1998-2003 과기부 창의적연구진흥사업 지정 프로그램분석 시스템 연구단 단장 목표: 무결점 소프트웨어를 만들고 확인할 수 있는 원천 기술 연구

static program analysis 원천 기술 프로그램 분석 기술 static program analysis

프로그램 분석 프로그램 분석(static program analysis) = 실행전에 실행성질을 자동으로 안전하게 어림잡는 일반적인 방법 “실행전”: 프로그램을 돌리기 전에 “실행성질”: 실행중의 프로그램 성질 “자동으로”: 프로그램이 프로그램을 분석 “안전하게”: 모든 실제상황을 포섭 “어림잡는”: 군더더기가없을 순 없다 “일반적인”: 가능한 언어와 실행성질이 무제한

프로그램 분석기술의 쓰임새 프로그램의 오류 자동 검증 프로그램 변환을 위한 정보제공 프로그램 이해/관리를 위한 정보제공 실행중에 이러이러하면 안되는 데, 혹시? “오류”의 정의에 따라서 다양하게 프로그램 변환을 위한 정보제공 이 부분은 중복되는 일을 하는군 이 부분은 자원을 필요이상으로 소모하는군 이 부분은 포인터 접근을 하는군 이 부분과 저 부분은 다른 메모리를 사용하는군 프로그램 이해/관리를 위한 정보제공 이 변수에 관계되는 프로그램 부분들만 보고 싶은데 이 자바 프로그램은 무슨 디자인 패턴을 가지고 있지? 프로그램이 어느 테이블을 건드리는지 알고 싶은데

무결점 소프트웨어를 위해서는 두개의 기둥이 필요 프로그램 개발 프로세스 개발팀을 구성하고 운영해야 하는 체계 체계적인 운영을 강제하는 개발 도구 목표의 50%만 달성시켜줌: sw 오류는 계속 나타남 프로그램 오류 자동 검증 기술 자동: 소프트웨어가 소프트웨어를 분석 검증: 오류가 없다는 것을 확인해 줌 기술의 성숙도: 무르익어 산업체로 흘러들고 있슴 목표의 나머지 49%를 달성시켜 줄 것임: 무결점 sw

자동검증의 필요성: 저비용과 고신뢰 자동 검증 엄청나게 크고 복잡해 지는 소프트웨어 hw 복잡도 증가속도 << sw 복잡도 증가속도 불가능: 사람이 쉽게 오류를 찾을 수 없슴 저렴한 무결점 sw개발기술 = 자동화된 기술 검증 테스트: 오류 있슴 만 확인 검증: 오류 없음 을 확인 “sw의 벤츠” = 프로그램 검증기술로이 적용된 sw = 제품의 품질/명성

성공적인 자동검증 기술들 프로그램 분석(static program analysis) 20-30년 동안 학교에서 무르익은 기술 요약해석(abstract interpretation) 모델검증(model checking) 자료흐름분석(data flow analysis) 자동증명(theorem proving) 20-30년 동안 학교에서 무르익은 기술 위의 기술의 조합이 이제 비로소 실용적인 모습으로 현장으로 퍼지고 있슴

자동검증 기술이 적용된 예(외국) Microsoftware (2001년 이후) device driver sw 검증: SLAM technology 안전한, 오류없는 sw개발에 집중: 요즘 Bill Gates 연설의 기초 Unix/Linux kernel 검증 (2000년 이후) model checking, static analysis 의 조합 os community에서 가장 주목받고 있는 기술 AirBus (2002년 이후) aviation controller모듈 sw 검증에 static analysis기술적용 AirBus sw개발 프로세스의 표준으로 static analysis과정을 결정 이기술에 특화된 회사들 등장: AbsInt, PolySpace technologies, Trusted Logic, GrammaTech, Esterel Technologies, Galois Connections, etc.

자동검증 기술이 적용된 예(국내) 예 Java, ML 프로그램: 처리되지않는 예외상황으로 프로그램이 갑자기 멈출수 있는가? 검증. C(과학위성1호 OS모듈): 메시지 버퍼 인덱스가 범위를 벋어나지 않는가? 검증. DB프로그램: 열린 테이블이 닫히지 않고 방치되는가? 검증. WEB프로그램(국가보안기술연구소): 웹소스가, 알려진 해커의 침입방법에 뚤릴 수 있는가? 검증.

예: exception analysis for Java and ML programs safety bug = uncaught exceptions analysis = statically analyzing every possible uncaught exception classes 분석결과가 {}인지 확인

예: integer interval analysis for KAIST Science Satellite’s OS module C program safety bug = index variable has beyond [0,126] analysis = statically estimating the index variable’s values 분석결과가 [0,126]안에 있는지 확인

예: memory re-use analysis for ML and Java programs performance bug = blindly asking new memory analysis = statically estimating re-usable memory 분석결과를 참고로, 프로그램을 변환해서 메모리 소모가 적도록 최적화

예: resource analysis for C+SQL programs safety bug = no close after open, or too late close analysis = statically estimating open/close situations 분석결과 모든 open은 close를 만나는지, 그리고 그 close가 최대한 앞당겨지는지 확인

예: pattern analysis for Java programs goal = derive the design patterns in Java programs analysis = statically estimating object flows 분석결과가 디자인 패턴중 무엇에 해당하는지 확인

기술정도 프로그램 분석기를 자동으로 만들어주는 도구 시스템 (semantic Yacc) System Z1, System Z2 System Zoo ropas.snu.ac.kr/zoo

귀동냥 감사합니다 삼성 소프트웨어 센타에서 문제되는 것들 혹시 가능한 기술을 몰라서 지나친 문제들 혹시 프로그램 분석 기술로 해결될 수 있는 문제들 혹시 저희 연구가 도움이 될 문제들 감사합니다