依存関係逆転の原則をagile視点で
ふと思い付いたのでメモ。
あまり深く考えずにシステム開発に取り掛かった場合。
システムは機能に依存し、機能は実装の詳細に依存する。これでは作っているうちに本当に必要なものを見失ったり実装上の問題と業務上の問題が混ざったりして段々と混乱してくる。
システムが実装に依存するのは当然のような気がするが、Agileと依存関係逆転の原則を当てはめてみると
システムは価値インターフェースを保持し、その価値からストーリーが導出される。ストーリーは受け入れ条件インターフェースを確定し、それを機能が実装する。
こちらの図では、機能の変更にともなってストーリーが変わるようなことは無いし、システム(の価値)が変わるようなこともない。