Как было отмечено выше, основной критерий оптимальности реализации управляющих автоматов — возможность формального и изоморфного графа переходов в программный код. Это свойство позволяет создать программу (генератор кода), которая будет выполнять указанное преобразование автоматически.
Таким образом, программисту останется только реализовать объект управления — его запросы, команды и множество вычислительных состояний. Код, реализующий логику программной системы, будет сгенерирован автоматически по более высокоуровневому описанию — графу переходов. Программу, выполняющую такое преобразование, логично назвать инструментальным средством автоматного программирования, потому что она позволяет получить максимальную выгоду из применения автоматного подхода. Известны различные программы, позволяющие генерировать код по графам переходов конечных автоматов Однако мы рассмотрим только те из них, которые разрабатывались в контексте автоматного программирования и, соответственно, ориентированы на создание программных систем в целом, а не на реализацию отдельных автоматов. Исторически первым инструментальным средством был конвертор Visio2Switch. Он предоставляет возможность генерации кода на языке C по графам переходов, изображенным с помощью пакета Microsoft Visio в нотации, которая описана в работе и близка к нотации, введенной в разделе 2.2.2. Конвертор Visio2Switch используется в настоящее время при создании программного обеспечения ряда ответственных систем реального времени. Это направление исследований получило развитие в работе, в которой показано, как по графу переходов генерировать код на любом наперед заданном языке программирования. Авторами работы было создано инструментальное средство MetaAuto для поддержки предложенного ими подхода. В основе этого инструментального средства лежит один из известных методов порождающего программирования использование преобразований XML-документов, описанных на языке XSLT. Универсальность средства определяется, во-первых, возможностью обработки различных обозначений на графах переходов, а во-вторых, возможностью генерации текстов программ на различных языках программирования. Для того чтобы иметь возможность генерировать код на определенном языке, необходимо создать для него один или несколько XSLT-шаблонов. В процессе разработки инструментального средства для иллюстрации предложенного перехода были созданы шаблоны для языков C, C# и Turbo Assembler.
3. Объектно-ориентированное программирование с явным выделением состояний