Телематика'2002

Всероссийская
научно-методическая
конференция


 

 

РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ СОБЫТИЙНЫХ СИСТЕМ НА ОСНОВЕ ПРОГРАММИРОВАНИЯ С ЯВНЫМ ВЫДЕЛЕНИЕМ СОСТОЯНИЙ

А.А.Шалыто, Н.И.Туккель

Федеральное государственное унитарное предприятие "НПО "Аврора"", Санкт-Петербургский государственный институт точной механики и оптики (технический университет), Санкт-Петербург

Тел.: (812) 247-95-45, e-mail: mail@avrorasystems.com

Если процедурное программирование базируется на терминах "данные" и "процедуры", объектно-ориентированное - на "атрибутах" и "методах", а событийное - на "событиях" и "обработчиках событий", то в автоматном программировании, как и в теории управления, используются три термина: "входные воздействия", "состояния" и "выходные воздействия", причем состояния рассматриваются как абстракции и выделяются на этапе проектирования явно. По аналогии с Н. Виртом, который назвал свою книгу "Алгоритмы + Структуры данных = Программы", может быть введено соотношение: "Состояния + Входные воздействия + Выходные воздействия = Автомат". При этом автомат обычно рассматривается как конечный и детерминированный и предназначается для формального описания логики программ. Универсальность применения автоматов в программировании обоснована в работе [1].
Отметим, что автоматное программирование не противопоставляется процедурному, объектно-ориентированному и событийному, а может использоваться совместно с каждым их них в части описания поведения программ, что продемонстрировано в проектах, приведенных на сайте [2].
Одна из основных особенностей автоматного программирования состоит в том, что для обеспечения связи состояний с переменными введен этап, названный в работе [3] кодированием состояний. Такое кодирование применяется в теории автоматов, однако в традиционном программировании оно выполняется неявно путем эвристического введения флагов, что затрудняет понимание программ. В предлагаемом подходе для кодирования любого числа состояний автомата применяется одна многозначная переменная, что предопределило реализацию автоматов с помощью конструкции switch языка С или ее аналогов, особенностью которых является возможность записи меток case в произвольном порядке. Указанная реализация выполняется формально по графу переходов, визуально описывающему поведение автомата. Под поведением при этом, в отличие от объектно-ориентированного программирования, понимаются не только его внешние проявления, но и внутренняя сущность, связанная с переходами между состояниями, за которыми можно наблюдать по значениям указанной переменной. Понятие "наблюдаемость" введено в программирование в работе [3].
При описании поведения сложных систем обычно используется не один автомат, а система взаимосвязанных автоматов, что позволяет, в частности, описывать параллельные процессы.
Предлагаемый подход, в отличие от других подходов, рассмотренных в работе [3], обеспечивает применение автоматов при проектировании, программировании, документировании и протоколировании.
Такой подход может эффективно применяться при разработке программного обеспечения программируемых логических контроллеров, предназначенных для управления технологическими процессами.
При использовании в качестве управляющих устройств компьютеров технология претерпела изменения [4,5]. При этом входные воздействия были дополнены событиями, автоматы, входные переменные и выходные воздействия стали реализовываться отдельными функциями, а в качестве операционных систем применяются ОС реального времени.
Программы, разрабатываемые по предлагаемой технологии, состоят из системонезависимой и системозависимой частей. Системонезависимую часть образует совокупность взаимосвязанных автоматов. Для систем рассматриваемого класса характерно, что автоматы взаимодействуют по вложенности, вызываемости и обмену номерами состояний. Системозависимая часть состоит из модулей, реализующих обработчики событий, входные переменные, выходные воздействия и вспомогательные функции, в том числе функции протоколирования.
Предложенная технология была использована при создании программного обеспечения модели системы управления двумя дизель-генераторами, функционирующими по одинаковым алгоритмам. Система управления содержит около 50 дискретных входов, 50 аналоговых входов, 50 дискретных выходов, до 20 одновременно активных выдержек времени и 5 видеокадров.
Системонезависимая часть разработанной программы содержит 31 взаимосвязанный автомат, взаимодействие которых показано на соответствующей схеме. Для каждого из автоматов выпускается четыре документа: словесное описание; схема связей автомата; граф переходов автомата; текст созданной по шаблону функции, реализующей автомат.
При отладке программы использовались протоколы, которые автоматически ведутся во время работы программы и записываются в терминах автоматов. Это связывает реализацию программ с их спецификацией.
Для отладки разработанной системы был создан простейший программный имитатор объекта управления, также спроектированный с использованием предлагаемой технологии.
Разработанные программы функционируют под управлением операционной системы QNX 4.25 и графической оболочки Photon 1.14.
Предлагаемый подход охватывает все стадии разработки программного обеспечения, в том числе проектирование и документирование. Полная программная документация на систему управления и имитатор объекта управления содержит около 350 страниц. Ее фрагмент, объемом 50 страниц, опубликован в [2].
Рассмотрение представленной документации свидетельствует о том, что разработанные программы реализуют весьма сложные алгоритмы управления. Их непросто понять, даже используя предложенную технологию, включающую различные схемы, диаграммы и протоколы. Авторам остается только догадываться, насколько возросла бы сложность программирования данной задачи и последующего понимания построенных программ при применении традиционного подхода, в котором для реализации логики используются флаги.
Предложенная технология также была использована при создании подсистемы управления печатью вахтенных журналов [2], в которой применяемые протоколы оказались единственным эффективным способом отладки.
Кроме того предложенная технология использовалась при создании локальной системы управления насосами. При этом сначала была создана модель системы в среде быстрой разработки "Flora" [6], предназначенная для отладки функциональных алгоритмов при отсутствии аппаратуры (микроконтроллера фирмы "Siemens"). Дальнейшая отладка программы также выполнялась на модели. После этого системонезависимая часть программы, состоящая из 12 взаимосвязанных автоматов, была перенесена на микроконтроллер без изменений.
Кроме практического опыта авторов в области применения автоматного подхода к программированию, в подтверждение его достоинств можно привести, например, цитату из работы [7]: "Я знаю людей из "Боинга", занимающихся системами стабилизации самолетов с использованием чистой теории автоматов. Даже трудно себе представить, что им удалось сделать при помощи этой теории".
Литература
1. Шалыто А.А., Туккель Н.И. От тьюрингова программирования к автоматному //Мир ПК. 2002. ╧2.
2. www.softcraft.ru (раздел "Автоматы").
3. Шалыто А.А. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998.
4. Шалыто А.А., Туккель Н.И. Программирование с явным выделением состояний //Мир ПК. ╧ 8,9.
5. Шалыто А.А., Туккель Н.И. SWITCH-технология - автоматный подход к созданию программного обеспечения "реактивных" систем //Программирование. 2001. ╧ 5.
6. Шалыто А.А., Туккель Н.И., Ваганов С.А. Повышение централизации управления при программировании "реактивных" систем /Труды международной научно-методической конференции "Телематика'2001". СПб.: СПбГИТМО (ТУ), 2001.
7. Карпов Ю.Г. Теория алгоритмов и автоматов. СПб.: Геликон Плюс, 2000.

 


Санкт-Петербург, 3 - 6 июня 2002 года,
Всероссийская научно-методическая конференция "Телематика'2002"