4

私は UML を学び始めており、Actor Generalization について質問があります。

College のある種のアプリケーションのユースケース図を書いていると想像してください。私は 2 つのアクターがあることを確認しました。学生と教師。

ここで、簡潔にするために、要件がかなり単純であるとしましょう (そして、私の質問にとってそれほど重要ではありません)。

  • 学生はクラスを検索できます
  • 学生はクラスに登録できます
  • 学生はレポートを提出できます
  • 学生はコース料金を支払うことができます
  • 教師はレポートを採点できます
  • 学生は自分のクラスの 1 つについて教師に連絡できます (電子メール タイプのメッセージですが、すべてシステム内で管理されます)。
  • 教師は自分のクラスの 1 つについてすべての生徒に連絡を取ることができます (すべてシステムによって処理されます)。

すべてがとても良いです。

私が立ち往生する場所はこれです:

  • 学生にはユーザー名とパスワードがあり、システムを使用するにはログインする必要があります
  • 教師にはユーザー名とパスワードがあり、システムを使用するにはログインする必要があります
  • 学生はオンラインポータルからパスワードをリセットできます
  • 教師はオンラインポータルでパスワードをリセットできます

だから私の質問は...システムの一般的なユースケースをどのように処理するのが最善ですか?

一方では、生徒と教師の両方が特殊なタイプのユーザーであり、ユーザー アクターが一般的なユース ケースに関連付けられていることがわかりました (したがって、ユーザーはユーザー名とパスワードを持っており、ログインする必要があります。ユーザーはパスワードを次の方法でリセットできます)。オンラインポータルなど)。

一方、教師と生徒が同じスーパーアクター (正しい用語ですか?) を持っているのは奇妙に思えます。なぜなら、彼らはシステムの 2 つの非常に異なるユーザーであるように見えるからです。したがって、2 つのアクター (学生と教師) を維持し、学生と一般的なユース ケースと教師とを単純に関連付けるべきではありませんか?

私は両方のアプローチを試しました。前述したように、ユーザーの一般化アプローチは、教師と生徒が大きく異なるため気分が悪くなりますが、異なるアクターに対して同じユースケースをいくつか持つことは、最適化されていないように見えます (または冗長であるか、紙の上でおかしく見えるだけです!)。

これについて正解または不正解はありますか、それとも単に好みの問題ですか?

4

1 に答える 1

4

アクターの一般化の最も重要な使用法の1つは、「一般的なアクターの動作を除外する」ことです。

これを行う最良の方法は、ユーザーアクターを抽象化することです。そうすれば、その詳細や、教師と生徒の違いについて心配する必要はありません。「抽象的なアクターの賢明な使用は、図を単純化し、読みやすさを向上させます」。

だから私は一般化して行くと言いますが、親アクターを抽象化します。あなたが言ったように、そうしないことはまったく間違っていませんが、間違っていても正しくもありません。

引用はUML2と統一プロセス-セクション5.2-アクターの一般化からのものです。

于 2013-03-17T22:06:42.687 に答える