Contract®による設計とは?
Design byContract®は、プログラムのすべての部分について、明確に定義されたインターフェイスパラメーターまたは契約の確立に依存するソフトウェアの開発に使用される方法です。 Design byContract®は、ドキュメントまたはモデリングを通じて実装される概念的な開発スタイルと見なすことができますが、実際に契約内の暗黙のコーディングを必要とする一部のプログラミング言語内のネイティブまたはサードパーティのメカニズムを指すために広く使用されていますプログラム。 Design byContract®を使用する際の目標は、プログラムを開発し、最終的にはより完全な方法でコード化して、より些細なエラーを除去することです。一方、サポート言語による契約の実施により、残留エラーを簡単に見つけてキャプチャします。 関数とクラスにコントラクトを使用するプログラムは、コントラクトが明確に定義されているため、個々のクラスを他のプログラムで簡単に再利用できる、よりモジュール化された設計が可能です。
Design byContract®プログラミング哲学の基礎は、実際のビジネス契約のアイデアです。 このモデルでは、オブジェクト指向プログラムの各メソッドとクラスは、それと対話する他のメソッドまたはオブジェクトが従わなければならないコントラクトを定義します。 各クラスには、クラス不変条件と呼ばれるコントラクトを含めることもできます。これは、外部コントラクトが機能する能力を損なわないようにするために、内部的に従う必要があります。
設計およびコーディング中に最も重要な契約の2つの部分は、前提条件と事後条件です。 Design byContract®モデルのこれら2つの部分は、メソッドが呼び出される前のプログラムの状態と、メソッドの実行が完了した後のプログラムの状態を定義します。 契約の他の部分は実装によって異なりますが、他のモジュールへの相互参照、同期条件、および実行順序の要件が含まれる場合があります。
各クラスおよびメソッドのコントラクトを開発することにより、プログラムのさまざまな部分の相互作用を簡単にマップおよび予測できます。 アサーションまたはその他のメカニズムを使用して契約を実施することにより、契約違反が発生した場合にプログラムが実行を試行しないことも保証されます。その状態で生成された出力はいずれにしても技術的に無効になるからです。 Design byContract®は、母国語の機能として実装されると、予期せぬエラーが発生する可能性がほとんどなく、最終製品が期待どおりに動作することを保証できます。
Design byContract®哲学の使用に伴う複雑な問題には、コーディングが開始されるまでの設計時間の延長とシステムのよりきめ細かい開発が含まれます。これは大規模なプロジェクトでは困難な場合があります。 実際には、契約をネイティブでサポートするプログラミング言語で使用される契約検証メカニズムは、プログラムの実行を遅くする可能性があります。 Design byContract®方法論の理解が不十分であると、基本的なエラーチェックを実行するためにコントラクトを使用するプログラムにつながり、リリース後に突然クラッシュする可能性のあるアプリケーションにつながる可能性があります。