
271
導
入
編
1
設
計
編
ア
キ
テ
ク
チ
ャ
編
2
3
4
5
6
7
6
サブシステム分割
オブジェクト指向とは無関係ですが、基本的でありながら重要なシステム
の依存関係整理の方法は、サブシステム分割です。何のためにサブシステム
分割を行うかというと、すでに触れたように、システムは規模に応じて複雑
さを増します。人間が見通せる範囲には限界があるということもいえます。
ユースケースやデータベースのテーブルが1000を超えたら、多くの人はシ
ステムの外部仕様がどのようになっているのかを頭の中で理解することはで
きないでしょう。システムの全体を押さえている人がいなければ、ある機能
の仕様が他の機能にどのように影響するかがわからなくなります。それで
は、システムが正しく動作するか判断できません。
つまり、システムの複雑さを抑えるためには、システムの規模をある程度
の大きさに抑える必要があります。とはいえ、システムの規模は要件定義で
決まることなので、開発者の都合で小さくすることはできません。そのた
め、要件自体をある程度の大きさで、いくつかに分割すれば、1つ1つは小
さくなります。大きいものを1 つ作るより、小さいものをたくさん作るほう
が人間にはやりやすいのです。
サブシステムをどの単位に分割するのかは難しい問題ですが、業務アプリ
ケーションであれば、ビジネスユースケースのような、まとまった業務単位
に分割するのが一般的なようです。サブシステム分割は機能的な分割ですの
で、垂直方向の依存関係の整理です。
ECサイトに図6-2のような機能があった場合に、それらをサブシステム ...