Найти в Дзене

Как работает банкомат?

Дорогие читатели, здравствуйте. Наш ученик написал интересную статью о том, как работает банкомат. Давайте это почитаем. Предыдущие публикации по финансовым технологиям вы можете найти здесь.
"Конечный автомат (или автомат с конечным числом состояний, Finite State Machine, FSM) — это модель поведения, которая в любой момент времени находится ровно в одном из заранее заданного набора состояний.

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

"Конечный автомат (или автомат с конечным числом состояний, Finite State Machine, FSM) — это модель поведения, которая в любой момент времени находится ровно в одном из заранее заданного набора состояний. Иначе говоря, это симуляция "машины", у которой есть конечный список режимов работы, и она переключается между ними по определенным правилам.

Представьте себе обычный (старый) турникет в метро.

Состояния: их обычно два – заблокирован и разблокирован.

События: опустить жетон.

пройти через турникет.

Переходы (правила): если состояние "заблокирован", и происходит событие "опустить жетон", то переходим в состояние "разблокирован".

Если состояние "разблокирован", и происходит событие "пройти", то переходим в состояние "заблокирован".

В других случаях состояние не меняется (например, если пытаться пройти в заблокированном состоянии, ничего не произойдет).

Это и есть работа конечного автомата. Вот как это работает в NDC (на примере банкомата), который как раз классический конечный автомат. В документации NDC как раз описана таблица состояний.

У банкомата есть конечный набор режимов (состояний), например такие.

Idle (ожидание карты).

ReadingCard (чтение карты).

PinEntry (ввод ПИН-кода).

Processing (связь с банком).

Dispensing (выдача денег).

OutOfService (не работает).

Событиями для банкомата служат:

клиент вставил карту;

клиент нажал кнопку;

пришел ответ от контроллера (процессинга);

сломался принтер;

закончилась бумага.

Переходы (правила) прописаны в конфигурации банкомата. Например.

Текущее состояние: ldle.

Событие: вставлена карта.

Новое состояние: ReadingCard.

Текущее состояние: PinEntry.

Событие: клиент ввел ПИН и нажал "Ввод".

Новое состояние: processing (запрос в банк).

В чем польза от применения состояний и конечного автомата? Такой подход используется в NDC и многих других системах (железо, сетевые протоколы, GUI) по 3 главным причинам.

Предсказуемость: зная текущее состояние и событие, мы всегда точно знаем, что будет дальше. Нет варианта "оно само как-то решит".

Безопасность: банкомат не может выдать деньги, если он не в состоянии Dispensing. Если кто-то попытается стукнуть по нему кувалдой (событие "вандализм"), автомат перейдет в состояние OutOfService и заблокирует все действия.

Простота разработки: вместо писанины сложных условий (if... then... else) разработчик просто рисует таблицу: "В состоянии А при событии Х делаем Y и переходим в состояние В".

В NDC банкомат — это железка, которая просто "гоняет" состояния по кругу согласно загруженной в него таблице (упрощенно). Это делает его поведение строго определенным и надежным. Здесь подробно препарированный пример, и эта простота обманчива – в некоторых случаях конечный автомат становится конченым, например, если рассматривать теорию компиляторов, которая ест мозг всем, кто нырнул в кроличью нору перевода кода высокоуровневых языков программирования на машинные инструкции, но это другая история".

******

Если вам нравятся наши публикации, то вы можете поддержать канал донатом.

Ссылка на донат.

У нас есть много полезных и интересных публикаций.

Наш клуб 800Million совместно с Центром психологической безопасности (ЦПБ)

регулярно проводит финансовые курсы. В этой подборке собрана информация о курсах, отзывы о них, а также рассказано о преподавателе.

А это пост, в котором рассказано обо всех наших технологиях.

Здесь - наши статьи.

Здесь подборка с нашими рассказами о 800Million.

Кроме того, у нашего клуба есть своя картинная галерея нейроживописи.

Стиль - супрематизм. Картины созданы нашим мастером. Любую из работ вы можете заказать для приобретения.