2016-04-01 8 views
1

Как я могу графически представить в диаграммах Statechart, что состояние никогда не запускается более определенного количества раз? Так что это не заканчивается бесконечным циклом. Что-то вродеStatecharts: Ограничить количество выполняемых состояний

assert enterPIN(int p) <= 3 

а затем перейти в другое состояние, если состояние нарушено. Должен ли я включать его как-то в охрану? Или в государственной деятельности?

EDIT:

(CheckPIN)--[invalid]-->(counter| + inc.)--[counter>3]-->(retainCard) 
    ^     | 
    |-----[counter<=3]-----| 

Что-то в этом направлении?

Легенда: (StateName | (+ -) деятельность), переходный период: -> [Guard]

+1

Государственные карты не мои силы, но добавление счетчика, которое меняет действие входа, и охранник должен преуспеть, я думаю. –

+0

@ThomasKilian Я отредактировал мой вопрос, это то, что вы имели в виду? – user8

+0

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

ответ

2

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

H. S. Lahman делает отличный случай для использования автоматов штата Мур в своей книге, Model-Based Development: Applications. Механизмы состояния Moore - это действия, которые происходят при входе в состояния, в отличие от того, где происходят действия при переходе между состояниями. Его наиболее убедительной причиной для использования машин штата Мура является то, что переходы не вырождаются в последовательность вызовов функций, а вместо этого объявляют о завершенных вещах.

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

enter image description here

Вы заметите, что как вещи бывают полностью залита компаундом. Например, вызов пользователю может включать в себя PIN-код, сканирование сетчатки или подкожный чип. Максимальные отказы, разрешенные для каждого из этих режимов аутентификации, могут быть совершенно разными. Эта политика может быть представлена ​​в другом месте.

2

Чтобы дать графический ответ:

enter image description here

Это как бы я его моделировал.

Объект counter обычно не нужен, так как это простой счетчик, и довольно очевидно, что остаток/приращение относится к общему счетчику. Также нет реального <<flow>> к этому счетчику. Кроме того, недостаточно стереотипной зависимости.