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