オブジェクト指向
uml

オブジェクト指向分析の基本的な思考法

はじめに

普通、私たちは「ものを考える」とき頭の中で行います。
でも、頭の中だけだと空中戦になってしまって、整理がつかないことが多々あります。
そんなとき、ポンチ絵を描いてみると、スムーズに思考できることがありますよね。
オブジェクト指向分析は、これをポンチ絵ではなくUML表記法で行います。

ここでは、
オブジェクト指向分析は、
「ものを考える」工程をUML表記法を使って行っている

ことを説明してみたいと思います。

ものを考えるときは、認識+考え

私たちは普段、ものを考えます。
ものを考えるとは、どういうことでしょうか?

たとえば、
目の前に人がいるので、挨拶しようとします。
このとき、自分と相手を認識したうえで、
挨拶することを考えます。

たとえば、
コップに水を汲もうとします。
このとき、コップ・水道の蛇口・水・自分の手などを認識したうえで、
それらを組み合わせてコップに水を注ぐ動きを考え、実行します。

このように、私たちは、ものを考えるとき、
「前提として、いくつかのものを認識したうえで、
その動き」
を考えます。

まず、この考えかたを抑えましょう。
ここまで良ければ、次に進みましょう。

ものづくりも、認識+考え

これをものづくりに置き換えて考えてみましょう。

あなたが、とあるメーカーに就職したとします。
洗濯機の設計部に配属されました。
仕事は、洗濯機の動作のリニューアルです。

洗濯機の新しい動きをプログラミングしようとするとき、まず、どう考えますか?

あなたが、以前から洗濯機の専門家ではなければ、
おそらく、先に、洗濯機の構造について理解してから、
洗濯機をどう動かすかを理解/検討しようとするでしょう。

実際にそのイメージ
 洗濯機の構造理解(認識)
 動かし方の理解(考え)
絵に描くと、

1. 認識する
washer.png

2. 動きを考える
washer_move.png

といった感じになります。
認識したうえで考えますね。

当たり前すぎる気はしますが、これも意識的に抑えるべき大切なところです。
ここまで抑えられましたか?
抑えられたら、次に進みましょう。

オブジェクト指向分析も、認識+考え

さて、はじめに書きましたが、
オブジェクト指向分析は、
この「認識+考え」のステップをUMLモデル(UML表記法によるモデル)を描きながら行います。

よく、オブジェクト指向開発のUMLモデリングで、
ドメインモデル・分析モデルと言いますが、
ドメインモデルは、認識するの部分で、
分析モデルは、動きを考えるの部分に該当します。

ドメインモデル(認識のモデル化)

 :動きはあまり意識せずに、そのもの対象の把握・理解をモデルにしたもの

ドメインモデルでは、対象をどのように認識しているか描き出します。
プログラマとしての自分がどう認識しているかではなく、
洗濯機の動きを考える専門家の人が、洗濯機をどう認識しているかを描きます。
washerclass.png

分析モデル(ドメインモデルを使用した、動きのモデル化)

 :ドメインモデルを使って、その動きをモデル化したもの

ドメインモデルの要素を使って、全体の動きを模擬的に動かしてみます。
これもまた、洗濯機の動きを考える専門家の人が、認識している洗濯機を頭の中でどう動かして考えるのかを描きます。
その手段として、ここではシーケンス図を使っています。

ちょっと乱暴な説明かもしれませんが、感覚としては、
子供のころ、ウルトラマンや怪獣の人形を手で動かして遊んだ要領です。
クラス図の要素は、登場人物ですから、ウルトラマンや怪獣です。
その戦いの様子を、シーケンス図で描いているようなものです。
washer_seq.png
washer_analysis.png

まとめ

今回は、オブジェクト指向分析は、「認識+考え」のステップをUMLモデルを描きながら行うものなのだ、という説明をしました。
これが最重要ポイントです。

ドメインモデルや分析モデルの描きかたについては、今回のポイントではなかったので、踏み込んで説明していません。ご注意ください。

参考

『これだけでわかる!初歩のUMLモデリング―基礎から各種テクニックまで第一人者が伝授!!』 萩本 順三 著 技術評論社

『ゼロからわかる UML超入門』河合 昭男 著 技術評論社