Skip to main content
QUICK REVIEW

[논문 리뷰] Translating Xd-C programs to MSVL programs

Meng Wang, Cong Tian|arXiv (Cornell University)|2018. 08. 25.
Software Testing and Debugging Techniques인용 수 3
한 줄 요약

이 논문은 UMC4M 도구를 사용하여 런타임 검증을 위한 MSVL 프로그램으로 Xd-C 프로그램—C의 제한된, 의미적으로 완전한 하위집합—을 자동으로 변환하는 번역 프레임워크를 제시한다. 이 방법은 형식적 운영 의미론을 사용하여 Xd-C와 MSVL 구성요소 간의 의미적 동치성을 증명하며, C2M라는 도구로 구현되어 있으며, 선형 시간 복잡도로 13개의 실제 C 프로그램을 성공적으로 변환하고 강력한 행동 동치성을 유지한다.

ABSTRACT

C language is one of the most popular languages for software systems. In order to verify safety, reliability and security properties of such systems written in C, a tool UMC4M for runtime verification at code level based on Modeling, Simulation and Verification Language (MSVL) and its compiler MC is employed. To do so, a C program $P$ has to be translated to an MSVL program M and the negation of a desired property $Q$ is also translated to an MSVL program M', then "M and M" is compiled and executed armed with MC. Whether $P$ violates $Q$ is checked by evaluating whether there exists an acceptable execution of new MSVL program M and M". Therefore, how to translate a C program to an MSVL program is a critical issue. However, in general, C is of complicated structures with goto statement. In this paper, we confine the syntax of C in a suitable subset called Xd-C without loss of expressiveness. Further, we present a translation algorithm from an Xd-C program to an MSVL program based on translation algorithms for expressions and statements. Moreover, the equivalences between expressions and statements involved in Xd-C and MSVL programs are inductively proved. Subsequently, the equivalence between the original Xd-C program and the translated MSVL program is also proved. In addition, the proposed approach has been implemented by a tool called $C2M$. A benchmark of experiments including 13 real-world Xd-C programs is conducted. The results show that $C2M$ works effectively.

연구 동기 및 목표

  • MSVL를 통한 런타임 검증을 통해 코드 수준에서 C 프로그램의 형식적 검증을 가능하게 하기 위해.
  • goto 문을 포함한 복잡한 C 프로그램을 형식적 검증에 유리한 언어로 번역하는 데 도전하기 위해.
  • 시스템 수준 프로그래밍에 필요한 표현력을 유지하면서도 신뢰할 수 있는 MSVL로의 번역을 가능하게 하는 제한된 그러나 표현력 있는 C 하위집합(Xd-C)을 정의하기 위해.
  • 운영 의미론을 기반으로 Xd-C 프로그램과 그 MSVL 번역 간의 의미적 동치성을 형식적으로 증명하기 위해.
  • 실제 C 프로그램을 MSVL로 자동 변환하기 위한 실용적인 도구(C2M)를 구현하고 평가하기 위해.

제안 방법

  • goto 문을 제외하지만 모든 핵심 데이터 유형과 제어 구조를 유지하는 C의 제한된 하위집합인 Xd-C를 정의하기 위해.
  • 구문적 및 의미적 규칙을 사용하여 Xd-C 선언, 표현식, 문을 등가의 MSVL 구성요소로 매핑하는 번역 알고리즘을 설계하기 위해.
  • 정지 및 발산을 포괄하는 큰 단계 의미론을 사용하여 Xd-C와 MSVL의 운영 의미론을 형식화하기 위해.
  • 운영 의미론을 기반으로 구조적 및 규칙 귀납을 사용하여 문장과 표현식의 동치성을 증명하기 위해.
  • 사전 처리, 파서 생성기(PG)를 사용한 토큰 분석 및 구문 분석, MSVL 코드 생성을 포함한 번역 파이프라인을 C2M라는 도구로 구현하기 위해.
  • 후처리를 통한 출력 최적화 및 Xd-C 및 MSVL 함수를 위한 커스텀 라이브러리 통합을 통해 실제 프로그램 번역을 지원하기 위해.

실험 결과

연구 질문

  • RQ1표현력이 충분하고 시스템 수준 프로그래밍에 적합하면서도 MSVL로의 정확한 번역을 가능하게 하는 C의 제한된 하위집합(Xd-C)을 정의할 수 있는가?
  • RQ2Xd-C와 MSVL 프로그램 간의 의미적 동치성을 유지하는 형식적 번역 알고리즘을 어떻게 설계할 수 있는가?
  • RQ3번역 과정의 시간 복잡도는 얼마이며, 실제 프로그램에 대해 확장 가능한가?
  • RQ4C2M 도구는 원본 C 프로그램과 그 MSVL 대응물 간의 행동 동치성을 어느 정도 유지하는가?
  • RQ5UMC4M 도구와 그 MSVL 컴파일러 MC를 사용하여 번역된 MSVL 프로그램을 효과적으로 검증할 수 있는가?

주요 결과

  • C2M 도구는 RERS 및 SPEC2000의 벤치마크를 포함한 13개의 실제 Xd-C 프로그램을 등가의 MSVL 프로그램으로 성공적으로 변환하였다.
  • 생성된 MSVL 프로그램의 평균 크기는 원본 Xd-C 프로그램의 약 2.6배이며, 선형 시간 복잡도 O(n)을 보였다. 여기서 n은 문장의 수이다.
  • 가장 큰 프로그램(twol, 약 17,000줄)의 번역 시간은 7.11초였으며, 전체 13개 프로그램에 대한 총 번역 시간은 95.15초였다.
  • 형식적 증명을 통해 표현식과 문장에 대한 귀납적 추론을 기반으로 Xd-C와 MSVL 프로그램 간의 의미적 동치성이 확립되었다.
  • 도구는 강력한 행동 대응 관계를 유지하여 모델 추상화로 인한 잘못된 경고나 누락 없이 정확한 런타임 검증을 가능하게 하였다.
  • 벤치마크 결과는 C2M가 산업 규모의 C 프로그램에 대해 효과적이고 확장 가능함을 확인하였으며, 향후 전체 검증 파이프라인에의 통합을 지원한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.