Basic Techniques - Finite Models
: Test & Analysis 와 개발 프로세스는 함께 움직여야 한다! (개별적 NO!)
Learning Objectives
- Finate state abstraction의 Goal과 함축적 의미 파악하기
- program control > Control Flow 모델링 하는 법 배우기
- sw system structure > Call graph 모델링 하는 법 배우기
- finite state behavior > Finite State Machine 모델링 하는 법 배우기
1. 기본 용어
-
Model : artifact를 추상화 시켜서 simple해진 것
-
Directed graph with Labels
: 방향 그래프의 노드에 program의 코드를 넣음 (program execution 표현 가능)
-
Finite Abstractions
- Corsening of execution model : 모델이 정교하지 않게 된다.
- Introduction of nondeterminism : 어떤 것을 선택해야 할지 모름
2. Control Flow Graph (Intraprocedural)
: 프로그램이 실행 중에 횡단할 수 있는 모든 경로를 그래프 표기법을 사용하여 표현한 것
https://ko.wikipedia.org/wiki/제어_흐름_그래프
- Node = basic block : maximal program region(single entry and single exit point)
- 프로그램에서 추출 가능하다.
브랜치는 총 6개다.
- CFG의 용도
-
Testing의 철저한 기준을 세우기 위할 때
-
철저한 criteria를 세우는 다른 model을 정의할 때
ex) LCSAJ (Linear code sequence and jump)
3. Call Graphs (Interprocedural)