Software V&V
5. Finite Model
good_cow
2020. 6. 24. 12:49
Model
Artifact를 간단하게 표현한 것. 프로그램 실행에 관련된 중요한 것만 남겨두고 나머지는 표현하지 않음.
ex) FSM(Finite State Machine), CFG(Control Flow graph), call graph
Control Flow graph
Intraprocedural
Node : basic block(하나의 input이 실행되서 하나의 output이 나오는 프로그램 흐름)
Edge : 프로그램 실행이 하나의 node에서 다른 node로 이동되는 것을 표현
coverage, static analysis, cyclometic complex 계산에 사용
Unit level에서 사용 ->코드가 길어지거나 구조가 복잡해질수록 model을 만드는것이 불가능하므로 Unit level에서 사용
Call grpah
Integration 테스팅에 사용
CFG는 정확하지만, call graph는 정확하지 않을 수 있음
- Overestimation of call relation
Static하게 보기 때문에 runtime 상황과 다른 경우가 존재함 -> False alarm 발생 - Context sensitive/insensitive
함수의 파라미터가 다를 때,
같은 함수로 취급 -> insensitive
다른 함수로 취급 -> sensitive
CFG와 call graph의 차이점
Call graph는 함수 간 relation 파악이 가능하다. 프로그램의 과정 간의 관계를 파악 가능하다. (Inter-procedural)
Control flow graph는 프로그램 구조의 detail을 보여준다. 서브 루틴을 상세히 보여준다. Call graph의 함수 내부를 상세히 표현 (Intra-procedural)