program verification

35
Program Verification 프프프프 프프 Software Engineering Laboratory Department of Computer Science & Engineering ERICA Campus, Hanyang University HyungLak Kim 1

Upload: hyunglak-kim

Post on 13-Apr-2017

38 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Program verification

Program Verification

프로그램 검증

Software Engineering LaboratoryDepartment of Computer Science & EngineeringERICA Campus, Hanyang University

HyungLak Kim

1

Page 2: Program verification

Contents

• 검증 (Verification) 과 테스트 (Test) 의 차이

• 정형기법 (Formal Method)• 정형명세 (Formal Specification)• 정형검증 (Formal Verification)

• 모델검증 (Model Checking)• 정형명세 기반 모델 검증 도구 (Formal Specification based

MCT)• 코드 기반 모델 검증 도구 (Code based MCT)

2

Page 3: Program verification

Differences in Verification and Test• 테스트 (Test)

• 결함을 찾아내는 것

• 검증 (Verification)• 결함이 100% 없는지 증

명하는 것

3

Page 4: Program verification

Why• 왜 검증을 하는가 ?

Ariane 5Nexus[1]

4

Page 5: Program verification

정형기법

정형검증 모델검사

정형명세정형명세

기반코드 기반

정적 검증

5

Page 6: Program verification

Formal Method

• 정형기법 (Formal Method)• 정의

• 수학이나 논리 기반의 명세와 설계 기술 사용• 정형 (Formal) & 명세 (Specification)

– 명세 : 분명하고 자세함– 정형 : 일정한 형식 , 공식적인 - 네이버 국어사전

• 종류• 정형검증 (Formal Verification)

– 정형명세 (Formal Specification)• 모델검증 (Model Checking)

6

Page 7: Program verification

정형기법

정형검증 모델검사

정형명세 정형명세기반

코드 기반

정적 검증

7

Page 8: Program verification

Formal Method

• 정형검증 (Formal Verification)• 정의

• 정형명세에서 사용된 증명 방법 ( 정형 논리 , 수리논리 ) 를 사용

• 무 모순성 및 완전성을 검증• 요구사항을 만족하는지 검증

• 종류• 정형명세 (Formal Specification)

8

Page 9: Program verification

Formal Method

• 정형검증 (Formal Verification)• 의미론적 증명 (Semantic)

• 시스템 모델이 특정 속성을 만족하는 상태를 추적• 오토마타 기반의 명세 대상• 자동화가 가능

• 구문적 증명 (Syntactic)• 시스템 모델이 특정 속성을 만족하는 구문적 규칙을

적용해 증명• 논리 기반의 명세를 대상• Step by Step 증명

9

Page 10: Program verification

Formal Method

• 정형검증 도구 (Foraml verification Tool)• Z/EVES

• EVES 와 ZF set 이론 기반• 정형명세 종류중 수리 논리 기반인 Z 명세를

검증

10

Page 11: Program verification

정형기법

정형검증 모델검사

정형명세 정형명세기반

코드 기반

정적 검증

11

Page 12: Program verification

Formal Method

• 정형명세 (Formal Specification)• 정의 :

• 정형 논리 또는 수리 논리에서 사용되는 기호 등을이용

• 시스템이 동작할 환경에 대한 가정• 시스템이 만족해야 할 요구사항

• 분류• 수리 , 논리 기반• 대수 (Algebra) 기반• 오토마타 기반

12

Page 13: Program verification

Formal Method

• 정형명세 (Formal Specification)• 수리 , 논리에 기반하여 시스템을 명세

• 시스템 상태를 나타내는 변수의 타입을 명세하 기 용이

• Funtion 의 전후 상태를 명세• Ex) Z notation, B method, Event-B, Galina• 논리언어 종류

– First-Order Logic– Propositional Logic– Temporal Logic

13

Page 14: Program verification

Formal Method

• 정형명세 (Formal Specification)• 대수 (Algebra) 에 기반하여 시스템을 명세

• Algebra– 일련의 공리들을 만족하는 수학적 구조들의 인반적

인 성질을 연구하는 수학의 한분야

• 병렬성과 동시성을 설명하기 용이• Ex) Pi-caculus, CSP, ACSR

14

Page 15: Program verification

Formal Method

• 정형명세 (Formal Specification)• 시각적 명세 언어에 기반하여 시스템을 명세

하는 오토마타 기반의 정형명세• State 와 Transition 으로 시스템의 행위를 묘

사• Target 시스템의 행위를 표현하기 용이• ex) FSM, Statechart, SCADE

15

Page 16: Program verification

정형기법

정형검증 모델검사

정형명세 정형명세기반

