yojikのlog

yojikのブログです

2次元レイヤリング

PofEAA とかJ2EE系の本にはレイヤリングの例として、プレゼン層→ビジネスロジック→データソース みたいな軸で考えたレイヤが出てくる。(名称は適当)
しかし抽象度を軸とした全く別のレイヤ分けもある(RUP等に出てくる)。アプリケーション固有→ドメイン固有 → プラットフォーム固有 といった軸でレイヤ分けをしている。 もっと判りやすく言い換えるとUC → ドメイン → FW みたいな感じか。
2つの軸でレイヤを分ければいいのではと思う。ちょっと整理してみると、

        |プレゼン|  BL  |データソース|
--------------------------------------
UC      |        |      |            |
--------------------------------------
ドメイン|        |      |            |
--------------------------------------
FW      |        |      |            |
--------------------------------------

ずれずれだけど*13×3のマトリクスでわかりやすい*2
この表で、UC固有のビジネスロジックはいわゆるコントローラ、ドメイン固有のビジネスロジックはPofEAAにおけるDomainLogic、といった具合にスッキリ整理できる気がする。相互依存関係の解消を考える時もやりやすい。小さなアプリではドメインの層を縮退させてデータソースだけにすることもできる。
またソフトウェアの再利用性を考える時は、この図の左右の軸の依存関係はそれほど重要でなく、上からの下への依存関係を守ることが重要だと思う。

*1:はてなでテーブルってどうやるんだろ

*2:本当はUCの軸がUC毎にあるはずだから、もう少し複雑か