作成日 2007/5/3
最終更新日 2009/8/9
[ Japanese | English ]

POA、DOAとオブジェクト指向

 オブジェクト指向を勉強している人は、POA(プロセス中心アプローチ)やDOA(データ中心アプローチ)(※1)という言葉を聞いたことってある?
 オブジェクト指向関連の本を見てもPOAやDOAについてはあまり書かれていないみたい。
 でも、オブジェクト指向を勉強するときはPOAとDOAについて多少理解(最低でもPOA、DOAの特徴と欠点)していないとまずいです(※2)。
 ということで、ここではPOAとDOAについて、いい加減に説明し、その後、それらとオブジェクト指向の関連について適当に説明します(※3)。

-----
※1:POA、DOAは情報処理技術者試験のソフトウエア開発技術者の試験範囲なので合格を目指している人は勉強した方が良いです。
(実はオブジェクト指向も試験範囲だったりする。)
※2:特にPOAやDOAの欠点を理解することは大事です。
欠点を理解しないとオブジェクト指向で開発しているつもりが、実はそうではなかったということにつながります。
※3:このページではオブジェクト指向の欠点については説明しません。オブジェクト指向の欠点については「オブジェクト指向の限界 - だるまのエクセルVBA 」を参照してください。

1.POAとは(POAの特徴と欠点)
2.DOAとは(DOAの特徴と欠点)
3.POA、DOAとオブジェクト指向
4.参考文献など


1.POAとは(POAの特徴と欠点)

 POA(Process Oriented Approach プロセス中心アプローチ)とは業務での処理に着目して、まあ、あれだ、フローチャートを作るという奴です。
 
 POAでは処理を第一に考えます。データは付属品みたいなものです。
 POAについてのさらに詳しい説明は、「4.参考文献など」あるリンク先のページを参照してください。

 で、POAの欠点なのですが、
POAではシステムに修正を加えていくとデータに不整合が起こりやすくなる(重複してデータを保持することになりやすく、その結果データに不整合が起こりやすくなる)ということでしょうかね〜。


このページのトップへ

2.DOAとは(DOAの特徴と欠点)

 とりあえず、DOA(Data Oriented Approach データ中心アプローチ)についての説明は、以下を読んでください。

  DOAとは対象業務のモデル化を行う際、データが最も安定した情報資源であること、また、共有資源であることに着目して、資源側からシステム、ソフトウエアの分析や設計を行うという考え方です。
 
(参考文献:平成16年度 ソフトウェア開発技術者合格教本 ISBN4-7741-1882-6     279ページ)

 さらに詳しい説明は、本を読むか、「4.参考文献など 」あるリンク先のページを参照してください。

 DOAにはPOAからすると
システムが変更に強くなる。(処理(業務プロセス)は変更されやすいですが、データやデータ構造は変更されにくいです。)
というメリットがあります。(多くの本に書いてあることですが…。)

 DOAの欠点は…、
継承の概念がない(必ずしもそうとも言い切れない)ので、継承関係を持ったデータ構造(例えば車エンティティとトラックエンティティ)を定義するとき困るのと、
データの整合性チェックはデータ更新時にチェックする必要がありますが、データを更新する箇所が例えば1000箇所あったら大変(カプセル化によりデータを遮蔽できれば、データの整合性チェックする箇所は1箇所で済むと思う。)
くらいかなぁ。
このページのトップへ

3.POA、DOAとオブジェクト指向

 めちゃくちゃいい加減にですが、POAとDOAについて説明しました。

 また、オブジェクト指向についての説明をしないと駄目なのか?
それは、「クラスとオブジェクト」か「クラス図とER図とクラスの抽出」を見てよ。(別ウィンドウで開きます。)

 クラス図はER図が元になっているというのを「クラス図とER図とクラスの抽出」で書いた。
 ということはオブジェクト指向はDOAが元になっていて、DOAの欠点を解決するために、DOAを発展させたものであると考えられるとだるまは思います(実際にはどうなのか知りませんが…)。
 これって、多分、すごく重要なことです。
 
 オブジェクト指向で設計する際に、データ構造(クラス構成やクラスの属性)を洗い出さないで、処理(クラスの操作)から洗い出す人っていないでしょうか?
 それは間違っています。
 POAの欠点を思い出してください。DOAはPOAの何を解決できるのかを思い出してください。
 データ構造というのはプロセスと違い変更がかかりにくいと述べました。
 なので、オブジェクト指向で設計するときも「データ構造はプロセスよりも変更がかかりにくい」ということを常に意識するべきです。
 そうしたら、データ構造より先に処理を洗い出すと言うのはおかしいとわかるはずです。

 それからもうひとつ。
 継承ですが、これを差分プログラミングのためだけに使用している人はいないでしょうか?
 つまり、サブクラスはスーパークラスと違う部分(おもにメソッド)のみプログラミングすれば良いのでプログラミングにかかる工数が減らせる。だから積極的に継承を利用しましょうという考え。
 これは危険です。
 そもそも、継承というのは差分プログラミングのためのものではないです。
 継承とは、スーパークラスの属性を引き継いだクラスを作成するためのもの(何度も言っていますが、操作よりも属性の方が重要)ではないかとだるまは思います。(すくなくともエンティティクラスだけを考えた場合はそうです。)
 
このページのトップへ

4.参考文献など

 このページを作成するのに参考にしたページです。

番号

リンク先の名称

リンク先の説明

リンクした日

1 【初級】ゼロから学ぶDOA 第1回:ITpro POA、DOA、OOAの説明が書いてあります。 2007/5/3
2 データ中心アプローチ POAとDOAとの対比とPOAの欠点について説明が書いてあります。 2007/5/4
3 オブジェクト指向 オブジェクト指向について簡単に説明しています。2番目のリンクを読んだ後に読んでください 2009/8/9

番号

著者名

書籍名

ISBN

1 日高 哲郎 情報処理教科書 ソフトウェア開発技術者 2007年度版 (情報処理教科書) 978-4798112343

Prev Up Next  Top
このページのトップへ

このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方はメールをお願いします。

Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS 、Mac OS X は米国Apple Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。

このホームページの作成者はこれらの会社とはいっさい関係がありません。