講評
モデリングバトルに挑戦していただいたモデルに、師範のMr.Xおよび師範代から講評をしてもらいました。イベント当日よりも詳細なコメントになっているので、挑戦された方もそうでない方も、ぜひ参考にしてみてください。
なお、このコメントはイベント前に書いたものです。したがって、イベント当日の発表内容は考慮されていません。師範・師範代からのコメントを編集したものであり、文責はオブジェクト倶楽部が負います。
全体への講評 |
みなさん、アクティビティ図の恐ろしさにあまり気付いていないようです。どのアクティビィティの集団でライフサイクルを掴まえるかの違いによって表しているフローの目的が変わってくるのです。
あと、クラス図とアクティビティ図とくにレーンやオブジェクトフローとの間の対応関係をみなさん意識していないようです。
やっぱり受付窓口の作業のモデルになっていないのではないですか。モデリングの視点,視座が定まっていないようです。待ち行列の理論を参考にしてもおもしろいかもしれません。到着間隔とかサービス時間とかですね。
|
本タさんのモデル |
クラス図は、工程とイベントの分析としては、うまく把握していると思います。しかし、参加者とか受付係とかのエンティティクラスを省略してしまうのはまずいのではないでしょうか。
1.アクティビティ図
- 来場者にとっては二度手間(受付担当者の列に並んで名札番号を受け取り、さらに、名札担当者の列に並んで名札他一式を得る)です。でちょっとイヤなタイプの受付手順になってしまっているかもしれません。
2.クラス図
- ほぼエンティティ分析のみで(アクティビティ図に登場してくる受付担当者や名札担当者などの)アクターとの仲介をするコントローラが不在のモデルです。
- クラス図左側の工程-予定-実績構造は、妙な抽象化が進みすぎてしまっていて、かえって{理解し|扱い}にくいモデルにしてしまっているかもしれません。このような構造にする事の利点が十分にアピールされていれば良いのですが…。
- 「工程」「関連型」とで構成される集合と「イベント」との間に何か関連があった方が良いように思いますが…。同様に、「パーティ」と「イベント」との間にも関連があった方が良いかもしれません。
- 「参加権」のサブクラスである「有効」「無効」は単なる状態に見えます。なぜわざわざ動的分類などという分かりにくい形にしているのか理由が推測できません(個人的にあまり好きではない形)。
- 「参加権」から「パーティ」に向かう関連の多重度は「0..1」では?
3.オブジェクト図
- リンク漏れ: 「入金:工程」⇔「入金と受付:関連型」、「受付:工程」⇔「受付と名札を渡す:関連型」
- この図では{ひとり分の「参加権」の様子しか扱っていない|最初から居るインスタンスが省略されてしまっている箇所が多い}ため、「工程」と「関連型」が複数の参加者毎に作られる情報(「工程状態」と「作業関連」)から共有されるオブジェクトだという事が上手く伝わらない恐れがあると思います。共有ではなく、毎回その場で個別に生成するものだと誤解されてしまうかもしれません。
1.アクティビティ図
- 名札の束は物理的なものなので、番号で検索できるようになったとしても大量の参加者のイベントの場合には、苗字イニシャルなどの利用による並列作業が必要だと思われます。その分析が不十分かもしれません。
2.クラス図
- 汎用的なワークフロー管理の枠組みをモデルとして提示していますが、オーバースペックモデリングであり、アナリシスパターン適用の危険性の典型例です。
- 逆に本来の課題の要点がモデルから抜け落ちています。
- さらにアクティビティ図では、そのせっかくの汎用枠組みを利用していないので、かえってフローが決め打ちになってしまっています。
3.オブジェクト図
- 無駄にクラス図を複雑にしたために必要になったという感が否めません。業務の整理のために役に立っていないのでは。ヨジツ管理はやめてほしいところです。
クラス図
一言で言って、過剰な抽象化と過剰な管理。
イベントへの参加を権利と見て概念化していますが、今回の関心は受付プロセスにあるのじゃないかと思います。
で,受付プロセスのほうですけど、これが作業順を固定していて、柔軟性がないです。
「工程状態」が実は状態ではなくてその参加者(参加権)に対する個々の作業で、ここに「受付」なら受付係という「リソース」がつきます。
「工程」は「工程名」型ですね。これも,予定と実績を持つ価値があるのか疑問です。とにかく順序固定はだめで、予実管理は過剰。
工程管理側と参加権の講師側で、モデリングの主体が違うのではないですか。別のものがつながっている、竹に木を接いだ形です。
|
(株)NEC情報システムズ 池下さんのモデル |
アクティビティ図が良く考えられています。登録、入金のエラー、当日登録なども考えているようで、好感が持てます。
クラス図も良いです。ただし、エンティティ分析が甘いかな。例えば、名札は氏名と、入場券はイベントと、イベントは申し込み情報とつながっているべき、と思います。あと、イベントと料金の関連を表現して欲しいです。
1.アクティビティ図
- クラス図の方もそうですが、今回の問題ドメインの特性(短時間に多くの来場者が殺到する)を少し軽視しがちな傾向があるかもしれません(効率を無視する分析モデルとしては良いかもしれませんが…)。このモデルのままだと、共有されているリソース(たとえば参加者名簿)のアクセスや配布物置き場への物理的な距離による遅れなどのボトルネック、オーバーヘッドが大きくなって、元の課題文のような手順より混乱してしまいそうです。
- 図中後半のフォーク・バーとジョイン・バーで対応しない箇所があったり、何かちょっと怪しい遷移(特に下から上に戻っている遷移)が何本かあり、意図した通りの手順が正確に読み手に伝わるかどうかちょっと不安です。
2.クラス図
- 「参加者名簿」および「配布物置き場」がすべての{窓口|担当者}によって共有されている(この部分が多重化されていない)ため、現実世界ではここへのアクセスがボトルネックになる可能性が高い構造になっていると思います。その辺りのパフォーマンス・チューニングに似た設計的な変形まで考慮されているとよりベターだったかもしれません。
- このクラス図の構造だと、各窓口毎に2名の専属担当者が必要になるので、ちょっと人手が多く必要になりそうな気がします。
- 「配布物置き場」から「配布物一式」へのロールに付いている{ordered}制約は意味がありません(限定子が付いて多重度が「1」になっているため)。
- 「配布物一式」から「配布物置き場」への関連の多重度は「1」または「0..1」なのでは?
- 「来場者」というクラスの意味付けにもよりますが、「申し込み情報」から「来場者」への関連の多重度と、「来場者」から「受付窓口」への関連の多重度は、両方とも「0..1」の方が良くないですか?
- 「名簿確認担当者」から「参加者名簿」への関連と、「配布物担当者」から「配布物置き場」への関連は、ともに派生関連(他の関連を辿って特定することができる)のようです。これを削るか派生関連マークを付けて表記するかしてみると良いかもしれません。
3.シーケンス図
- 「受付窓口」や「オブジェクトクラブのイベント」などのオブジェクトが絡んで来てませんが、いいのでしょうか?
- このシーケンスだと、「来場した」事は記録されますが、「配布物が確かに渡された」という記録はどこにも残りませんが、それで大丈夫でしょうか?
- 「配布物担当者」は実際に配布物を渡す来場者の顔を最後に渡す時まで見ていないので、受付会場が混雑してくると配布物の渡し間違いなどが起こりやすくなってしまうかもしれませんね。
- ひとりの来場者に対して「名簿確認担当者」がおこなう作業の時間と「配布物担当者」がおこなう作業の時間とに大きな差(2~3倍とか)があると、片方の担当者が遊んでしまったり、脇に配布物待ちの行列が出来上がってしまったり、…といった現象が起こりそうですね。
1.アクティビティ図
- 受付担当者の視点でのモデル化になっているので、業務の負荷分析等を踏み込んで検討する際に役に立ちそうです。
2.クラス図
- 多重度がおかしいです。1:1が多すぎるのは、関連の付け方を勘違いしているためではないでしょうか。
3.シーケンス図
- 左端のアクターの集中コントロールになっています。
- しかしシーケンス図の利用は各作業者の分担の負荷を見る上で役に立ちそうですね。
- 必要時間等も表すと作業改善に利用できるんじゃないでしょうか。
クラス図
多重度が1:1のところはだめ。概念の分離ができていません。タイミングが違うのであれば,1:0..1とかになるはず。
「名簿確認担当者」,「受付窓口」,「配布物担当者」はロールにしたほうがいいです。「参加者名簿」はviewなので,せめて導出にしてほしいところです。
「配布物一式」のorderedは無意味。名札は参加者ごとに違うのではないですか。名札ケースを渡すのでしたっけ。
たぶん「列」という概念がキーになると思うんですが。
シーケンス図
名簿確認担当者がすべてをコントロールしていますね。参加者と受付側とのダイナミズムを書くには,シーケンス図では無理だったかもしれません。
|
(株)NEC情報システムズ 大菅さん、田中さん、高木さん、庄司さんのモデル |
エンティティの分析が甘い部分があります。
- イベントの分析がありません。
- 案内係がクラス一つ単独で、アクティビティ図の処理と対応していません。
1.配置図
- 典型的な3階層アーキテクチャにおけるパフォーマンス・チューニング(ロード・バランシング)と類似のモノとして問題領域を捉えようというアイデアは素敵です。しかしクラス図の方にはそういう設計レベルに相当するような記述が入っておらず、残念ながら企画倒れになってしまっていますね。
- 「クライアント」から「サーバ」への多重度は本当に「1..*」ですか? あるいは、「データソース」から「サーバ」への多重度は本当に「1」ですか?
2.クラス図
- 関連間にかかっている{XNOR}という制約は読み手に上手く伝わらないと思います。コメントの記述を読むと、どちらかというとANDに近いように思われますが…。もし、ライフサイクルが完全に一致する関連であるなら、これらを一本の関連にまとめられないか考えてみると良いかもしれません(もしかしたら関連クラスなどが出てくるとまとめ易くなるかも)。
- 「会場受付」と「来場者」との間の関連の限定子のキーは「受付番号」ではなくて「受付番号の(ある)範囲」ですね?この構造はちょっと伝わりにくいかも。
3.アクティビティ図
- 現実的には事前に通知された受付番号を忘れてしまったお客様への対処とか考えなくてはならないでしょうね。
1.配置図
- 配置図の利用はおもしろい着眼点ですが、誤解を生まないよう目的を明確に説明する必要はあります。クライアントとサーバの多重度、サーバとデータソースの多重度など業務のボトルネックを示すのに有効だと思います。
2.クラス図
- 来場者と申し込みの間の来場者側の多重度は1でしょう。
- 申し込みと懇親会や入金との関連が適切にモデル化できていません。
- 来場者と会場受付との間の限定子「受付番号」の利用は不適切。
- 入金と配布物のあいだの{XNOR}も混乱を招きそうです。
3.アクティビティ図
- 業務フローの分析が甘く現実的でない部分があります。
- レーンとクラス図との対応が考えられていなません。
- 実際には「配布物がない」場合の対処は、拒否ではなく再発行ではないでしょうか。
クラス図
{xnor}って初めて見ました。norの排他ですか。andとは違うのですか?
これも多重度1:1がおかしいです。常に同時に起こるものの概念識別ってできないと思うのですが。
限定子「受付番号」の「受付番号」属性は「申し込み」にありますが,ナビゲーションできますか。
|
おまけ 参考回答例の問題点 |
1.クラス図
- 名札の整理のモデル化が1:1を多用し、様々な可能性が検討できていない
- お金関係のモデル化がいいかげん。セミナーの入金と懇親会の入金が分けてモデル化できていない
2.アクティビティ図
- 来場者1人の視点でのフローになっており、受付担当の仕事の負荷が表現できていない。
3.ステートチャート図
- ユーザー行動分析という点では意味のある図だが、受付担当の振る舞いのモデル化ではない。
|
モデリングバトルページに戻る