どんな問題が起こる?
垂直設計の要素と水平設計の要素が混ざると,不安定なアーキテクチャになりやすい.
- 垂直設計の要素とは,
- ある機能(authentificationやauditingなど)に着目したときの横断的な要素
- 個々のアプリ・特定のソフトウェア実装に依存する
- 水平設計の要素とは,
- あるレイヤ(データアクセス,UIなど)の要素であり
- アプリ間や特定の実装で共通となる
これらは通常,混在する.混在していることにより,再利用性やロバスト性が落ちる.
- 垂直設計要素は,ソフト依存を引き起こし,拡張と再利用を阻害する.
- 垂直設計と水平設計を混ぜ合わせると,不安定になったり,再利用性を低下させる.
どう解決する?
まず水平設計の要素を見つけて,アーキテクチャレイヤにそれぞれ配置する.
その後,垂直設計要素をある特定の機能や性能のために使う
メタデータを導入する.
- たとえば,水平要素がサブシステムの抽象化されたものであったとき.
水平設計要素と垂直設計要素とメタデータのバランスが適正であれば,うまく構造化された,拡張性があり,再利用できるソフトウェアになる