データのリストをプラグインしたときにUserControl/Controlが何をしているか、ユーザーが特定のキーを押したり、テキストを選択したりするとどうなるかを示したいです。
どういうわけか、シーケンス図は、いくつかのループを表示したり、ループ内で何かを実行したりするのにはあまり適していないように感じます。
私は間違っていますか、それともその場合にどう対処できますか?
データのリストをプラグインしたときにUserControl/Controlが何をしているか、ユーザーが特定のキーを押したり、テキストを選択したりするとどうなるかを示したいです。
どういうわけか、シーケンス図は、いくつかのループを表示したり、ループ内で何かを実行したりするのにはあまり適していないように感じます。
私は間違っていますか、それともその場合にどう対処できますか?
ループについて話している場合、ループ内のすべての要素に対して行われる一連の操作があります。
ループ内の操作がかなり複雑な場合は、ループ内で実行される操作をシーケンス図としてモデル化します。
ここで経験則を示すことはできないと思いますが、ループ自体のプロセスが複雑で、ループが比較的単純な場合は、それらを 1 つのシーケンス図で示すことができます。
ループを含むプロセスがそれほど複雑ではないが、ループが複雑である場合、ループの操作のシーケンス図を描き、このシーケンス全体がループによって呼び出されることに注意してください。
必要に応じて、両方のシーケンス図を使用することもできます。
更新:
シーケンス図で「条件」を示すのは簡単ではないため、図にいくつかのメモを追加する必要があります。
検証部分は次のようなものです
do validation
if validation succeeds
proceed to next (business or other) logic
if validation fails
feedback to user (or some other logic)
+----+ +----+ +----------------+ +----------------+
|User| | UI | | Your Validator | | Business Logic |
+----+ +----+ +----------------+ +----------------+
| select | | |
|--------------->| doValidation | |
| |------------------>|----+ |
| | | | Validate |
| | |<---+ |
| | | |
| | | (validation fails: |
| | Validation Fail | feedback to client) |
| |<------------------| |
| | | |
| | | |
| | | (validation succeeds: |
| | | proceed to |
| | | business logic) |
| | | |
| | | someLogic |
| | |----------------------->|
| | | |
更新 2
ケースでシーケンス図を私のように使用するのはなぜですか?
一連の操作を表示する必要があり、開発者はコーディングのためにこの情報を必要とするためです:-)
UML では、おそらく既にご存じのとおり、何も課されません。あなたのチームもあなたが意図した方法でそれを理解していれば、何らかの方法で何かを表現するのはあなたの自由です。これらのメモも役に立ちます。
これについては前に述べておくべきでしたが、if else を示すために「オプション」フラグメントを使用する人もいます。これは多かれ少なかれメモですが(私はこのように見ています)、おそらくより明白です。IF
と のELSE
両方が複雑な 場合にのみ使用します。
+----+ +----+ +----------------+ +----------------+
|User| | UI | | UI - Backend | | Busines Logic |
+----+ +----+ +----------------+ +----------------+
| Add Record | | |
|--------------->| doinsertOrUpdate | |
| |------------------>| |
| | | exists(record) |
| | |----------------------->|
| | | |
____|________________|___________________|________________________|__________
|[Record exists] | | | |
| | | | Get Record | |
| | | |----------------------->| |
| | | | | |
| | | |--------+ | |
| | | | | Set UI Values | |
| | | |<-------+ | |
| | | | | |
| | | | Update Record | |
| | | |----------------------->| |
| | | | | |
| | | Send Message | | |
| | |<------------------| | |
| | | "Record found, | | |
| | | Updated" | | |
|___|________________|___________________|________________________|_________|
| | | |
| | | |
______|________________|___________________|________________________|_________
| [Record does not | | | |
| exist] | | | |
| | | |--------+ | |
| | | | | Generate | |
| | | | | Seqeuence | |
| | | |<-------+ | |
| | | | | |
| | | | Create New Record | |
| | | |----------------------->| |
| | | Send Message | | |
| | |<------------------| | |
| | | "New Record | | |
| | | Created" | | |
|_____|________________|___________________|________________________|_________|
| | | |
| | | |
| | | |
alt ブロックを使用した例については、これを参照してください。