技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

情報処理技術者試験対策「データ中心アプローチ(DOA)」

情報処理技術者試験の午前問題では「データ中心アプローチ(Data Oriented Approach,DOA)」について問われることがあるので、どのような考え方なのかを簡単に説明します。
ついでに、よく対比される「プロセス中心アプローチ」や「オブジェクト指向アプローチ」についても説明します。
 
「プロセス中心アプローチ」「データ中心アプローチ」「オブジェクト指向アプローチ」とは何れも設計に関する考え方で、モデリングの手法に密接に関係しています。
実務でこれらの言葉が直接的に出てくることはあまりないですが、変化に強い(システム更改を少ない工数で安全に行える)システムを作る上では参考になる考え方です。
なお、「プロセス中心アプローチ」「データ中心アプローチ」「オブジェクト指向」という順番で設計思想が発展してきたという歴史的な経緯があるので、そのことも踏まえると理解が深まると思います。
 
【各々の語句の説明】
1.プロセス中心アプローチ
 ある業務を実装する際に、プロセスをベースにモデリングを始め、
 付随するデータの形式を後で決める方式のことである。
 モデリングには、構造化分析やDFD等が使われる。
 人間が行うプロセスをそのままモデルに落とし込むためわかりやすい。
 手続き型言語との相性が良い。
 
2.データ中心アプローチ
 ある業務領域において、存在するべきデータをモデリングで定め、
 そのデータを取得する手続きを決め、
 その手続きを利用して業務を実装する方式のことである。
 モデリングには、ER図等が用いられる。
 要件の変更が発生した場合、プロセスが変わることが多いが、
 データの持ち方が変わることは少ないため、変化に強い。
 リレーショナルデータベースとの相性が良い。
 
3.オブジェクト指向アプローチ
 ある業務領域において、存在するべきオブジェクトをモデリングで定め、
 オブジェクトとデータを対応付けし、
 オブジェクト間の関係性で業務を実装する方式のことである。
 (「オブジェクト」≒「責務」と考えて差し支えない)
 モデリングには、UMLのクラス図等が用いられる。
 要件の変更が発生した場合、
 関係するオブジェクトに影響が限定されるため、変化に強い。
 オブジェクト指向型言語との相性が良い。
 
【簡単なイメージ】
売店の業務領域において、追加発注の要否を判断する業務を考える。
在庫量を見て在庫発注の要否を判断するが、
その際に商品毎に判断基準が異なると仮定する。
 
1.プロセス中心アプローチ
 (1)業務プロセスの流れを構造化分析等でモデリングする
 (2)「在庫量確認→判断基準確認→追加発注要否判断」の流れが洗い出される
 (3)在庫量確認や判断基準確認の実装でデータが必要なことが判明する
 (4)在庫管理テーブルや判断基準管理テーブルを定義する
 ↓
 このように定義された在庫管理テーブルや判断基準管理テーブルは、
 追加発注要否判断の業務プロセスに密接に関連してしまっている。
 この業務プロセスに変更が生じた場合、
 及び他の業務プロセスでテーブルを流用する場合、
 テーブル定義を変更せざるを得なくなる可能性が高い。
 
2.データ中心アプローチ
 (1)業務領域内に存在するべきデータをER図でモデリングする
 (2)在庫管理テーブルや判断基準管理テーブルが必要なことが判明する
 (3)在庫管理テーブルや判断基準管理テーブルにアクセスする手続きを定める
  (「手続き」とは、SQL文やストアドプロシージャのことを指す)
 (4)手続きを組み合わせ、追加発注要否判断の業務プロセスを実装する
 ↓
 データやそれに付随する手続きは、業務領域内では普遍的なものである。
 そのため、業務プロセスに変更が発生したり、
 新たな業務プロセスを定めたりする場合においても、
 普遍的なデータ・手続きの組み合わせを変えることで対応可能となり、
 変化に強くなる。
 
3.オブジェクト指向アプローチ
 (1)業務領域内に存在するべきオブジェクトをクラス図でモデリングする
 (2)在庫管理クラスや判断基準管理クラスが必要なことが判明する
  (必要に応じてスーパークラス等も定義する)
 (3)在庫管理クラスや判断基準管理クラスについて、
   対応するテーブル(在庫管理テーブル・判断基準管理テーブル)を定義し、
   そのテーブルにアクセスするための処理を実装する。
  (なお、テーブルの項目はクラスのメンバ(構成要素)と1対1で結びつけ、
   SQL文では単純に各メンバに値を格納するだけに留め、
   データの加工はプログラム言語で実装するのが望ましい。)
 (4)追加発注要否判断クラスを実装する。
   このクラスでは、在庫管理クラスや判断基準管理クラスを用いて
   在庫量や判断基準を取得し、追加発注の要否の判断に利用している。
 ↓
 各々のクラスは1つの責務を担っているため、
 変更が発生した場合に関連するクラスに影響を局所化できる。
 例えば、判断基準の管理方法をデータの持ち方から見直したとしたとしても、
 その影響は判断基準管理クラス内に留まる。
 外のクラスから見れば、
 判断基準管理クラスがどのような処理をしているか意識する必要はないため、
 外のクラスには影響は及ばない。
---------------------
目次

https://1drv.ms/b/s!AivF3bzWXOzuhG1Xk5hscKYqkLkM