さっき書いた電子政府の話、ちょっとよむと、DMMとDFDの技術的問題のように読めてしまうので、一応補足&次の話の橋渡し。
一番大切なことは、システムを分割するとき、機能で分割してきめるか、入出力を規定して(関数ならインターフェース)決めるか?の違い。
DMMは機能に着目してシステム分割していく。
この場合、その機能の入出力を決めないで分割するので、入出力インターフェースがあわない危険がある。
一方最近のシステム、たとえば、オブジェクト指向では、メッセージを規定する。なかのメソッドはブラックボックスだ(カプセル化されている)。メッセージとはここで言う入出力にあたる。
ただ、関数プログラミングのような、受け取った引数と、返り値以外、一切ほかに影響を値得ないということは実際の業務プログラムではあり得ない。現実的には、ファイルやDBへの入出力を行う。なので、そのファイルやDBの入出力も必要となる。
そして、このような、入出力を規定する場合、入出力の表現方法を標準化すれば、あとは、具体的になにをどのタイミングで渡すかだけを規定すればいい。この標準化として、HTTP形式で引数で渡したり、XML-RPCやSOAPが考えられるわけ。。
一方、DBとしては、RDBで受け渡すようにすれば、テーブル構造をきめるだけだし(操作言語SQLは標準化されている)ファイルに関してもXML,プロパティファイル、CSVなど標準化がある。
(これらは、データの表現方法を標準化しているだけであり、どの項目を書くかというのは、自由だ)
DFDは、この入出力を規定するほうに近い。
で、ここまでのことをつかって、以前述べた話を書きなおすと、分割する場合は、機能を規定する方法と、入出力を規定する方法がある。
DMMというのは、機能を規定して分割するほうであり、DFDでは機能も意識するが、入出力を規定するほうに近い。初めから入出力を意識して分割していけば矛盾はないが、はじめ、機能だけで分割してしまう(これがDMMでの分割)と、機能範囲もはっきりしないし入出力もはっきりしないので、途中から入出力でやっても、うまくつながらないってこと。
そして、標準化とか、オープンというのも、入出力できめるからできるのであって、機能で分割した場合、標準的な機能を決めることは難しい。というか、そもそも、機能は、範囲すら決めることが難しい。
っていうことでした。
じゃ、また、この関連の話をするときまで(^^)/