Исследовательский центр СПбГУ ИТМО «Технологии автоматного программирования» Научный руководитель Шалыто А. А.
Научный руководитель Анатолий Шалыто Доктор технических наук Профессор Заведующий кафедрой технологий программирования СПбГУ ИТМО Предложил автоматное программирование в 1991 году Опубликованы две книги в издательстве «Наука» Работы по грантам РФФИ и министерства образования РФ
О нас Людские ресурсы Кафедра компьютерных технологий СПбГУ ИТМО Исследования проводятся с 2000 года Исследования поддержаны грантами РФФИ и министерства образования РФ Сайт http://is.ifmo.ru
Обоснование Автоматы применяются при проектировании аппаратуры Применяются с 50-х годов Развиты формальные теории Применение автоматов в программировании Разработка компиляторов Описание протоколов взаимодействия Statecharts ???
Направления работы Программирование с явным выделением состояний Автоматное и объектно-ориентированное (ОО) программирование Визуализаторы алгоритмов Инструменты автоматного проектирования Клеточные автоматы Прочие исследования
Программирование с явным выделением состояний Разрабатывается Анатолий Шалыто Никита Туккель Георгий Корнеев Основные направления исследований Автоматное проектирование событийных систем Преобразование программ к автоматному виду Автоматные аналоги «классических» алгоритмов
Программирование с явным выделением состояний Основные понятия Состояние Переходы Входные воздействия События Входные переменные Выходные воздействия Система взаимосвязанных автоматов Вложенные автоматы Вызываемые автоматы
Программирование с явным выделением состояний Преимущества Унифицированный подход к проектированию систем со сложным поведением Выявление логических ошибок на стадии проектирования Проектирование, реализация и отладка в терминах автоматов Удобство документирования
Программирование с явным выделением состояний Области применения Программируемые логические контроллеры Встроенные системы Структурное программирование Объектно-ориентированное программирование Разработка Web-приложений
Автоматное и ОО программирование Разрабатывается Никита Шамгунов Георгий Корнеев Данил Шопырин Основные направления работы Интеграция автоматов в объектно ориетированные программы Автоматное представление объектов
Автоматное и ОО программирование Интеграция автоматов в ОО программы “Оборачивание” автоматов объектами Switch-based представление автоматов Представление автоматов на основе виртуальных методов Представление автоматов на основе виртуальных вложенных классов Объектная декомпозиция автоматов Декомпозиция на состояния Декомпозиция на состояния и преходы Событийные автоматы Обобщенные переходы
Автоматное и ОО программирование Автоматное представление объектов Анализ паттернов проектирования State и аналогов Паттерн проектирования State Machine Язык программирования State Machine
Визуализаторы алгоритмов Разрабатывается Георгий Корнеев Матвей Казаков Направления работы Разработка логики визуализаторов алгоритмов Разработка методов построения визуализаторов алгоритмов Средства построения визуализаторов
Визуализаторы алгоритмов Методы построения визуализаторов алгоритмов “На коленке” Простые визуализаторы: 120+ часов С применением библиотек Простые визуализаторы: 80-120 часов Сложные визуализаторы: 120-180 часов Технология построения визуализаторов Простые визуализаторы: 5-10 часов Сложные визуализаторы: до 40 часов
Визуализаторы алгоритмов Средства построения визуализаторов алгоритмов Библиотека BaseApplet Единый интерфейс визуализаторов Общие подходы к построению Библиотека Vizi Логика представлена системой взаимодействующих автоматов Автоматическая генерация логики визуализатора по XML-описанию Технология построения визуализаторов на базе Vizi http://ctddev.ifmo.ru/vizi
Инструменты автоматного проектирования Разрабатывается Вадим Гуров Максим Мазин Данил Шопырин Направления работы Проект UniMod Библиотека STOOL
Инструменты проектирования Проект UniMod (1) Локальная и удаленная отладка диаграмм в терминах состояний Проверка формальных свойств диаграмм Интерпретируемый и компилируемый подходы Запись автоматов в нотации UML-диаграмм классов и состояний Встраиваемый редактор UML-диаграмм для платформы Eclipse Запуск диаграмм в «одно нажатие»
Инструменты проектирования Проект UniMod (2) Области применения Клиент-серверные приложения для платформ J2ME и J2SE Symbian С++ приложения J2EE Web-приложения Сайт проекта http://unimod.sf.net Проект ведется СПбГУ ИТМО совместно с компанией eVelopers http://www.evelopers.com
Инструменты проектирования Библиотека STOOL Результаты Контроль за состоянием системы Автоматическое протоколирование Обработка исключительных ситуаций Многопоточность Перспективы Внедрение Virtual Methods for States Внедрение Virtual Inner Classes for State
Клеточные автоматы Разрабатывается Лев Наумов Направления работы Теоретические исследования в области клеточных автоматов Создание инструментов распределенного моделирования клеточных автоматов
Клеточные автоматы Теоретические исследования Обобщенные координаты Применение кривых Пеано для моделирования клеточных автоматов Исследование функциональных возможностей клеточных автоматов
Клеточные автоматы Инструменты моделирования Библиотека моделирования клеточных автоматов CAME&L Моделирование на различных решетках Изменяемые метрики пространства Язык задания автоматов Расширяемость (Plugins) Распределенное моделирование http://camel.ifmo.ru
Прочие исследования Мультиметоды Данил Шопырин Автоматный подход к проектированию реактивных мультиагентных систем Борис Ярцев
Прочие исследования Мультиметоды Реализация мультиметодов на ANSI/ISO С++ Константное время вызова мультиметода Раздельная компиляция исходного кода Строгая безопасность типов Не требуются Динамическая память RTTI C-препроцессор
Результаты опубликованы Журналы “Программирование” “Автоматика и телемеханика” “Известия РАН. Теория систем управления” “Искусственный интеллект” Конференции Телеметика 2000-2004 Linux Summit 2003 KIMAS 2003 и 2005
Перспективы Перевод результатов исследований и публикация на английском языке Верификация автоматных моделей с применением темпоральных логик Классификация методов применения автоматов в программировании Применение автоматов для задач искусственного интеллекта
Спасибо за внимание