초록
일반적으로 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.