Upload
hyunglak-kim
View
38
Download
1
Embed Size (px)
Citation preview
Program Verification
프로그램 검증
Software Engineering LaboratoryDepartment of Computer Science & EngineeringERICA Campus, Hanyang University
HyungLak Kim
1
Contents
• 검증 (Verification) 과 테스트 (Test) 의 차이
• 정형기법 (Formal Method)• 정형명세 (Formal Specification)• 정형검증 (Formal Verification)
• 모델검증 (Model Checking)• 정형명세 기반 모델 검증 도구 (Formal Specification based
MCT)• 코드 기반 모델 검증 도구 (Code based MCT)
2
Differences in Verification and Test• 테스트 (Test)
• 결함을 찾아내는 것
• 검증 (Verification)• 결함이 100% 없는지 증
명하는 것
3
Why• 왜 검증을 하는가 ?
Ariane 5Nexus[1]
4
정형기법
정형검증 모델검사
정형명세정형명세
기반코드 기반
정적 검증
5
Formal Method
• 정형기법 (Formal Method)• 정의
• 수학이나 논리 기반의 명세와 설계 기술 사용• 정형 (Formal) & 명세 (Specification)
– 명세 : 분명하고 자세함– 정형 : 일정한 형식 , 공식적인 - 네이버 국어사전
• 종류• 정형검증 (Formal Verification)
– 정형명세 (Formal Specification)• 모델검증 (Model Checking)
6
정형기법
정형검증 모델검사
정형명세 정형명세기반
코드 기반
정적 검증
7
Formal Method
• 정형검증 (Formal Verification)• 정의
• 정형명세에서 사용된 증명 방법 ( 정형 논리 , 수리논리 ) 를 사용
• 무 모순성 및 완전성을 검증• 요구사항을 만족하는지 검증
• 종류• 정형명세 (Formal Specification)
8
Formal Method
• 정형검증 (Formal Verification)• 의미론적 증명 (Semantic)
• 시스템 모델이 특정 속성을 만족하는 상태를 추적• 오토마타 기반의 명세 대상• 자동화가 가능
• 구문적 증명 (Syntactic)• 시스템 모델이 특정 속성을 만족하는 구문적 규칙을
적용해 증명• 논리 기반의 명세를 대상• Step by Step 증명
9
Formal Method
• 정형검증 도구 (Foraml verification Tool)• Z/EVES
• EVES 와 ZF set 이론 기반• 정형명세 종류중 수리 논리 기반인 Z 명세를
검증
10
정형기법
정형검증 모델검사
정형명세 정형명세기반
코드 기반
정적 검증
11
Formal Method
• 정형명세 (Formal Specification)• 정의 :
• 정형 논리 또는 수리 논리에서 사용되는 기호 등을이용
• 시스템이 동작할 환경에 대한 가정• 시스템이 만족해야 할 요구사항
• 분류• 수리 , 논리 기반• 대수 (Algebra) 기반• 오토마타 기반
12
Formal Method
• 정형명세 (Formal Specification)• 수리 , 논리에 기반하여 시스템을 명세
• 시스템 상태를 나타내는 변수의 타입을 명세하 기 용이
• Funtion 의 전후 상태를 명세• Ex) Z notation, B method, Event-B, Galina• 논리언어 종류
– First-Order Logic– Propositional Logic– Temporal Logic
13
Formal Method
• 정형명세 (Formal Specification)• 대수 (Algebra) 에 기반하여 시스템을 명세
• Algebra– 일련의 공리들을 만족하는 수학적 구조들의 인반적
인 성질을 연구하는 수학의 한분야
• 병렬성과 동시성을 설명하기 용이• Ex) Pi-caculus, CSP, ACSR
14
Formal Method
• 정형명세 (Formal Specification)• 시각적 명세 언어에 기반하여 시스템을 명세
하는 오토마타 기반의 정형명세• State 와 Transition 으로 시스템의 행위를 묘
사• Target 시스템의 행위를 표현하기 용이• ex) FSM, Statechart, SCADE
15
정형기법
정형검증 모델검사
정형명세 정형명세기반
코드 기반
정적 검증
16
Model Checking
• 모델검증 (Model Checking)• 정의
• 정형 언어로 명세된 모델을 검증하고자 하는 특성 을 만족하는지 여부를 입증하는 기법
• 종류• 정형명세 기반 모델 검증 도구• 코드 기반 모델 검증 도구
17
Model Checking
• 모델검증 (Model Checking)
18
Model Checking• 모델검증 (Model Checking)
• 장점• 테스팅으로 파악하기 힘든 오류를 조기 발견
• Process B -> Lock • Process A -> Mutex
Process A Process B Excution
19
Model Checking
• 모델검증 (Model Checking)• 장점
• 조기 오류 발견에 따른 수정 비용의 절감 [2]
20
정형기법
정형검증 모델검사
정형명세 정형명세기반
코드 기반
정적 검증
21
Model Checking• 정형명세 기반 모델 검증 도구
• 종류• SPIN, SMV, UPPAAL, PRISM
• SPIN[3]• 분산 시스템 디자인에서 논리적인 디자인 오류를 추적
하기 위해 널리 사용되는 모델검증 도구• 모델 검증 알고리즘
– DFS, BFS 기반– 완전한 증명 , 부분적 증명 가능
• 사례– OSEK/VDX 검증 , Intel 트랜잭션 메모리 설계 검증
• 모델링 언어로 Promela 사용
22
Model Checking• 정형명세 기반 모델 검증 도구
• Promela• 비 결정적 오토마타를 통해 비동기적 분산 알고리
즘 설계 지원• 동시성 프로세스의 동적 생성을 허용• 메시지 채널을 이용한 메세지의 동기적 / 비동기적
통신 모델링이 가능• C 언어와 유사
23
Model Checking• 정형명세 기반 모델 검증 도구
• Model Checking Process
24
Model Checking• Modeling
• 고객 2 명• 점원 1 명• 고객의 주문으로
인 하 여 편 의 점 물 건 의 재 고 가 부 족 한 상 황 이 발생할 수 있는
지 검증
25
Model Checking• Result
26
정형기법
정형검증 모델검사
정형명세 정형명세기반
코드 기반
정적 검증
27
Model Checking• 코드 기반 모델 검증 도구
• 종류• CBMC, JPF, SLAM project
• JPF(Java PathFinder)[4]• 실행 가능한 자바 바이트 코드 프로그램 검증• 다수의 스레드로 구성된 프로그램의 교착상태 검증• JPF core 에 의한 Code 자동 모델링• Explicit state, Symbolic Excution 지원
28
Model Checking• 코드 기반 모델 검증 도구
• JPF Process
29
Model Checking• 코드 기반 모델 검증 도구
• Data Race example Racer.java
30
Model Checking• 코드 기반 모델 검증 도구
• Data Race example Racer.jpf
31
Model Checking• 코드 기반 모델 검증 도구
• Data Race example
32
Related Research• 관련 연구
• 최근 모델 검증은 자동차 분야와 소프트웨 시 스템을 검증
• 특히 JPF, SPIN 을 사용한 검증 연구가 많이진행 [5]
• 현재는 머신러닝을 활용한 검증으로 점차 그 연구범위가 확대 [6]
• 인공신경망을 이용해 머신러닝의 성능이 향상• 94% 까지 검증가능
33
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
Q & A
35