Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ.

Презентация:



Advertisements
Похожие презентации
Движение за открытую проектную документацию Анатолий Шалыто Кафедра Компьютерные технологии Санкт-Петербургский государственный университет.
Advertisements

Применение автоматного программирования во встраиваемых системах В. О. Клебан, А. А. Шалыто Санкт-Петербургский государственный университет информационных.
Автор: Вельдер С. Э., аспирант Руководитель: Шалыто А. А., доктор технических наук, профессор, заведующий кафедрой «Технологии программирования» Верификация.
UniMod 1 UniMod: метод и средство разработки реактивных объектно-ориентированных программ с явным выделением состояний Вадим Гуров eVelopers Corp.
Преобразования типов В языке C/C++ имеется несколько операций преобразования типов. Они используются в случае, если переменная одного типа должна рассматриваться.
Автоматное программирование А. А. Шалыто Санкт-Петербургский государственный университет информационных технологий, механики и оптики 2009 г.
Верификация автоматных программ Г. А. Корнеев А. А. Шалыто Санкт-Петербургский государственный университет информационных технологий, механики и оптики.
Исследовательский центр СПбГУ ИТМО «Технологии автоматного программирования» Научный руководитель Шалыто А. А. Кафедра компьютерных технологий Кафедра.
Linux Summit 2004, Хельсинки Движение за открытую проектную документацию Анатолий Шалыто Кафедра Компьютерные технологии Санкт-Петербургский.
Дипломная работа Ивановой О.О., группа 545 Научный руководитель: д. ф.-м. н., профессор Терехов А.Н. Генерация кода по диаграмме активностей.
Моделирование на UML Денис Иванов. Ай Ти Консалтинг.
Текстовый язык автоматного программирования В. С. Гуров, М. А. Мазин, А. А. Шалыто.
Наследование Наследование – это отношение является между классами. class Person { string first_name; int birth_year;... } class Student : Person { float.
Нейро-автоматное управление в машинном обучении Выполнил: Губин Ю.А. ст. гр Руководитель: Шалыто А.А. д.т.н, проф., зав. каф. ТП, СПбГУ ИТМО.
Программировани е Сергей Салищев Занятие 1. Введение.
©Павловская Т.А. (СПбГУ ИТМО) Курс «С#. Программирование на языке высокого уровня» Павловская Т.А.
Обработка исключительных ситуаций Исключительная ситуация (исключение) – это ошибка, возникающая во время выполнения программы. Например, ошибка работы.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Лекция 2. Фундаментальные типы данных и основные конструкции Красс Александр СПбГУ ИТМО, 2008.
b5_java_s4
Транксрипт:

Автоматическая генерация кода программ с явным выделением состояний Канжелев С.Ю. магистрант СПбГУ ИТМО Шалыто А.А. доктор технических наук профессор СПбГУ ИТМО

О чем доклад? Как описать сложную логику работы приложения. Как преобразовать это описание в код максимально удобным способом. Инструментальное средство MetaAuto.

Мотивация Существует разрыв между фазами проектирования и реализации. В большинстве случаев моделируют статическую часть программы с помощью диаграммы классов. Сложную логику невозможно описать. Диаграммы взаимодействия и последовательности бесполезны. Диаграммы состояний использовать сложно.

Что нам нужно? Необходимо научиться описывать сложную логику. Необходимо инструментальное средство для преобразования этого описания в исходный код программы.

Как описывать сложную логику работы программы Программирование с явным выделением состояний.

Программа с явным выделением состояний Явное выделение состояний: Вместо набора флагов – выделенное состояние. Непредвиденные переходы исключаются. Ускорение тестирования.

Описание программы с явным выделением состояний Диаграммы состояний UML или аналогичные (графы переходов автоматов). Требуется автоматическая генерация кода или исполнение программы по графам переходов.

Преимущества программ с явным выделением состояний. Облегчение проектирования Облегчение документирования Ускорение процесса тестирования.

Аналоги Для многих языков программирования не созданы соответствующие инструментальные средства. Существующие инструментальные средства не позволяют настраивать получаемый исходный код.

Процесс генерации исходного кода

Генерация кода подстановки (templates C++); подстановки с исполнением кода (ASP); обработчики данных регулярной структуры (XSLT). Наличие групп состояний. Наличие групповых переходов. Наличие логических выражений.

Пример. Шаг 1 Visio file

Пример. Шаг 2 … … XML file

Пример. Шаг 3 //--- this file is machine generated --- //Model: namespace Automatas { public class BaseAutomata { } } /// <summary> /// /// </summary> public abstract class : BaseAutomata { protected string y = "s0"; public void A(int e) { switch (y) { } } XSLT-шаблон

Пример. Шаг 4 //--- this file is machine generated --- //Model: ModelName namespace Automatas { public class BaseAutomata { } /// /// Lexical analyzer /// public abstract class A2 : BaseAutomata { protected string y = "s0"; public void A(int e) { switch (y) { case "s0": if (e == 0) {z401(); y = "s1";} break; case "s1": if (e == 1) {z200(); y = "s1";} else if (e == 0) {z401(); y = "s1";} break; } /// protected abstract void z200(); /// /// Initialize and return the first match /// protected abstract void z401(); } /// /// Syntactical analyzer /// public abstract class A1 : BaseAutomata { protected string y = "s0"; public void A(int e) { switch (y) { case "s0": if (true) {z200(); Call_A2(0); y = "s1";} break; case "s1": if (x206()) { y = "s4";} else if (x201()){z201(); z301(); y = "s1";} else if (x202()){ y = "s2";} else if (x203()){z203(); y = "s3";} break; case "s2": if (x205()) { y = "s0";} else if (x204()) {z202(); Call_A2(1); y = "s1";} else if (true) { y = "s4";} break; case "s3": if (x207()) {z204(); y = "s1";} else if (true) { y = "s4";} break; case "s4": if (true) {z205(); y = "s0";} break; } /// /// Command in the top of the stack /// /// Is condition correct protected abstract bool x201(); /*Часть входных переменных и действий пропущено*/ } Код программы

Интеграция с MS Visual Studio 2003

Применения При создании самого инструментального средства Созданы шаблоны для языков C#, C++, Assembler Предполагается использовать для встроенных систем настраиваемость простота использования

Вопросы?

Спасибо за внимание Дополнительная информация: