КОНЕЧНО-АВТОМАТНАЯ ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ

реклама
КОНЕЧНО-АВТОМАТНАЯ ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ
THE FINITSTATE AUTOMATION TECHNOLOGY OF PROGRAMMING
В.С.Любченко
АКБ "Алекскомбанк" ЗАО, Александров
Тел.: (09244) 2-34-36, e-mail: [email protected]
Технология – это "совокупность производственных методов и процессов в определенной отрасли производства, а
также научное описание способов производства". Можно ли назвать представленное в [1,2] технологией? Покажем это,
рассмотрев этапы создания программных проектов.
Проектирование
Формальная модель конечного автомата (КА) и сеть из множества КА предоставляют разработчику гибкие
структурные средства для отображения параллельного взаимодействия как на уровне отдельных компонентов, так и на
уровне их множества. Другие технологии таких возможностей или не имеют, или они ограничены. Параллельные
модели – одно из основных и перспективных направлений в области развития программирования и аппаратных
средств. КА-технология использует модель со средствами представления и описания параллелизма, которые по своим
возможностям не уступают другим моделям, а реализация проще. Применяя стандартные приемы, несложно также
перейти от параллельного конечно-автоматного представления к тривиальному последовательному описанию. Таким
образом, в рамках КА-технологии можно легко и наглядно представлять структуру задачи любой сложности в
параллельном виде. Пример из [1] это демонстрирует. Другие примеры применения конечных автоматов приведены в
[2].
Кодирование
Как реализовать автоматы? Во-первых, существуют формальные методы перехода от модели КА к эквивалентной
блок-схеме[3]. Во-вторых, известны и программные методы реализации автоматов [6]. При выбранном в КА-технологии
методе интерпретации автоматов является принципиальным отделение множества операторов программы от ее
управления. Это 1) полностью соответствует формальному определению программы в виде схемы программы [7] и 2)
удобно для реализации выбранного способа интерпретации автоматов. Кодирование/программирование автоматов в
рамках КА-технологии основано на:
– введении понятия динамичного объекта;
– алгоритм поведения объекта задается моделью конечного автомата;
– язык описания автомата основан на базе табличной формы представления автоматов;
– логика поведения объекта отделена от методов автоматного объекта;
– любые динамичные объекты могут выполняться параллельно. На текущий момент это реализовано с средствами
Microsoft Visual С++ 6.0.
Тестирование
Стоимость выявления ошибки на этапе кодирования в два раза выше, чем на этапе проектирования, а ее
обнаружение при тестировании обходится уже в 10 раз дороже. В рамках КА-технологии применимы приемы
тестирования и отладки, которые зачастую невозможны при других подходах. Отделение множества операторов от
структуры КА-программы позволяет проводить их независимый анализ и даже, например, наследовать алгоритм.
Работа КА-программы легко отслеживается с помощью переменной состояния КА-программы. При этом ошибки КАпрограммы сосредоточены в ее четко определенных функциональных структурных единицах – предикатах, действиях
или управлении. Общность модели позволяет использовать, например, даже методы тестирования из области
проектирования аппаратных средств.
Эксплуатация и сопровождение
С листингом КА-программ работать очень легко, так как отделение логики программы (управления) от ее
операторов делает ее "самодокументируемой". Это свойство позволяет быстро и точно восстановить алгоритм работы
программы/объекта. Модель КА обобщает такие методы разработки программ, как таблицы решений и
программирование с использованием переменной состояния. Эти методы удобны и эффективны не только для
разработки программ, но и для последующего их сопровождения.
Реализация
Автоматная модель и ее параллельный вариант – это универсальная алгоритмическая модель, пригодная для
применения в любой прикладной области. На текущий момент она реализована в форме DLL библиотеки. Виртуальная
КА-машина выполняет функции интерпретации модели КА, реализует параллельную работу компонент. Разработанные
на языке С++ средства описания автоматов и библиотека расширяют объектные возможности языка. КА-технология
хорошо подходит для работы в реальном времени. Реализованный проект обеспечивает реакцию системы с точностью
до 0,01 сек в среде Windows. Это на уровне специализированных систем такого типа.
Выводы
– КА-технология позволяет использовать и внедрить весьма эффективные математические методы разработки,
тестирования и отладки программ.
– Табличное представление КА легко реализовать аппаратно, что позволяет говорить уже не об интерпретации, а
о прямой реализации автоматов.
– КА-технология – параллельная технология.
– Автоматная модель наделяет объекты динамическими свойствами.
1
Сравнение SWITCH-технологии и КА-технологии
Технологией разработки программного обеспечения, описанная в [6], и КА-технология описывают алгоритм
программы моделью конечного автомата, но, однако, в конечном итоге используют отличающиеся автоматные модели.
В SWITCH-технологии – модель взаимосвязанных графов переходов, в КА-технологии – сетевая модель структурных
автоматов. Основное отличие рассматриваемых технологий в реализации логики автоматных программ. В SWITCHтехнологии она реализуется переводом автоматного описания в программные инструкции языка программирования
(типа SWITCH), в КА-технологии реализуется прямое исполнение автоматов путем интерпретации его исходного
табличного представления.
В итоге КА-технология по сравнению с SWITCH-технологией:
– предлагает более короткий и удобный путь реализации автоматов;
– параллелизм формальной модели в КА-технологии имеет более широкие возможности, чем у модели,
положенной в основу SWITCH-технологии;
– КА-технология, в отличие от SWITSH-технологии использует возможности объектной парадигмы, наделяя ее
новыми возможностями.
Литература
1. Любченко В.С. Новые песни о главном (римейк для программистов). "Мир ПК", № 6/98, с.114-119.
2. Любченко В.С. Мы выбираем, нас выбирают… К проблеме выбора алгоритмической модели. "Мир ПК", № 3/99.
3. Буч Г. Объектно-ориентированное проектирование с примерами применения: Пер. с англ. – М.: Конкорд, 1992.
– 519 с.
4. Баранов С.И. Синтез микропрограммных автоматов. – Л.: Энергия, 1979. – 232 с.
5. Шлеер С., Меллор С. Объектно-ориентированный анализ: моделирование мира в состояниях: Пер. с англ. –
Киев: Диалектика, 1993. – 240 с.
6. Шалыто А.А., Туккель Н.И. SWITCH-технология: автоматный подход к созданию программного обеспечения
"РЕАКТИВНЫХ" систем. www.softcraft.ru
7. Котов В.Е . Введение в теорию схем программ. Новосибирск.: Наука, 1978. – 258 с.
2
Скачать