В дополнение. Р-схемы в подобном стиле, как приведено выше, могут заменить ряд UML-схем. Например,
здесь есть диаграмма последовательностей и временная диаграмма. Сделаем аналоги.
Прежде всего, обращаю внимание на то, что алгоритмические Р-схемы по своей сути есть и диаграммы действий, и диаграммы состояний "в одном флаконе". И отдельно фантазировать над каким-нибудь
state diagram нет необходимости (
здесь отражена разница "state diagrams versus flowcharts").
В
этой выдержке (
отсюда) пример Р-схемы, где условные состояния заданы явно (только подписаны не как спецвершины). Выделю отдельно рисунок самой схемы:
Вложение:
r_algstate.PNG [ 23.63 КБ | Просмотров: 5002 ]
Возможны вложенные (внешние) состояния -- через блоки (например,
здесь подробнее об общих состояниях):
Вложение:
r_specst.jpg [ 4.91 КБ | Просмотров: 5002 ]
Итак, составим некий аналог вот такой временной диаграммы из примера выше по ссылке:
Вложение:
uml_time.jpg [ 68.81 КБ | Просмотров: 5002 ]
Р-схема примерно будет такая:
Вложение:
r_time.PNG [ 411.51 КБ | Просмотров: 5002 ]
где в первом условном столбце выделены "роли" -- значения предикатов начальных дуг. Далее весь процесс разделяется на фазы, которые задаются в заголовке столбца: в скобках -- состояние, надпись над линией -- время, подпись -- сущность фазы. Описывать фазы можно как угодно, например, указывать только состояния, добавлять информацию о типах данных, контрольные выражения ("assert") и т.п. При желании, для выделения времени можно нарисовать отдельную шкалу над схемой. Или же включить время и/или иные важные показатели в значение условного состояния. Тогда, фактически, возможен универсальный формат заголовка фазы: в скобках -- состояние, надпись -- идентификатор фазы, подпись -- контрольное выражение (тип данных, assert). Любой элемент может отсутствовать.
В 4-м столбце (фаза 3) не указано общее состояние в заголовке, а для каждой дуги через спецвершину определено своё состояние в этой фазе (для каждой роли).
Для подобной диаграммы последовательности операций:
Вложение:
uml_seq.jpg [ 18.73 КБ | Просмотров: 5002 ]
требуется дополнительный "финт" -- введение отложенной связи между вершинами, задаваемой пунктирной линией:
Вложение:
r_sequent.PNG [ 259.85 КБ | Просмотров: 5002 ]
Здесь через первый столбец введены "акторы", в первой фазе одновременно выполняют действия акторы 1 и 2 (над дугами нет предикатов-условий), в фазе 2 работает актор 3, где по результатам при каких-то условиях согласно предикату дуги возможен переход на фазу 1 и повтор действий, в фазе 3 -- актор 2, и завершает актор 1, при этом возможна развилка его действий.
Опять же, как можно заметить, преимущество Р-схем в структурности. В UML-диаграммах невозможно выделять ветвления, циклы, блоки и т.п., или приходится довольствоваться кашей, как
interaction overview diagram.