ANSI/ISO C 사양 언어
ANSI/ISO C Specification Language![]() |
패러다임 | 명령적 특징이 거의 없는 선언적. |
---|---|
설계자 | 위원회 아테나리 아토미크 및 INIA |
개발자 | 위원회 아테나리 아토미크 및 INIA |
처음 등장한 | 2008 |
안정된 릴리스 | v1.16 / 2020년 11월 19일 |
타이핑 분야 | 정적인 |
주요 구현 | |
프라마-C | |
영향을 받다 | |
JML |
ANSI/ISO C 사양 언어(ACSL)는 Hoare 스타일의 사전 및 사후 조건과 불변성을 사용하는 C 프로그램의 사양 언어이며, 계약 패러다임을 따릅니다.사양은 C 프로그램에 대한 C 주석 주석으로 작성되며, 따라서 C 컴파일러와 함께 컴파일할 수 있습니다.
ACSL의 현재 검증 도구는 Frama-C입니다.또, C++ 용으로 정의된 자매 언어 ANSI/ISO C++ 사양 언어(ACSL++)도 실장하고 있습니다.
개요
1983년, 미국 국립 표준 협회(ANSI)는 C 언어를 표준화하기 위해 X3J11 위원회에 의뢰했습니다.C의 첫 번째 표준은 ANSI에 의해 발표되었다.이 문서는 이후 국제표준화기구(ISO)에 의해 채택되어 ISO에 의해 발행된 후속 개정판이 ANSI에 의해 채택되었지만 ANSI C라는 이름은 계속 사용되고 있습니다.
ACSL은 Behavioral Interface Specification Language(BISL; 행동 인터페이스 사양 언어)입니다.C 소스 코드의 동작 속성을 지정하는 것을 목적으로 합니다.이 언어의 주요 영감은 C 프로그램의 행동 속성의 연역적 검증을 위한 Caduceus 도구의 사양 언어에서 비롯됩니다.Caduceus의 사양 언어 자체는 Java 소스 코드의 유사한 목표를 목표로 하는 JML에서 영감을 받았습니다.
JML과의 한 가지 차이점은 ACSL은 정적 검증과 연역 검증을 지향하는 반면, JML은 ESC/Java 툴을 사용한 런타임 어설션 체크와 정적 검증을 모두 지향한다는 것입니다.
구문
다음 예제를 다음과 같은 함수의 프로토타입을 고려하십시오.incrstar
:
/*@에는 \valid(p)가 필요합니다. @는 *p;를 할당합니다. @는 *p == \oldsup) + 1을 보증합니다. @*/ 무효 인크 (인트 *p);
계약서는 다음과 같이 시작하는 코멘트로 제공됩니다./*@
그 의미는 다음과 같습니다.
- 첫 번째 행은 전제 조건입니다.이 행은, 다음의 기능을 나타내고 있습니다.
incrstar
포인터로 호출해야 합니다.p
안전하게 할당된 메모리 위치를 가리킵니다. - 두 번째 줄은 frame 구로, 함수가
incrstar
메모리 위치는 변경되지 않지만,p
. - 마지막으로,
ensures
절은 post condition으로, 값은 다음과 같습니다.*p
1씩 증가합니다.
상기 기능의 유효한 실장은 다음과 같습니다.
무효 인크 (인트 *p) { (*p)++; }
도구 지원
ACSL 의 기능의 대부분은, Frama-C 로 서포트되고 있습니다.
TrustInSoft 스태틱아나라이저는 Frama-C의 상용 파생 모델입니다.프로그램 동작을 확인하고 (언어 사양에 따라 내장된 규칙을 사용하여) 정의되지 않은 [1]동작의 인스턴스를 포착합니다.
레퍼런스
- ^ "ACSL Properties". TrustInSoft Documentation 1.42-dev documentation.
- VMCAI 2008 페이지 188 ~202의 ACSL 사용률 모듈러 어설션체크를 위한 충분한 전제 조건의 예
- 예를 들어 ACSL은 단순 알고리즘의 ACSL 규격에 대한 잘 문서화된 모음으로 Fraunhofer FOKUS의 검증 그룹에 의해 개발 및 유지된다.
- WP와 ACSL을 사용한 Frama-C에 대한 튜토리얼로, 툴의 배후에 있는 이론에 대한 아이디어도 제공합니다(프랑스어로도 이용 가능).
- DO-178C 준거 프로젝트의 맥락에서 ACSL 및 Frama-C를 사용하여 낮은 수준의 요건을 책정 및 검증하는 것에 관한 보고서
- [ 1 ] 、 「 「 」 、 「 」 、 「 」 、 「 」 、 「 」 、 「 」 에서의 ACSL 의 사용에 대해 기술한 리포트.
- Techikum Wien ACSL 및 Frama-C에서는 설계 및 검증에 관한 코스를 수강하고 있습니다.