Динамическая модель банковской сети

В качестве примера применения рассмотренных принципов построения динамической модели построим динамическую модель банковской сети. Начнём с составления и изучения сценариев.

ATM просит клиента вставить карточку

клиент вставляет карточку

ATM принимает карточку и читает её номер

ATM просит ввести пароль

клиент вводит «1234.»

ATM передаёт номер и пароль в консорциум,

консорциум проверяет номер и пароль,

определяет код банка – «39» и сообщает ATM, что запрос принят

ATM просит клиента (с помощью меню на экране) выбрать вид

проводки

(снятие, вклад, перевод, запрос)

клиент выбирает снятие

ATM спрашивает клиента, какова требуемая сумма

клиент вводит $100

ATM убеждается, что введённая сумма в пределах лимита и

просит консорциум выполнить проводку,

консорциум передаёт запрос в банк,

банк выполняет проводку и возвращает новое значение баланса

счёта

ATM выдаёт сумму и просит клиента взять её

клиент берёт деньги

ATM спрашивает, не нужно ли клиенту что-то ещё

клиент вводит нет

ATM печатает счёт, выдаёт карточку и просит клиента взять их

клиент берёт счёт и карточку

ATM просит (другого) клиента ввести карточку

 

Рис. 2.53. Нормальный сценарий для банковской сети

 

На рисунке 2.53 представлен нормальный сценарий обслуживания клиента в банковской сети; один из возможных сценариев, содержащих исключительные ситуации, показан на рисунке 2.54.

Для каждого сценария можно составить соответствующую трассу событий (рис. 2.55). Для этого выделяем в сценарии имена событий (событиями являются все сигналы, вводы данных, решения, прерывания, переходы и действия, выполняемые клиентом или внешними устройствами), указывая для каждого события объект, порождающий это событие (активный объект).

Имея трассы событий, можно построить диаграммы состояний объектов проектируемой системы. Банковская сеть есть агрегация определённого числа параллельно и независимо работающих объектов четырёх классов: консорциум, банк, ATM (банкомат) и клиент; поэтому состояние банковской сети определяется как кортеж состояний составляющих её объектов: 1 – объекта класса консорциум, b – объектов класса банк, a – объектов класса ATM (банкомат) и c – объектов класса клиент (a, b, c – количество ATM, банков и клиентов сети соответственно). Классификация объектов, используемая при объектно-ориентированном подходе, позволяет вместо a+b+1 диаграмм состояний построить всего три (диаграммы состояний клиентов строить не нужно, так как их текущее состояние ясно и так).

ATM просит клиента вставить карточку

клиент вставляет карточку

ATM принимает карточку и читает её номер

ATM просит ввести пароль

клиент вводит «9999.»

ATM передаёт номер и пароль в консорциум;

консорциум, проконсультировавшись с соответствующим

банком, отвергает запрос

ATM сообщает, что пароль введён неверно

клиент вводит «1234.»

ATM передаёт номер и пароль в консорциум,

консорциум проверяет номер и пароль,

определяет код банка – «39» и сообщает ATM, что запрос

принят

ATM просит выбрать вид проводки

клиент выбирает снятие

ATM спрашивает, какова требуемая сумма

клиент (раздумав брать деньги) набирает отмену

ATM выдаёт карточку и просит клиента взять её

клиент берёт карточку

ATM просит (другого) клиента вставить карточку

 

Рис. 2.54. Сценарий для банковской сети,

содержащий исключительные ситуации

 

Построение диаграмм состояний начинается с привязки событий к объектам банковской сети (см. рис. 2.56), являющимся источниками этих событий. Сначала рассматриваются нормальные события, потом исключительные. Построение диаграммы состояний объекта (класса) может считаться законченным, когда диаграмма охватывает все рассматриваемые сценарии.

 

Рис. 2.55. Трасса событий в банковской сети

 

Рис. 2.56. Привязка событий к объектам банковской сети

Диаграммы состояний объектов классов ATM (банкомат), консорциум и банк представлены на рисунках 2.57, 2.58 и 2.59 соответственно.

 

Рис. 2.57. Диаграмма состояний объектов класса ATM (банкомат)

Рис. 2.58. Диаграмма состояний объектов класса консорциум

 

Рис. 2.59. Диаграмма состояний объектов класса банк