2016年11月11日金曜日

設計アプローチ (POA/DOA) 再考

最近、業務システムの設計の流れについて考えている。自分の頭の整理のため、それを書き出してみた。結論だけ乱暴に言うと、ユーザと設計を始める取っかかりはUI。でも、並行して既存データも分析する必要がある。その結果、最初に設計が安定してくるのがデータで、そこからUIや機能にフィードバックされる流れになるだろうと考えている。

2つの設計アプローチ

業務システムの設計アプローチとして、POA (Process Oriented Approach)とDOA (Data Oriented Approach)という考え方がある。POAでは業務プロセスつまり仕事の手順から手をつけていく。DOAではデータつまり帳簿から手をつけていく。

自分には、DOAの方が理に適っていると思える。一般的な傾向として、業務プロセスよりデータの方が安定しているし、変更の影響が大きいからだ。だからデータベースに早めに安定した設計を与えたい。そうしないと、プログラミングできない。
データ構造がダメな状態で、プログラミングによって挽回することはできません。
――『達人に学ぶDB設計』
『データベース・リファクタリング』にもどうようの主張があった。

機能が先かデータが先か

ところが、先日『はじめよう!要件定義』を読んでいたら、UI・機能・データを、
  1. 何はともあれUI
  2. 操作に対して機能が動作すること
  3. 機能に必要なデータ揃っていること
の順で設計していっている。確かに、ゴールから逆算するとこうなる。『実践テスト駆動開発』からの孫引きだが、こんな言葉もある。ユニットレベルの粒度で考えても、データアクセスレイヤをモック化するのはユニットテストの常套手段だ。
何かを設計するときには、常にもうひとまわり大きなコンテキストの中で考えること。椅子ならば部屋の中にあることを考える。部屋なら家の中、家なら環境の中、環境なら都市計画の中。
――エリエル・サーリネン

並走すればいい

データモデリングの視点で見ると、これはトップダウンアプローチだ。普通は、これだけでは足りない。既存データがあるからだ。そこには、UIには表れない、他のシステムから連携されるデータが格納されているかもしれない。過去の業務プロセスに由来する、今は使わないデータが格納されているかもしれない。ここで、ボトムアップアプローチつまり既存データの分析も必要になる。

ボトムアップアプローチでデータが変わるとどうなるか。既存データは変えられないから機能やUIにフィードバックがかかることになる。絵にするとこのようなイメージ。これならしっくり来る。


データベース恐怖症?

ここからは設計を離れて人の話。UIや機能の分析と、既存データの分析を一人で両方やる必要はないにしろ、最終的には統合して一貫した設計に仕上げないと動かない。だから、分担して情報交換することになる。そのときのことを考えると、もう少しデータベース設計の知識が広まるといいな、と思う。

データベース設計をできてプログラミングできない人は見たことがないけれど、逆はよく見かける。漢(オトコ)のコンピュータ道: データベースについてのそもそも論や『SQLアンチパターン』を見ると、隔たりは大きそうだけれど。

refernces