私は UML を学び始めており、Actor Generalization について質問があります。
College のある種のアプリケーションのユースケース図を書いていると想像してください。私は 2 つのアクターがあることを確認しました。学生と教師。
ここで、簡潔にするために、要件がかなり単純であるとしましょう (そして、私の質問にとってそれほど重要ではありません)。
- 学生はクラスを検索できます
- 学生はクラスに登録できます
- 学生はレポートを提出できます
- 学生はコース料金を支払うことができます
- 教師はレポートを採点できます
- 学生は自分のクラスの 1 つについて教師に連絡できます (電子メール タイプのメッセージですが、すべてシステム内で管理されます)。
- 教師は自分のクラスの 1 つについてすべての生徒に連絡を取ることができます (すべてシステムによって処理されます)。
すべてがとても良いです。
私が立ち往生する場所はこれです:
- 学生にはユーザー名とパスワードがあり、システムを使用するにはログインする必要があります
- 教師にはユーザー名とパスワードがあり、システムを使用するにはログインする必要があります
- 学生はオンラインポータルからパスワードをリセットできます
- 教師はオンラインポータルでパスワードをリセットできます
だから私の質問は...システムの一般的なユースケースをどのように処理するのが最善ですか?
一方では、生徒と教師の両方が特殊なタイプのユーザーであり、ユーザー アクターが一般的なユース ケースに関連付けられていることがわかりました (したがって、ユーザーはユーザー名とパスワードを持っており、ログインする必要があります。ユーザーはパスワードを次の方法でリセットできます)。オンラインポータルなど)。
一方、教師と生徒が同じスーパーアクター (正しい用語ですか?) を持っているのは奇妙に思えます。なぜなら、彼らはシステムの 2 つの非常に異なるユーザーであるように見えるからです。したがって、2 つのアクター (学生と教師) を維持し、学生と一般的なユース ケースと教師とを単純に関連付けるべきではありませんか?
私は両方のアプローチを試しました。前述したように、ユーザーの一般化アプローチは、教師と生徒が大きく異なるため気分が悪くなりますが、異なるアクターに対して同じユースケースをいくつか持つことは、最適化されていないように見えます (または冗長であるか、紙の上でおかしく見えるだけです!)。
これについて正解または不正解はありますか、それとも単に好みの問題ですか?