運用契約とは何ですか?
コンピュータープログラミングとコンピューターサイエンスの分野では、操作コントラクトは、特定の機能がプログラム内のさまざまな要素をどのように変更するかを指定または文書化する方法です。 抽象プログラミングインターフェイス(API)やインターフェイス制御ドキュメントとは異なり、操作のコントラクトは、コンピューターアプリケーションまたはシステムを作成する開発およびモデリングフェーズで支援するために使用されます。 最も基本的なレベルでは、コントラクトは、操作の4つの機能、特に操作の名前、設計の他の領域の操作への参照、操作が実行される前の入力または状態の要件、および操作が実行された後のシステムまたは変数。 コントラクトは、操作が内部でどのように機能するかについて特定のものを定義せず、代わりに、プログラムの状態がその使用によってどのように影響を受けるかのみを扱います。
一般に、オペレーションコントラクトは、プログラムモデル内のすべてのオペレーションに対して構築されるわけではありません。 代わりに、特に複雑または追跡が困難な操作用に予約されています。 統合モデリング言語(UML)などのいくつかのコンピューターモデリング言語は、操作コントラクトをサポートし、操作の実行後にプログラムの状態がどのように変化するかを視覚化する方法を備えています。
操作コントラクトを作成するために必要な最初の2つの定義は、操作の名前であり、これには任意の名前と相互参照を指定できます。 相互参照は、定義されている操作を使用する、または操作がその処理で使用する他の操作またはプログラムモデルの領域のリストです。 これは、設計全体がどのように相互作用するかを確認するのに役立ち、モデルの1つの領域への変更が他の領域にどのように影響するかを確認するのに特に役立ちます。
次に、操作コントラクトは、操作の実行に必要な前提条件を定義します。 これには、特定の変数に適切な値をロードすることを要求することも、プログラムの特定の部分が特定の状態にあることを要求することもあります。 操作の実行時に前提条件が満たされていない場合、操作は実行されないか、完全に失敗する可能性があります。 コントラクトは抽象的なツールとして使用されるため、通常、前提条件はかなり一般的であり、特定の変数よりもプログラムの状態に関係しています。
操作契約の最後の部分は、事後条件を定義します。 事後条件は、操作の実行のために変更されたプログラムモデル内の項目のリストです。 これにより、データ構造の変更や、プログラムの状態の変更(制御を別のモジュールに移行するなど)を指定できます。 明確に定義された操作コントラクトを使用することにより、実際の実装が開始される前に、プログラムを効果的にモデル化および変更できます。