SlideShare a Scribd company logo
Program Verification
프로그램 검증
Software Engineering Laboratory
Department of Computer Science &
Engineering
ERICA 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_recall
s
[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

More Related Content

PPTX
Cryptol 수업자료
PPT
Block Ciphers Modes of Operation
PPTX
Cryptography-Hash-Functions.pptx
PDF
Python Cryptography & Security
PPT
Diffiehellman
PPTX
Writing php extensions in golang
PPTX
Rail-Fence Cipher Presentation
PPT
6. cryptography
Cryptol 수업자료
Block Ciphers Modes of Operation
Cryptography-Hash-Functions.pptx
Python Cryptography & Security
Diffiehellman
Writing php extensions in golang
Rail-Fence Cipher Presentation
6. cryptography

What's hot (20)

PPTX
Blow fish final ppt
PDF
Python testing using mock and pytest
PPTX
Data Encryption Standard
PDF
Effective testing with pytest
PPTX
Cryptography
PPTX
Basic Cryptography unit 4 CSS
PPTX
Blowfish Şifreleme Algoritması
PPTX
Block Cipher
PPT
Elliptical curve cryptography
PDF
Random number generators
ODP
Implémentation des principaux algorithmes de chiffrements en Java
PPT
Network Security and Cryptography
PPTX
KorQuAD v2.0 소개
PPTX
Format String Attack
PPT
Ch11 Basic Cryptography
PPTX
Cryptography by Durlab Kumbhakar
PPTX
Symmetric encryption
PPTX
[WeFocus] 인공지능_딥러닝_특허 확보 전략_김성현_201902_v1
Blow fish final ppt
Python testing using mock and pytest
Data Encryption Standard
Effective testing with pytest
Cryptography
Basic Cryptography unit 4 CSS
Blowfish Şifreleme Algoritması
Block Cipher
Elliptical curve cryptography
Random number generators
Implémentation des principaux algorithmes de chiffrements en Java
Network Security and Cryptography
KorQuAD v2.0 소개
Format String Attack
Ch11 Basic Cryptography
Cryptography by Durlab Kumbhakar
Symmetric encryption
[WeFocus] 인공지능_딥러닝_특허 확보 전략_김성현_201902_v1
Ad

Viewers also liked (10)

PDF
09 - Program verification
PPTX
Program Verification / Automated Theorem Proving
PPTX
Theorem-proving Verification of Multi-clock Synchronous Circuits on Multimoda...
PPTX
Desafío cs sociales 1
PDF
A Survey of functional verification techniques
PDF
Automated theorem proving for special functions: the next phase
PDF
20130928 automated theorem_proving_harrison
PDF
Functional verification techniques EW16 session
PDF
Formal Verification Techniques
PDF
Formal verification
09 - Program verification
Program Verification / Automated Theorem Proving
Theorem-proving Verification of Multi-clock Synchronous Circuits on Multimoda...
Desafío cs sociales 1
A Survey of functional verification techniques
Automated theorem proving for special functions: the next phase
20130928 automated theorem_proving_harrison
Functional verification techniques EW16 session
Formal Verification Techniques
Formal verification
Ad

Similar to Program verification (20)

PPTX
분석과 설계
PDF
아꿈사.C++ api 디자인.20140315 a
PDF
[부스트캠프 Tech Talk] 구건모_모델링 자동화와 실험 검증 전략
PDF
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
PDF
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
PDF
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
PPTX
Tr#3 5) 임성현 책임
PPTX
단위테스트자동화지원도구 임성현 최종
PPT
제5장p179 컴퓨터화검사 4김수희
PPTX
Visual studio team system with agile tech days 2010
PDF
C++ Advanced 강의 5주차
PPTX
테스트자동화와 TDD
PDF
Robot framework 을 이용한 기능 테스트 자동화
PDF
"Google Vizier: A Service for Black-Box Optimization" Paper Review
PDF
2015 SINVAS USER CONFERENCE - SINVAS 플랫폼을 활용한 정보시스템 유지보수 방안
PPT
Cygnus unit test
PDF
Istqb 4-테스트설계기법-2015-1
PDF
2016 SINVAS DAY - 프레임워크 기반 운영 시스템 설계 모델 현행화 방안
PDF
한컴MDS_TRACE32를 활용한 DT10 커버리지 측정 방안
PDF
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
분석과 설계
아꿈사.C++ api 디자인.20140315 a
[부스트캠프 Tech Talk] 구건모_모델링 자동화와 실험 검증 전략
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
Tr#3 5) 임성현 책임
단위테스트자동화지원도구 임성현 최종
제5장p179 컴퓨터화검사 4김수희
Visual studio team system with agile tech days 2010
C++ Advanced 강의 5주차
테스트자동화와 TDD
Robot framework 을 이용한 기능 테스트 자동화
"Google Vizier: A Service for Black-Box Optimization" Paper Review
2015 SINVAS USER CONFERENCE - SINVAS 플랫폼을 활용한 정보시스템 유지보수 방안
Cygnus unit test
Istqb 4-테스트설계기법-2015-1
2016 SINVAS DAY - 프레임워크 기반 운영 시스템 설계 모델 현행화 방안
한컴MDS_TRACE32를 활용한 DT10 커버리지 측정 방안
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기

Program verification

Editor's Notes

  • #2: JPF 모델 검사 이유,
  • #5: 넥서스 급발진 리콜 사태- 브레이크 제어 소프트웨어 결함 - 40조 Ariane 5 – floating 계산 잘못 손실 - 200조
  • #6: 아까전에 말씀들인 정형명세에서 사용된 증명방법을 사용해서 검증 한다고 했는데 정형명세가 무엇인지, 그리고 정형검증의 한 부분인 정리 증명이 먼지 알아보죠
  • #7: 수학이나 논리 기반의 명세와 설계 기술을 사용해서 시스템을 개발하는 기법 2가지 종류가 있다. 수학적, 논리 적 기반을 사용하는 장점 애매성, 모호성이 제거 군더더기 정보와 구현 종속적인 정보를 초기에 제거 제시된 명제에 관한 증명이 가능하다. 2x-1 = y -> 직선 정형 검증와 모델검증
  • #8: 아까전에 말씀들인 정형명세에서 사용된 증명방법을 사용해서 검증 한다고 했는데 정형명세가 무엇인지, 그리고 정형검증의 한 부분인 정리 증명이 먼지 알아보죠
  • #10: 사람이 직접 step-by-step으로 증명해야 하며, 이 과정 중 도구의 도움을 받을 수 있다
  • #12: 아까전에 말씀들인 정형명세에서 사용된 증명방법을 사용해서 검증 한다고 했는데 정형명세가 무엇인지, 그리고 정형검증의 한 부분인 정리 증명이 먼지 알아보죠
  • #15: Algebra = 대수학: 선형대수학, 추상대수학, 대수기하학 공리 : 어떤 이론체계에서 가장 기초적인 근거가 되는 명제 파이-카큘러스는 네트워크의 채널 통신의 concurrent computation 할 떄 사용
  • #16: 유한 상태 머신이라고 하죠. Statechart –(FSM+ 계층), UPPAAL(FSM+시간), SCADE(원자력, 자동차 분야에서 사용)
  • #17: 아까전에 말씀들인 정형명세에서 사용된 증명방법을 사용해서 검증 한다고 했는데 정형명세가 무엇인지, 그리고 정형검증의 한 부분인 정리 증명이 먼지 알아보죠
  • #19: 정형 언어로 명세된 모델과 검증하고자 하는 검증 특성을 입력 받아 기능적 특성과 안전성 요구사항을 만족하는지 증명 그래서 모델 체킹을 하면 어떤 장점이 있을까?
  • #20: 요구 명세, 소프트웨어 디자인 단계에서 핵심적인 시스템 논리에 오류가 발생한다면 테스팅 과정에서 파악하기 힘들다
  • #21: 모델검증 기법은 요구사항 및 시스템 명세를 실행가능한 정형적인 모델로 표현하여 코드의 구현없이 시스템의 핵심적인 기능에 논리적인 문제점이 없는지를 미리 파악 할 수 있기 때문에 오류의 조기 발견에 효과적인 기법이다.
  • #23: 깊이 우선 탐색, 너비 우선 탐색 OSEK/VDX : 명세의 구현 사례의 안전성 검증, 네트워크 상호 인증 프로토콜, 우주, OSEK/VDX : 차량용 분산 제어 장치의 공개 아키텍처에 대한 산업 표준화 –프랑스, 독일 통신, 운영체제, 네트워크관리
  • #25: SPIN에서 검증하고자 하는 특성은 선형 시간 시제 논리(Linear Temporal Logic)으로 표현되고 -> 이는 BÜCHI 오토마타로 자동 변현되어 시스템 모델과 함께 모델검증 알고리즘으로 검증 된다 선형시제 논리 (LTL): 어떤 모델의 시간 흐름을 논리적으로 표현할 수 있게끔 나타낸것
  • #26: 처음은 init 프로세스에서 하며 1명의 점원 프로세스와 2명의 고객 프로세스를 실행한다. -> 총 프로세스 4개 프로세스는 임이의 순서대로 실행될 수 있으며, SPIN에서 모든 상황들을 실행 할 수 있다. 고객 프로세스에서는 if구문과 3개의 skip구문 3개의 구문은 무작위 선택을 하기 위함이다. 결과적으로 고객은 상품을 1, 2, 3중에 하나를 주문하고 종료된다. 점원 프로세는 do 무한 루프내에서 g_oderChannel로 들어오는 주문량을 확인해 재고 수량 g_stock에서 빼는 처리를 반복 수행한다. 여기서 검증하고자 하는 것이 재고 수량이 5일 때 두명의 고객을 주문하여 재고가 부족한 경우가 발생할 수 있는지 검증 LTL식 p0로 나타냈다. LTL식 p0는 재고 수량이 항상 0이상인지 된다는 것으로 조건을 만족하지 못하는 경우가 있으면 검증은 실패한단. 두 고객이 상품을 3개씩 주문할 경우
  • #29: 자바 바이트 코드로 프로그램 검증 하는 도구 다수의 스레드로 구성된 프로그램의 교착 상태를 검증
  • #30: 여기서 처음 어플리케이션 단에서 .class파일을 바이트코드로 변환 하고, JPF core 에서는 .jpf 의 작성된 target프로그램과 option을 보고 실행될 바이트 코드에 무엇을 검증할지, 어떤 방식으로 검증할지, 검증할 때 쓰는 방법은 무엇인지 등의 정의된 클레스들의 메소드를 연결하여 저장하고, SMT Solver를 활용해 검증 한다. SMT Solver : 이론들이 추가된 일차 논리의 만족성 여부를 판단한다.
  • #31: 메인 쓰레드가 생성되고, t라는 쓰레드가 실행되겠죠 그리고 t 쓰레드는 doSomething 함수를 호출하는데, 이 메소는 호출한 쓰레드를 Sleep시키는 문입니다. 그리고 바로 메인 쓰레드에서 doSomething()을 한번더 호출하죠? 그럼 변수 C를 420에 race 클레스의 d변수를 나누는데 0또는 42겠죠, 0으로 나누면 exception이 발생할 것이고, 42로 나누면 10이겠죠, 하지만 우리는 이상황을 예측 못합니다.
  • #32: 그래서 이 코드를 검증하고자 한다면 위와 같이 .jpf파일을 만들어서 target을 지정하고 검증하고자하는 특성과 출력하고자 하는 것을 세팅하고 JPF를 실행합니다.
  • #33: 위와 같이 폴더에 검증 결과가 출력되고 밑에 그림은 검증 결과 입니다.
  • #34: 위와 같이 폴더에 검증 결과가 출력되고 밑에 그림은 검증 결과 입니다.