Я моделирую цикл в диаграмме активности UML. Он хорошо работает с узлами простого состояния (диаграмма 1), но я ищу более выразительный способ подчеркнуть семантический цикл цикла. Поэтому я пришел в "регионы" или "прерываемые регионы", которые показаны здесь и там, но я не смог найти много действительно удовлетворяющих примеров.
Мой пример - это функция, которая обрабатывает сообщения определенного списка. Цикл прерывается, как только будет найдено первое правильное сообщение, тогда сообщение обрабатывается, и функция возвращает true. В противном случае он возвращает false (пожалуйста, никаких комментариев о смысле или глупости, это только для образца).
Диаграмма 1: использует старую условную условную схему node. По правде говоря, легче контролировать поток управления по стрелкам, но нет "ЛОП", есть только "если".
Диаграмма 2:
- (положительное) условие выхода корректно, используя прерывистый край? Правда, он может быть частью секции [test] цикла вместе с итератором.
- BTW: как итерационный символ для петли, наилучшим образом выраженный в UML?
- Правильно ли выполняется действие final node внутри тела цикла (т.е. когда условное "сообщение действительное?" дает "нет" )? Как-то неправильно использовать конечный node здесь, но как еще я могу выразить поток управления одним циклом?
Функциональность обеих диаграмм должна быть эквивалентной:
Изменить: еще одна диаграмма, которая реализует предложения от Steph:
- Начальный и конечный node внутри тела цикла
- "дальнейшая обработка" теперь находится внутри тела цикла. Ну... ОК здесь, но могут быть и другие циклы, где я бы предпочел бы это снаружи. Тогда я мог бы изменить дизайн в любом случае...
- "Следующее сообщение" также можно рассматривать как сам объект итератора вместо действия "(предоставить) следующее сообщение" из исходной диаграммы.
- Две стрелки потока объектов могут быть немного переполнены, но я думаю, что они верны.