ゆーたんのつぶやき

株式会社ノークリサーチにてIT関連のシニアアナリストとして活動しています。

データ中心指向とオブジェクト指向の境界線



データ中心指向(以前触れたたように『DOA』と書くと「Dead Or Alive
になってしまうのでこう書くことにします)とオブジェクト指向の違いに
関する議論は良く見かけます。どちらが良い・悪いということはないと
思いますが、アーキテクチャ的な視点で見た場合にどこに境界線がある
のかなということについて考えてみました。


WEBアプリケーションは3層構造とか4層構造とか良く言いますが、そう
いった観点で見た場合、データ中心指向とオブジェクト指向の境界線は
データ操作ロジックをどの層(レイヤー)に配置するのかということなの
ではないかと思います。


データ中心指向ではデータと操作が分離されていて、データに関する操作
はビジネスプロセスと一体化していると捉えています。一方、オブジェク
ト指向においてはデータとデータに関する操作はドメインモデルに集約さ
れていて、個々のデータに関する操作自体はビジネスプロセスからは分離
されていると見なせるのではないでしょうか。


過去のCASEツールがうまくいかなかった原因の一つはE-R図によるデータ
設計を土台とし、その上にロジックを生成していくという手法において
「ビジネスプロセスと個々のデータ操作が渾然一体となってしまっていた
」ということが挙げられるのではないかと考えています。永続的で安定し
ているデータを主体とすればシステム全体も安定し、変更に強くなりそう
な気がしますがビジネスロジックとデータ操作が一体となっていると、ビ
ジネスロジックの変更がデータ操作にも及んでしまい、その影響がしまい
には変更してはいけないはずのデータ構造そのものにも及んでしまうとい
うパターンが少なからずあったのではないかと思います。


そう考えてみると重要なのはドメインモデルをしっかりと設計して、個々
のデータ操作とビジネスロジックをしっかり切り分けるということだと思
います。EJB2.1までは本来はEntity Beanに実装すべきデータ操作に該当
するものをついついSession Bean側に入れ込んでしまっていたことも多か
ったように感じています。O&Rマッピングの普及やEJB3.0の登場によって
ドメインモデルのコーディングは以前よりもやりやすくなるのではないか
と期待しています。