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

Slides:



Advertisements
Similar presentations
Схема распределения грантов городам-участникам программы Тасис (TCAS) Экологические гранты для муниципалитетов.
Advertisements

Разработка программного обеспечения (Software Engineering) Ian Sommervillle Часть 4. Реализация ПО: Проектирование с повторным использованием компонентов.
Дипломная работа Ивановой О.О., группа 545 Научный руководитель: д. ф.-м. н., профессор Терехов А.Н. Генерация кода по диаграмме активностей.
Автоматизированная поддержка пользовательской документации Web-приложений, разрабатываемых в среде WebRatio Студент: Дорохов Вадим, 544 гр. Научный руководитель:
ООО «Баркод Маркет».  Инвентаризация имущества – программная система, позволяющая организовать учет любого имущества компании.  Уменьшение неконтролируемых.
Разработка технологии взаимодействия гетерогенных систем с использованием метапрограммирования Константинов Александр, 545 группа Научный руководитель.
Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования Научный руководитель: Я.А. Кириленко.
Беритесь, ребята, Скорей за работу. Учитесь считать, Чтоб не сбиться со счёту.
Эффективность блога как инструмента коммуникации (на примере курса «Информационная эвристика») Е. А. Ефимова Зав.сектором Научной библиотеки УрГУ.
Миллер Дмитрий, 545 группа Научный руководитель: д.ф.-м.н., профессор, А.Н.Терехов Рецензент: к.ф.-м.н, доцент, А.Н. Иванов.
Применение генетического программирования для построения автоматов А. А. Шалыто Г. А. Корнеев Санкт-Петербургский государственный университет информационных.
Виртуальная лаборатория для первоначального обучения проектированию программ Н. Н. Красильников, В. Г. Парфенов, Ф. Н. Царев, А. А. Шалыто Кафедра компьютерных.
1 СПбГУ ИТМО, кафедра Компьютерных Технологий ПРИМЕНЕНИЕ АВТОМАТНОГО ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ СИСТЕМ УПРАВЛЕНИЯ БИЗНЕС- ПРОЦЕССАМИ Евгений Андреевич.
ООП Классы – 2. Ссылки Ссылка – еще одно имя объекта. Используйте ссылки вместо указателя. Это более безопасно. Complex c(10,10); Complex c2& = c; c2+=10;
Translator Widget for Android Сергей Василинец, 345 группа Научный руководитель COO SPB Software Василий Филиппов.
Блок 3. Семейства белков I. Множественное выравнивание Первый курс, весна 2008, А.Б.Рахманинова.
ВЛАДИМИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет прикладной математики и физики.
Применение шаблонов требований для формальной спецификации и верификации автоматных программ Клебанов Андрей, 6538 Науч. рук. Степанов Олег, к.т.н, СПбГУ.
Разработка программного обеспечения (Software Engineering) Часть 2. Создание ПО.
Демидов А.В г. Операционные системы Лекция 3 Процессы.
1 Генерация контекстных ограничений для баз данных Выполнил: Жолудев В. Научный руководитель: Терехов А.Н. Рецензент: Иванов А.Н.
Совместное применение генетического программирования и верификации моделей для построения автоматов управления системами со сложным поведением К. В. Егоров,
Программирование на стороне сервера. Языки для программирования на стороне сервера Языки программирования: Perl PHP Java Технология Microsoft для использования.
Microsoft Solutions Framework Технологии программирования. Курс на базе Microsoft Solutions Framework Семинар 2. Знакомство с построением диаграмм вариантов.
PHP как язык программирования. Типы данных логические величины int, integer – целые числа real, double, float – вещественные числа string – строки array.
Применение генетического программирования для построения автоматов, управляющих системами со сложным поведением Ф. Н. Царев, А. А. Шалыто 2007 год.
EDCWiki Electronic Document Circulation using wiki Система электронного документооборота на основе wiki Участники: Кузьмин Константин, Цыцулин Виталий.
EDCWiki Electronic Document Circulation using wiki Система электронного документооборота на основе wiki Участники: Кузьмин К.А., Цыцулин В. И. Руководитель:
Оптимизация Just – in - time компилятора методом профилирования значений Соколов Андрей Владимирович, ФФ НГУ, 3 курс, Руководитель:
Применение генетического программирования для генерации автомата в задаче об «Умном муравье» Царев Ф.Н., Шалыто А.А. IV Международная научно-практическая.
Верификация автоматных программ Ремизов А.О., д.т.н., проф. Шалыто А.А.
Ряды и произведения sum(expr, n=a..b), где expr – выражение, зависящее от индекса суммирования, a..b – пределы индекса суммирования, Если требуется вычислить.
Пользовательские действия (custom actions) в JSP. JSTL.
Увеличение модульности программного обеспечения на языке Java Курсовая работа студента 345 группы Абишева Тимура Маратовича Научный руководитель: Профессор.
PowerPoint Presentation for Dennis, Wixom & Tegardem Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Применение метода представления функции переходов с помощью абстрактных конечных автоматов в генетическом программировании Царев Ф. Н. Научный руководитель.
Реализация XPath над S-выражениями 2007 Миленин Евгений, гр. 544 Кафедра Системного Программирования Математико-Механический ф-т, СПбГУ Научный руководитель:
Анализ и Проектирование качественных приложений Презентация по книге Крэга Лармана.
Применение генетических алгоритмов к генерации тестов для автоматных программ Законов Андрей Юрьевич Научный руководитель: Степанов Олег Георгиевич, к.т.н.,
Разработка программного средства 3Genetic для генерации автоматов управления системами со сложным поведением Государственный контракт №
Проект «Безопасный браузер» Визовитин Николай Кадашев Дмитрий.
Разработка алгоритмов распознавания текста
Предметно-ориентированное моделирование приложений для платформы Android Никонова Ольга СПбГУ Научный руководитель Брыксин Т.А.
Применение генетических алгоритмов для генерации тестов к олимпиадным задачам по программированию Буздалов М.В., СПбГУ ИТМО.
Объектно-ориентированное проектирование DSP-систем в телекоммуникациях Подготовил: Сергеев Виктор Николаевич СПбГУ, математико-механический Факультет,
Технология верификации управляющих программ со сложным поведением, построенных на основе автоматного подхода Руководитель проекта – А. А. Шалыто Докладчик.
Универсальная интеграция технологии построения отчетов в семейство.NET приложений Презентация дипломной работы Порсева Анатолия, 542 гр. Санкт-Петербург.
«Интернет радио» Разработчик Демидко А.А. Преподаватель Бронштейн М.Е.
TMG Tel: 8 (495) Fax: 8 (477) Technology Management Group ООО «TMG» PayKeeper.
Санкт-Петербургский Государственный Университет Экономики и Финансов
Подход к реализации XQuery Паращенко Олег Санкт-Петербургский Государственный Университет Обнинск, 2004.
1 Week 4 Questions / Concerns Comments about Lab1 What’s due: Lab1 check off this week (see schedule) Homework #3 due Wednesday (Define grammar for your.
1 Учебный курс Введение в JavaScript и CGI Лекция 4 Работа с графикой, гипертекстовые переходы и синтаксис языка кандидат технических наук Павел Брониславович.
1 R E F R I G E R A T I O N A N D A I R C O N D I T I O N I N G Как обновить программное обеспечение в AK-SC 255.
Объектные интерфейсы (.NET) «Школа Инноваций InterSystems 2007»
Язык программирования C#
КРУПНЕЙШАЯ ТЕХНИЧЕСКАЯ КОНФЕРЕНЦИЯ MICROSOFT В УКРАИНЕ Metro приложения: работа с данными Краковецкий Александр, MVP/RD/PhD. DevRain Solutions.
Человеко-машинное взаимодействие Лекция 6 Мерзлякова Екатерина Юрьевна к.т.н. доцент ПМиК.
Пара слов о CBMROOT2 Прокудин Миша. Linux distribution tested ► Debian 3.0 (GSI)  GCC  GLibC ► SLC (ITEP)  GCC  GLibC
Saint Petersburg, 2011 Java Lecture Generics. Quiz ArrayList lst = new ArrayList(); Collection c = lst; lst.add("one"); lst.add(“two"); lst.add(“three");
Push it To The Limits! Blend. Sketch Flow. Докладчик: Андрей Черных.
Bill Campbell, UMB Microsoft's.NET C# and The Common Language Runtime.
04 |Sharing Code Between Windows 8 and Windows Phone 8 in Visual Studio Ben Riga
Microsoft Developer Tour Технологическая экспедиция msdevtour.ru.
Разработка мобильных приложений под Android Чиркунов Кирилл vk.com/chirkunov.
NHibernate что, где, когда Артур Дробинский ЗетаСофт Томск, 2012.
Внимание! Так как файлы с поддержкой макроса невозможно загрузить, необходимо через режим разработчика вставьте этот код (Файл-Параметры-Настройка Ленты-
Через 10 лет программы будут нарисованными, а не написанными
Дизайн корпоративных сайтов SharePoint 2010
Сортировка, поиск и фильтрация данных в базе данных и выборках
Presentation transcript:

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

О чем доклад? Как описать сложную логику работы приложения. Как преобразовать это описание в код максимально удобным способом. Инструментальное средство 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) { <xsl:apply-templates select="state//state[count(state) = 0]" mode="SWITCH_BLOCK"> } <xsl:apply-templates select="//actionNode [generate-id(.) = mode="FUNCTION_DEFINITIONS"> <xsl:apply-templates select="//conditionNode [generate-id(.) = mode="FUNCTION_DEFINITIONS"> } 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 Предполагается использовать для встроенных систем  настраиваемость  простота использования

Вопросы?

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