Как показать несколько циклов и делать вещи в нем в диаграмме последовательности? - PullRequest
0 голосов
/ 11 октября 2010

Я хочу показать, что делает мой UserControl / Control при подключении к нему списка данных, что происходит, когда пользователь нажимает определенные клавиши, выбирает текст и т. Д.

Мне кажется, что диаграмма последовательности не совсем подходит для показа нескольких циклов и выполнения операций внутри циклов.

Я ошибаюсь или как я могу справиться с этим делом?

1 Ответ

1 голос
/ 11 октября 2010

Если вы говорите о цикле, то у вас есть ряд операций, которые выполняются для всех элементов цикла.

Я бы смоделировал операции, выполненные в цикле, как диаграмму последовательности, если операции в цикле довольно сложны.

Я не думаю, что у нас здесь могут быть практические правила, но когда процесс с самим циклом сложен, а цикл относительно менее сложен, мы можем иметь их в одной диаграмме последовательности.

Если процесс с циклом не очень сложен, но цикл сложен, то я бы нарисовал диаграмму последовательности операций цикла и заметил, что вся эта последовательность вызывается циклом.

При необходимости вы также можете иметь обе диаграммы последовательности.

Обновление:
Мы должны добавить некоторые примечания к диаграмме, потому что не просто обозначить «условие» на диаграмме последовательности.
Проверка является частью что-то вроде

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, как вы, наверное, уже знаете, ничего не навязано 1026 *. Вы можете свободно что-то обозначать, если ваша команда также понимает это так, как вы хотели. Эти заметки также полезны.

Я должен был упомянуть об этом раньше, некоторые используют фрагмент "option" для обозначения if 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"        |                        |         |
|_____|________________|___________________|________________________|_________|
      |                |                   |                        |
      |                |                   |                        |
      |                |                   |                        |

См. this для примера использования блока alt.

...