КОНЕЧНО-АВТОМАТНАЯ ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ 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