검색 : [ keyword: 소프트웨어 정형 검증 ] (2)

C와 유사한 언어에서 정수-포인터 변환 지원을 위한 메모리 모델 설계: 이중 비결정성을 사용하여

김용현, 허충길

http://doi.org/10.5626/JOK.2024.51.7.643

시스템 프로그래밍에서 포인터는 매우 중요한 요소이며, 정수-포인터 변환(Integer-Pointer Casting)을 포함한 프로그램에 정형 검증을 적용하는 것은 중요한 과제이다. 정수-포인터 변환을 포함한 프로그램을 정형 검증하기 위해서는 정수-포인터 변환을 지원하는 수학적으로 정의된 메모리 모델과 검증 에 사용할 증명 방법이 필요하다. 우리는 Coq 증명 도구 안에서 정수-포인터 변환을 지원하는 메모리 모델을 정의했다. 이 모델은 끝에서 한 칸 벗어난 포인터(one-past-the-end pointer)를 포함한 정수-포인터 연산과 관련된 패턴을 제대로 지원한다. 또한 우리가 정의한 모델을 프로그램 검증에 사용할 수 있도록 시뮬레이션 기반 증명 방법론을 새로 정의하고 적합성(Adequacy)을 증명했다. 마지막으로 우리의 접근 방법 이 타당함을 확인하기 위해 검증된 C 컴파일러인 CompCert의 메모리 모델과 의미 구조를 우리가 정의한 것으로 변경한 후 시뮬레이션을 통해서 CompCert의 최적화 검증 증명 중 두 개를 업데이트했다. 우리는 이 메모리 모델이 컴파일러와 정수-포인터 연산을 포함하는 프로그램 검증에 적용되기를 기대하고 있다.

Coq에서의 실시간 분산 시스템 검증을 위한 네트워크 및 운영체제 행동의 정형 모델 정의

김윤승, 허충길

http://doi.org/10.5626/JOK.2020.47.11.1071

정형 검증을 적용하여 분산 시스템의 안전성을 높이는 것은 중요한 과제이다. 분산 시스템 중 항공, 의료기기와 같은 안전 우선 시스템은 안전성의 위협이 큰 사고와 직결될 수 있다. 하지만 분산 시스템을 정형 검증하기 위해서는 소프트웨어의 실행 의미뿐만 아니라, 소프트웨어를 실행시키는 운영체제와 메시지를 전달하는 네트워크의 환경 등에 대한 기술이 필요하다. 우리는 Coq 증명 보조 도구 안에서 네트워크와 운영체제의 추상적인 행동에 대한 모델을 정의하였다. 이 모델은 단계적으로 네트워크 각 지역의 실행 규칙을 제시하고, 이로부터 전체 시스템의 행동을 구성한다. 우리는 이 모델이 실제로 분산 시스템 검증에 유용하게 사용될 수 있음을 보이기 위해 간단한 서버-클라이언트 시스템 검증을 수행하였으며, 이후 실용적인 소프트웨어 검증에 적용되기를 기대하고 있다.


Search




Journal of KIISE

  • ISSN : 2383-630X(Print)
  • ISSN : 2383-6296(Electronic)
  • KCI Accredited Journal

사무국

  • Tel. +82-2-588-9240
  • Fax. +82-2-521-1352
  • E-mail. chwoo@kiise.or.kr