Spec Sharp

Spec#とは、C#にEiffel風の仕様記述言語的要素を追加したプログラミング言語である。Spec#ではオブジェクト不変条件・事前条件・事後条件などの契約を記述するための構文を持つ。のように、定理証明機を用いた静的検証ツールを持っており、不変条件の多くを静的に検証できる。
.NET Framework 4.0におけるコードコントラクトAPIはSpec#とともに発展してきた。
Spec#はSing#の基礎にもなっている。
特徴.
C#と比べ、Spec#には以下の要素を持つ。
例.
事前条件・事後条件・null非許容参照型を用いた例を以下に示す。(ブラウザ上でSpec#を試す)
static int Main(string![] args)
 requires args.Length > 0;
 ensures return == 0;
 foreach(string arg in args)
 Console.WriteLine(arg);
 return 0;
Sing#.
Sing#はMicrosoft ResearchがSingularity(OS)を開発するためにSpec#を拡張した言語である。Sing#では低水準プログラミング言語におけるチャネルと契約を扱える。