Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.



run to completion (выполнение до завершения)

Переход или серия действий, которые должны быть завершены целиком, без перерывов.
См. action; atomic; state machine; transition.

Семантика

В конечном автомате некоторые действия или серии действий атомарны, то есть их нельзя прекратить, отменить или прервать с помощью других действий. При запуске перехода все действия, которые были к нему прикреплены (или те, которые он вызвал), должны быть завершены все вместе, единой группой, в которую входят действия при входе и выходе для тех состояний, куда данный переход входит, и тех, которые он покидает. Говорят, что переход "выполняется до завершения", то есть непрерывно, потому что он не ждет других событий и не принимает их.
Семантику такого непрерывного выполнения можно противопоставить семантике ожидания в обычном состоянии. Если состояние активно, то событие может вызвать переход в другое состояние. При этом переход прекратит любую деятельность в данном состоянии. Переход может состоять из нескольких сегментов, связанных в виде цепочки, которая разделяется псевдосостояниями. Несколько таких цепочек могут соединяться или же, наоборот, разветвляться таким образом, что общая модель будет содержать граф, состоящий из многих сегментов, разделенных псевдосостояниями. При этом только первый сегмент цепочки может иметь переключающее событие. Переход запускается тогда, когда в конечном автомате начинается обработка переключающего события. Если удовлетворены сторожевые условия на всех его сегментах, то происходит фактический запуск перехода (при условии, что в это же время не осуществляется какой-то другой переход). Далее происходит последовательное выполнение действий, прикрепленных к сегментам перехода. Если выполнение действий началось, то все действия, принадлежащие сегментам данной цепочки, должны быть выполнены до завершения непрерывного шага (выполнение до завершения).
Во время выполнения непрерывного перехода переключающее событие, которое его инициировало, доступно для действий в качестве текущего события. Таким образом, действия при входе и действия при выходе могут получить аргументы переключающего события. Различные события могут вызвать выполнение действия при входе или действия при выходе, однако при этом действие может отличать тип текущего события в операторе выбора (case).
Поскольку действия обладают такой семантикой (выполняются непрерывно, до завершения), с их помощью целесообразно моделировать присваивания, флаги проверки, простые арифметические действия и прочие виды подобных операций. Более длительные вычисления следует моделировать при помощи деятельностей (которые можно прерывать).

Алфавитный указатель