Первая публикация по автоматному программированию.
А.А. Шалыто
Журнал «Судостроительная промышленность».
Серия «Автоматика и телемеханика». 1991. Вып.13, с. 41-42.
I. Системное проектирование.
1. Описание объекта управления с выделением источников и приемников информации и указанием его свойств.
2. Описание «алгоритма» управления, заданного заказчиком.
3. Дополнение «алгоритма», учитывающее опыт разработки.
4. Выбор органов управления и средств представления информации.
5. Построение схемы связей «органы управления управляющий автомат органы управления средства представления информации».
6. Представление в случае необходимости управляющего автомата в виде взаимосвязанной системы управляющих автоматов.
7. Декомпозиция каждого управляющего автомата на автомат и функциональные элементы задержки.
II. Проектирование формальной спецификации автомата или композиции автоматов.
8. Выбор языка спецификаций, позволяющего в доступной форме согласовать с заказчиком поведение автомата и легко перейти к программе. Выполнено сравнение функциональных схем, схем алгоритмов и графов переходов и обоснован выбор последних в качестве языка спецификации.
9. Построение исходного графа переходов для каждого автомата с учетом взаимодействия автоматов.
10. Обеспечение полноты и непротиворечивости графа переходов для каждого автомата.
11. Согласование системы взаимосвязанных автоматов (формальной спецификации) с заказчиком.
12. Построение формальной спецификации для функциональных элементов задержки.
13. Построение формальной спецификации для модели объектов управления.
III. Логическое проектирование автоматов.
14. Выбор структурной модели каждого автомата (автомат без выходного преобразователя, автомат Мура и т.д.) и разновидности, зависящей от расположения технологических элементов задержки в модели.
15. Выбор вида кодирования состояний каждого автомата (принудительное, логарифмическое, многозначное и т.д.). Обоснован выбор многозначного кодирования.
16. Выбор алгоритмической модели программной реализации каждого автомата (система булевых формул, таблица переходов, схема алгоритма, конструкция switch). Обоснован выбор конструкция switch.
17. Построение алгоритмической модели каждого автомата.
18. Оптимизация булевых формул, помечающих дуги графов переходов (раздельная или совместная).
19. Выбор и построение алгоритмической модели функциональных элементов задержки.
20. Выбор и построение алгоритмической модели объектов управления.
IV. Программирование
21. Выбор языка программирования.
22. Программирование взаимосвязанной системы автоматов, функциональных элементов задержки и моделей объектов управления.
V. Проверка правильности программ, применимая для задач небольшой размерности.
23. Построение единого графа проверки.
24. Построение графа функционирования.
25. Корректировка спецификаций и моделей в случае отсутствия изоморфизма графов функционирования и проверки.
26. Программирование графа проверки.
27. Замена программы, реализующей композицию автоматов, программой, реализующей граф проверки, что обеспечивает использование полностью проверенной программы, что практически недостижимо при других подходах.