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)