OODとOOP、それとオブジェクト指向分析。
OODとOOAは近いなと考えていましたが、それが正しいかどうかよく分からなくなってきました。(以前書いたように、OOPは全く別物という事でFA、で良いと思います)


今までは、OOAがお客様の業務を可視化するための技法で「オブジェクト=業務上または現実世界の上の役割」だと考えていました。ではOODは、というとシステムを可視化するための技法で「オブジェクト=システム上または機能上の役割」だと考えていました。

対象が違うだけで振る舞いは同じです。
でも、同一のものではないからOODとOOAと表現が異なっているんでしょう。というところで袋小路に迷い込みました。


「業務上または現実世界の上の役割」を可視化するために行うのがOOAだとしたら、ソフトウェアというものの構成やら機能やらを可視化しようとするのがOODだというのも、なんだかおかしく聞こえてきますよね。これはOODと称して、ソフトウェアに対してOOAを行っているだけなのではないだろうか、と思えてきます。

で、思ったのが、自分の中で「業務=ソフトウェア開発」という認識があったから混乱したのではなかろうか、ということです。最近、プロジェクト上の無駄を排除して、効率化するのではなく、ゆとりとか+αの仕事を組み入れるとか、そういったことが出来る環境を作れるようにしたいな、と思いつつ、それでも仕事なので営利追求をしなきゃならないんだよな、等といったことを考えていたせいかも知れません。


では、お客様が同業者で、ソフトウェア開発という業務が問題領域になっていて、それをシステムで解決しようという事となったら、OODとOOAはイコールになるんでしょうか?多分ならないんですよね。


問題領域を可視化することと、問題解決方法を可視化することは、プロセスや構成要素が似ているために、METAモデルを抽出しようとすると多分、似たようなものが出来上がると思います。でも、あくまで前者は問題領域そのものを表現しようとするもので、後者は問題解決方法を推敲したり検討できるように可視化したりするのが目的です。

ソフトウェア開発プロセス上のリスク=問題領域、と捉えると似たようなモデルが導出されそうになるんですが、実現しようとしている事と今まさに実践している事という、決定的な相違点があります。


となると、やはり「OOD≠OOA」となりますよね。



んー。
ほんとにそーかなーーー。