2009-10-28 6 views
5

에펠 커뮤니티 외부에서 실제로 얼마나 많은 디자인 별 계약이 사용되는지 궁금합니다. 디자인 별 계약을 사용하는 활성 오픈 소스 프로젝트가 있습니까?계약으로 디자인을 사용하는 가장 널리 사용되는 오픈 소스 프로젝트는 무엇입니까?

또는 하나의 질문에 답을하기 위해 계약별로 디자인을 사용하는 가장 널리 사용되는 (비 에펠) 오픈 소스 프로젝트는 무엇입니까?

답변

4

질문의 "non-Eiffel"부분이 재미 있습니다. 계약은 프로그래밍 언어에서 지원이있을 때 모든 의미를 갖습니다. 그렇지 않으면 주석을위한 멋진 구문 일뿐입니다.

이렇게하면 계약을 지원하는 언어로 연결됩니다. 나는 에펠 제외하고 세 가지를 알고 :

처음 두가 실행 계약이 언어를 사용하여 C에 계약을 추가 (바이트 코드 수준에서 작동). 장점 : 런타임 어설 션으로 사용할 수 있습니다. 단점 : 계약에서 기능이 수행하는 것을 완전하게 지정하는 표현력이 부족합니다. 기본적으로 온 전성 검사 만 쓸 수 있습니다.

반면에 ACSL 계약은 표현력이 풍부하고 실행 가능하지 않습니다. 그들은 정렬 함수가 항상 종결되어야한다는 것을 완전하게 지정할 수있게하고 원래 배열과 동일한 원소를 순서대로 남겨 둡니다. ACSL 계약은 정적 분석, 특히 Hoare 스타일의 가장 약한 전제 조건 계산에 사용될 수 있습니다.

마지막으로 정말 익숙한 것입니다 (면책 조항 : 저는 Frama-C에서 일하지만 ACSL 부분은 많은 사람들의 작품입니다. 그 중 일부는 저보다 훨씬 많은 기여를했습니다). Fraunhofer FIRST가 현재 개발중인 ACSL 계약을 맺은 오픈 소스 C 라이브러리 인 "ACSL by Example"에 대해 언급합니다. 아직 출시되지는 않았지만 Device-soft 프로젝트의 일부로 포함될 예정입니다. 관심이 있다면 예비 버전을 얻을 수 있다고 확신합니다. 마지막 웹 페이지의 연락처로 언급 된 사람에게 언제든지 연락하십시오.

+2

D 프로그래밍 언어는 계약을 기본적으로 지원합니다. 파이썬과 루비에 계약을 추가하기위한 라이브러리가 있으며 심지어 C/C++도 GNU Nana를 통해 지원을받습니다. 하지만 아무도 정말로 이것을 사용하는지 모르겠습니다. 저는 특히 Java와 C#/.NET에 관심이 있습니다. –