Hatena::ブログ(Diary)

Jamzzの日々

2010-02-07

[][][][]Code ContractsとPex

マイクロソフトのDevLabsで公開されている.NETにおける設計とテストにおけるテクノロジーであるCode ContractsとPexを使ってみました。

結論から言うとかなり使えそうでひょっとしたら開発スタイルを変え可能性があると思いました。

かなり奥が深そうでまだ可能性と限界について完全に理解できているわけではないのですがまだ日本語で紹介している情報が少ないようなので書きたいと思います。


Code Contractsは.NETで「契約による設計(DbC:Design By Contract)」を実現するためのランタイムVisual Studioに統合される開発環境です。

つまりC#などの言語で契約、つまりメソッド毎に「事前条件 (precondition)」「事後条件 (postcondition)」とクラス(インスタンス)における「不変条件 (invariant)」を記述することで静的検証と実行時の検証をサポートします。

Code Contractsではインターフェイスに契約を記述してそのインターフェイスを実装するすべてのクラスに契約を適用することができてこの点が興味深いです。

Pexは対象のメソッドの構造を解析してコードカバレッジが100%となるパラメータの組み合わせを生成してユニットテストコードを自動生成します。

Code ContractsとPexでどんなことができるかはマイクロソフトのビデオを見るとわかりやすいと思います。

Manuel Fahndrich and Peli de Halleux - The Synergy of Code Contracts and Pex

英語のビデオですがC#がわかる人であれば映像だけで理解できると思います。

更に詳細の情報はMicrosoft Researchのそれぞれのプロジェクトのページにある他のビデオやドキュメントを見るのが良いです。

Contracts - Microsoft Research

Pex, Automated White box Testing for .NET - Microsoft Research


Code ContractsとPexの商用評価版はDevLabsのサイトからダウンロードして利用することができます。

ただこれらの機能のすべてを利用するためにはVisual Studio Teamエディションが要求されます。

Teamエディションを使用しない場合にはVisual Studio 2008または2010で利用できますがCode Contractsでは静的評価が利用できません。

またPexではTeamエディションがなければアカデミック版しか利用できませんが機能的な制限は無いようです。

あくまでも個人的な評価ということであればアカデミック版でも良いと思います。

私は調査のためにVisual Studio 2010 Ultimateの評価版(ベータ2)を利用しています。

Visual Studio 2010 Ultimateの評価版は現在以下のページからダウンロードできます。

Visual Studio 2010 Editions | Microsoft Visual Studio

Code ContractsはDevLabsの以下のページからダウンロードできます。

http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

Pexの商用評価版はDevLabsの以下のページからダウンロードできます。

http://msdn.microsoft.com/en-us/devlabs/cc950525.aspx


他にも色々と書けばきりがないのですが、とりあえず導入のご紹介までとします。

また機会があれば書きたいと思います。


(2010-02-08:追記)

Code Contractsについて具体的に紹介しているブログがありました。

とある契約の備忘目録。契約による設計(Design by Contract)で信頼性の高いソフトウェアを構築しよう。 - Bug Catharsis

概要を見たい場合はこちらのサイトで丁寧に紹介されています。

ただ「契約による設計は性悪説的思想である」とは思いません。

コミュニケーションを促進してくれたりうっかりが重大な結果になることを救ってくれるものだと思います。

やはり実際に使ったときの印象は文章では分かりにくいので上記のビデオを見ることをお勧めしたいと思います。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証