情報科学 › ソフトウェア設計とテスト › 契約による設計

データ型の実装・表現不変条件・抽象化関数

定義 6.1(「契約による設計」§6)

データ型の実装とは、次の組 (Rep,Init,(opm)m∈Op)(\mathrm{Rep}, \mathrm{Init}, (\mathrm{op}_m)_{m \in \mathrm{Op}}) をいう。

  • Rep\mathrm{Rep} は表現(内部の状態)の集合、Init⊆Rep\mathrm{Init} \subseteq \mathrm{Rep} は構築子が作りうる表現の集合。
  • 各公開操作 m∈Opm \in \mathrm{Op} は、引数の集合 XmX_m、結果の集合 YmY_m、事前条件 prem⊆Rep×Xm\mathrm{pre}_m \subseteq \mathrm{Rep} \times X_m と、写像 opm:Rep×Xm→Rep×Ym\mathrm{op}_m : \mathrm{Rep} \times X_m \to \mathrm{Rep} \times Y_m(新しい表現と結果を返す)をもつ。

表現不変条件とは、部分集合 Inv⊆Rep\mathrm{Inv} \subseteq \mathrm{Rep} をいう。集合 AA(抽象値の集合)への写像 α:Inv→A\alpha : \mathrm{Inv} \to A を抽象化関数という。

このデータ型を使うプログラムの実行とは、表現と呼び出し側の状態の組の列 (r0,e0),(r1,e1),…,(rN,eN)(r_0, e_0), (r_1, e_1), \ldots, (r_N, e_N) をいう。実行が表現を漏らさないとは、r0∈Initr_0 \in \mathrm{Init} であり、各 i<Ni \lt N について次のどちらかが成り立つことをいう。

  • (公開操作の呼び出し)ある m∈Opm \in \mathrm{Op} と x∈Xmx \in X_m があって、(ri,x)∈prem(r_i, x) \in \mathrm{pre}_m かつ opm(ri,x)=(ri+1,y)\mathrm{op}_m(r_i, x) = (r_{i+1}, y)(yy は結果)。
  • (呼び出し側の動作)ri+1=rir_{i+1} = r_i。

本文で読む(前後の説明と例)→

閉包の状態

定義

定義は閉包の起点です(証明を要しません)。

印の意味: ✓公理まで証明済み ・ △証明あり(閉包未完)・ ※主張のみ。テーマごとの集計は 閉包の状況。

これを使っている定理 証明で参照している 1 件

関連するノック 2 問