UMLの意義
UMLの勉強をしているときに、面白い例題パターンを閃いた。それはオブジェクトの分離・継承・相互作用の概念をきちんと満たしていて、かつ、どこにもサンプル解答の載ってない私オリジナルのユニークな問題である。
後期の情報ゼミナールで私の考えも述べつつ、みんなに解いて貰おうと思っているが、それまでに予習する時間を与えるという意味も含めて、また、この問題を評価してもらう意味も込めて、問題を発表しようと思う。問題は以下のとおり。
問題卵を電子レンジに入れると爆発する過程をモデル化し、UMLで記述しなさい。
具体的には、クラス図・ユースケース図・シーケンス図である。
この問題にはいくつかのアプローチがある。まず、ユースケースで言うところのアクターを何にするか。という問題がある。仮に卵というアクターを作るとすると、ユースケースは爆発するというユースしかなくなる。卵を電子レンジに入れれば爆発するということなら、誰でも知っている。しかし、それは本当の意味で要求分析したとはいえない。つまり、アクターに卵を持ってくるのはオブジェクト指向的には不適格であると思う。
この問題を解く意義は別のところにもある。先ほども書いたが、卵を電子レンジに入れると爆発するのは誰でも知っている。しかし、何故爆発するのか、という部分を知っている人は少ない。この何故爆発するか?という部分を分析し、モデル化することがSEの仕事なのだと私は考えている。
UMLの教科書に載っているような、どこにでもあるシステム(例えば商品の購入・販売モデルなど)はUMLを分かりやすく解説するために簡単な例題として取り上げられていることが多い。しかし少なくとも私は、UMLでそのようなシステムの例題を見ることで、UMLを使うことの意義を見出すことが出来なかった。要するに、それぐらいのモデルであれば、UMLを使わなくとも頭の中で(もしくは経験で)モデル化できるのである。UMLは煩雑なシステムであるほど、その威力を発揮するからだ。
この問題に、貴重な意見をくれた人には韓国or東京のお土産を差し上げます(ぉ
人数多数の場合は一番良いと判断した意見をくれた方に差し上げます。(人数は不定)
昼休みが終わってしまったんで、勉強に戻ります(ぉ