SPARK Examiner를 이용해 ANSI-C프로그램의 안전성을 분석하기 위한 C언어의 제약 조건과 변환 방법

(Restrictions and translation rules of ANSI-C language for analyzing integrity of C program using SPARK Examiner)

  • 김진섭 (한국과학기술원 전자전산학과) ;
  • 차성덕 (한국과학기술원 전자전산학과)
  • 발행 : 2003.06.01

초록

일반적으로 C언어는 고신뢰도를 요구하는 소프트웨어에 적합하지 않다고 알려졌음에도 불구하고 적지 않은 수의 안전성이 중요시되는(safety-critical) 시스템들이 C언어로 구현되었거나 C언어를 기반으로 개발되고 있다. 본 연구의 목적은 C언어의 안전한 subset을 정의하고 이 subset 언어로 작성된 프로그램을 SPARK Ada로 변환하여 SPARK의 분석 도구들을 사용해 프로그램의 안전성을 분석하는 데 있다. SPARK은 Ada의 안전한 subset으로 고신뢰도를 요하는 시스템을 구현하는데 성공적으로 사용되어왔다. SPARK으로 변환된 C 프로그램은 SPARK 수준의 안전성을 갖게 되며 SPARK의 분석 도구인 Examiner를 통해 프로그램의 정확성 검증 등의 분석을 할 수 있다. 본 연구에서는 엘리베이터 컨트롤러 사례 연구를 통해 정의한 subset이 현실적인 시스템을 구현하기에 부족하지 않음을 발견하였으며, SPARK Ada로의 변환을 자동화해주는 변환기를 구현하였다.

The C language is widely adopted for safety-critical systems. However, it is known that the C language is an unsuitable choice for safety-critical system since the C language includes several bad language features such as heavy use of pointers. The aim of this work is to define safe subset of the C language and translate the subset into the SPARK Ada so that we can verify the program's safety using SPARK analysis tools. SPARK is a safe subset of Ada and has been successfully applied to high integrity system development. The C program translated into SPARK has the same integrity level as SPARK, and the program correctness can be verified by using Examiner which is a SPARK analysis tool. An elevator controller case study is presented and is used to demonstrate the potential use of our approach to implement a realistic system. We also developed a translator that automatically translates C code into SPARK in accordance with the translation rules.

키워드

참고문헌

  1. W. J. Cullyer, S. J. Goodenough, B. A. Wichmann. 'The choice of computer language for use in safety-critical systems'. Software Engineering Journal 6(2):51-58, March 1991 https://doi.org/10.1049/sej.1991.0007
  2. Roger S. Rivett. 'Emerging Software Best Practice and how to be Compliant'. Proceedings of the 6th International EAEC Congress. July 1997
  3. D. Evans. 'Static detection of dynamic memory errors.'. Proceedings of ACM SIGPLAN '96. Conf. On PLDI., SIGPLAN Notices, 31(5):44-53, 1996 https://doi.org/10.1145/249069.231389
  4. George C. Necula, Scott McPeak, Westley Weimer. 'CCured: Type-Safe Retrofitting of Legacy Code'. Proceedings of Principles of Programming Languages, 2002 https://doi.org/10.1145/503272.503286
  5. Trevor Jim. 'Cyclone: A Safe Dialect of C', USENIX Annual Technical Conference, Monterey, CA, June 2002
  6. Bernard Carre; Joanthan Gamsworthy. 'SPARK-An annotated Ada Subset for Safety-Critical Programming'. ACM Annual International Conference on Ada. Proceeding of the conference on TPJ-ADA '90. 329-402, 3- Dec. 1990 https://doi.org/10.1145/255471.255563
  7. R. Chapman. 'Industrial Experience with SPARK', Praxis Critical System Limited, ACM SIGADA 2000 Conf.
  8. Les Hatton. 'Safer C : Developing Software for High-integriry and Safety-critical Systems'. McGraw-Hill, 1995
  9. B. W. Kernighan, D. M. Ritchie. The C Programming Language. Second Edition, Prentice-Hall, Engle-wood, New Jersey, 1988
  10. John Barnes. 'High Integrity Ada: The Spark Approach'. Addison-Wesley, chap. 13, 1996