Utveckla med kontrakt

Microsoft ResearchFick frågan här om dagen hur det gick för Spec# och om det var tänkt att det skulle bli ett fullvärdigt .NET språk, integrerat i Visual Studio i kommande versioner liksom F#. Eftersom det inte är något som jag hållit på med tidigare så började jag söka runt lite och hittade projektets hemsida på vår forskningsavdelning.

Spec# består av:

  • Programmeringsspråket Spec# som är en vidareutveckling av C#. Det har ytterligare tillägg till typsystemet vilket inkluderar icke-nullbara typer och “checked exceptions”. Det erbjuder också kontrakt för metoder i form av exempelvis “pre”- och “post”-tillstånd.
  • Kompilatorn för Spec# som integreras i Visual Studio. Kompilatorn kontrollerar typer mot kontrakt och dess begränsningar samt sparar kontrakten som metadata.
  • En verifierare för Spec#. Den här komponenten genererar logiska verifieringsuttryck från ett Spec# program.

Spec# finns för både Visual Studio 2005 och Visual Studio 2008

Om du nu (mot förmodan :) ) inte skulle vilja lära dig ytterligare ett språk utan använda det .NET språk du redan kan, så har några av Spec#-teamets utvecklare också skapat “CodeContracts” och publicerat för nedladdning. “CodeContracts” är tillägg av en uppsättning statiska klasser och metoder som används för att erbjuda delar av det som Spec# gör, men just integrerat i det språk som du redan kan.

CodeContracts” finns för närvarande bara för Visual Studio 2008.