シーケンス図はシステム内のオブジェクト間のメッセージの流れを視覚的に表す重要なUML図です。複雑なフローを整理しながら、誰が何をいつ行うかを理解するのに役立ちます。本記事では、実用的で少し難易度のあるシーケンス図の例とその解説を紹介します。
シーケンス図の基本構造
シーケンス図は、アクター(利用者や外部システム)とオブジェクト(クラスやコンポーネント)を縦方向に並べ、横方向にメッセージや操作を表します。時間は上から下に流れ、操作の順序が明確にわかる設計です。
実例として、オンラインショッピングサイトでの「商品購入フロー」を考えてみます。ユーザーが商品をカートに入れ、決済システムに送信する一連の操作を描きます。
やや複雑なシーケンス図の例
例として、以下のオブジェクト間のやり取りを含むシーケンス図を考えます:User、ShoppingCart、PaymentGateway、InventorySystem、NotificationService。ユーザーの注文から在庫確認、決済処理、通知送信までを表します。
メッセージの流れ。
- User → ShoppingCart: addItem()
- ShoppingCart → InventorySystem: checkStock()
- InventorySystem → ShoppingCart: stockAvailable()
- User → ShoppingCart: checkout()
- ShoppingCart → PaymentGateway: processPayment()
- PaymentGateway → ShoppingCart: paymentConfirmed()
- ShoppingCart → NotificationService: sendConfirmation()
- NotificationService → User: confirmationEmail()
図解のポイント
図では、オブジェクトを横軸に並べ、メッセージを矢印で表します。条件分岐やループはオプションのフレームで囲むことが可能です。例えば、在庫不足の場合は別のメッセージでキャンセル処理を示します。
このようにフローを細かく描くことで、システムの挙動を理解しやすくなります。
文章での解説例
このシーケンス図では、ユーザーが商品をカートに入れるとInventorySystemが在庫確認を行い、在庫があればcheckout処理を進めます。その後、PaymentGatewayで決済を行い、決済完了後にNotificationServiceがユーザーに確認メールを送ります。
分岐やエラー処理も図に追加することで、さらに実用的で現実的なシーケンス図になります。
まとめ
やや複雑なシーケンス図を作成する際は、オブジェクトの整理、メッセージの順序、条件分岐の表現がポイントです。文章での解説と併用することで、システム設計やフロー理解がより明確になります。今回の例のように、複数のオブジェクト間の操作を整理することで、実務で役立つシーケンス図を作成できます。


コメント