yojikのlog

yojikのブログです

レイヤリング戦略

以前考えていた、2次元レイヤと似た話を見つけたのでメモ。RUPのドキュメントだから以前に読んでいて無意識にパクってたのかも。

http://www-128.ibm.com/developerworks/rational/library/4699.html

簡単にまとめると以下のとおり()内はコメント↓

レイヤリングの種類

レイヤリングには大きくわけると2種類ある

  • 責務にもとづくレイヤリング
  • 再利用性にもとづくレイヤリング

責務にもとづくレイヤリング

プレゼン、ビジネスロジック、データアクセスといったシステムの責務毎にレイヤを分割する*1。これにより開発のしやすさや保守性を高めることができる。ちなみにこのレイヤとティア(物理的な分散層?)は違うので注意すること。

レイヤリングとパッケージ

実際のパッケージ構造を考えると、レイヤとは直交するコンポーネント毎にモデルやシステムを分割することがあり、ここで戦略が分かれる。

  1. コンポーネント単位で最上位のパッケージを分割する。その中でレイヤ毎にパッケージを分割
  2. レイヤ毎に最上位のパッケージ分割をする。内部でコンポーネント毎にパッケージを分割

上記戦略は設計、実装モデルや配置モデル*2に影響をあたえる。

再利用にもとづくレイヤリング

アプリ固有、ビジネス固有、基本に分割する。下層にいくほど再利用性の範囲が広く普遍的なものになる。このような切り出しによってコンポーネントの再利用を促進させる。(このレイヤリング戦略はヤコブソン氏がモトネタらしい?)

Multidimensional Layering(多次元レイヤリング!)

上記レイヤリングを組合わせることも可能。ただし、どちらのレイヤリング戦略(責務or再利用)を重視するかを決定する必要がある。保守性を高めるなら責務レイヤを基本とする。再利用性を重視したいなら再利用レイヤ(字のまんま)を基本とする。*3

*1:J2EEパターンやPofEAA等で有名なやつですね

*2:RUPの文章なのでメインの成果物はモデルなんです

*3:根拠は微妙だけど、ここでは保守性と再利用性がトレードオフなのが面白い.