코드 기반

정적 검증

16

Page 17: Program verification

Model Checking

• 모델검증 (Model Checking)• 정의

• 정형 언어로 명세된 모델을 검증하고자 하는 특성 을 만족하는지 여부를 입증하는 기법

• 종류• 정형명세 기반 모델 검증 도구• 코드 기반 모델 검증 도구

17

Page 18: Program verification

Model Checking

• 모델검증 (Model Checking)

18

Page 19: Program verification

Model Checking• 모델검증 (Model Checking)

• 장점• 테스팅으로 파악하기 힘든 오류를 조기 발견

• Process B -> Lock • Process A -> Mutex

Process A Process B Excution

19

Page 20: Program verification

Model Checking

• 모델검증 (Model Checking)• 장점

• 조기 오류 발견에 따른 수정 비용의 절감 [2]

20

Page 21: Program verification

정형기법

정형검증 모델검사

정형명세 정형명세기반

코드 기반

정적 검증

21

Page 22: Program verification

Model Checking• 정형명세 기반 모델 검증 도구

• 종류• SPIN, SMV, UPPAAL, PRISM

• SPIN[3]• 분산 시스템 디자인에서 논리적인 디자인 오류를 추적

하기 위해 널리 사용되는 모델검증 도구• 모델 검증 알고리즘

– DFS, BFS 기반– 완전한 증명 , 부분적 증명 가능

• 사례– OSEK/VDX 검증 , Intel 트랜잭션 메모리 설계 검증

• 모델링 언어로 Promela 사용

22

Page 23: Program verification

Model Checking• 정형명세 기반 모델 검증 도구

• Promela• 비 결정적 오토마타를 통해 비동기적 분산 알고리

즘 설계 지원• 동시성 프로세스의 동적 생성을 허용• 메시지 채널을 이용한 메세지의 동기적 / 비동기적

통신 모델링이 가능• C 언어와 유사

23

Page 24: Program verification

Model Checking• 정형명세 기반 모델 검증 도구

• Model Checking Process

24

Page 25: Program verification

Model Checking• Modeling

• 고객 2 명• 점원 1 명• 고객의 주문으로

인 하 여 편 의 점 물 건 의 재 고 가 부 족 한 상 황 이 발생할 수 있는

지 검증

25

Page 26: Program verification

Model Checking• Result

26

Page 27: Program verification

정형기법

정형검증 모델검사

정형명세 정형명세기반

코드 기반

정적 검증

27

Page 28: Program verification

Model Checking• 코드 기반 모델 검증 도구

• 종류• CBMC, JPF, SLAM project

• JPF(Java PathFinder)[4]• 실행 가능한 자바 바이트 코드 프로그램 검증• 다수의 스레드로 구성된 프로그램의 교착상태 검증• JPF core 에 의한 Code 자동 모델링• Explicit state, Symbolic Excution 지원

28

Page 29: Program verification

Model Checking• 코드 기반 모델 검증 도구

• JPF Process

29

Page 30: Program verification

Model Checking• 코드 기반 모델 검증 도구

• Data Race example Racer.java

30

Page 31: Program verification

Model Checking• 코드 기반 모델 검증 도구

• Data Race example Racer.jpf

31

Page 32: Program verification

Model Checking• 코드 기반 모델 검증 도구

• Data Race example

32

Page 33: Program verification

Related Research• 관련 연구

• 최근 모델 검증은 자동차 분야와 소프트웨 시 스템을 검증

• 특히 JPF, SPIN 을 사용한 검증 연구가 많이진행 [5]

• 현재는 머신러닝을 활용한 검증으로 점차 그 연구범위가 확대 [6]

• 인공신경망을 이용해 머신러닝의 성능이 향상• 94% 까지 검증가능

33

Page 34: Program verification

Reference[1]https://en.wikipedia.org/wiki/2009%E2%80%9311_Toyota_vehicle_recalls[2]Stecklein, Jonette M., et al. “Error cost escalation through the project life cycle,” http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/[3]SPIN: http://spinroot.com/spin/whatispin.html[4]JPF: http://babelfish.arc.nasa.gov/trac/jpf/wiki/intro/testing_vs_model_checking[5] Kamali, Maryam, et al. "Formal Verification of Autonomous Vehicle Platooning." arXiv preprint arXiv:1602.01718 (2016).[6] Shim, S., Cai, S., Yang, J., Yang, S., Choi, B., & Shin, Y. (2015, March). Verification of directed self-assembly (DSA) guide patterns through machine learning. In SPIE Advanced Lithography (pp. 94231E-94231E). International Society for Optics and Photonics.

34

Page 35: Program verification

Q & A

35