構造と振る舞い

ソフトウェアの実体を構成する二つの側面。

Structure(構造)

概念間の結合・依存関係・境界から生まれる制約の総体

個々の概念の内部制約(「金額は0以上」)ではなく、概念間の関係性から生まれる制約に焦点がある。

Behavior(振る舞い)

特定の入力に対する出力、あるいは操作による状態変化

両者の関係

Structure が Behavior を制約する。構造が状態空間を限定すれば、その中で起こりうる振る舞いのパターンも限定される。良い構造は振る舞いの実装を単純にし、検証すべきケースを減らす。

保証手段の対応

側面 保証手段
Structure 型システム(静的保証)
Behavior テスト(動的検証)

両者は二者択一ではなく補完的な関係にあり、Contractはこの両面を境界で約束する。

関連