SSoT
Single Source of Truth——ある情報に対して「正しいのはここだけ」と定められた唯一の情報源。同じ情報が複数箇所に存在するとき、どちらが正しいか分からなくなる問題(二重管理問題)を回避するための原則。
DRY原則との関係
SSoTはDRY原則(Don't Repeat Yourself)と密接に関連するが、同一ではない。DRYは「同じ知識を重複させない」という実装上の原則であり、SSoTは「どこが真実か」という情報アーキテクチャ上の原則である。DRYに従うことはSSoTを実現する手段の一つ。
ソフトウェア開発におけるSSoTの所在
SSoTをどこに置くかは設計上の重要な判断である。
自然言語のspecをSSoTにする場合の問題
仕様駆動開発が提唱する「自然言語のspecをSSoTにする」アプローチには本質的な問題がある。
- 自然言語は曖昧性を排除できない
- specとcodeの両方をメンテナンスすると二重管理問題が生じる
- specからcodeへの翻訳は非決定的であり、射影が安定しない
ImplementationをSSoTにする根拠
- Implementationは意図を含有する — 型制約・不変条件・モジュール構造が意図を形式的に表現する
- Implementationからの翻訳は収束的 — 翻訳方向の非対称性により、コードから意図を読み取る方向は情報の損失が少ない
- Implementationは強制力を持つ — コンパイラやランタイムが制約違反を検出する
- 二重管理の回避 — コードが唯一の真実であれば「どちらが正しいか」という認知負荷が生じない
これはDomain-Driven Designの「コードとモデルの深い結びつき」という思想とも整合する。