Логотип Информационно-коммуникационные технологии в образовании

XI Всероссийская научно-методическая конференция "Телематика'2004"

Секция: B. Наукоемкие компьютерные технологии: высокопроизводительные вычисления, ИПИ-технологии, программирование


UNIMOD - ПРОГРАММНЫЙ ПАКЕТ ДЛЯ РАЗРАБОТКИ ОБЪЕКТНО-ОРИЕНТИРОВАННЫХ ПРИЛОЖЕНИЙ НА ОСНОВЕ АВТОМАТНОГО ПОДХОДА

Гуров В.С., Мазин М.А., Шалыто А.А.

Санкт-Петербургский государственный университет информационных технологий, механики и оптики , Санкт-Петербург

Текст доклада

  В последнее время широкое распространение получили пакеты для проектирования программ на языке UML [1]. Они позволяют разработчику описывать модель программы с помощью набора диаграмм. В дальнейшем диаграммы могут быть преобразованы в код на целевом языке программирования.
  В языке UML существуют диаграммы для описания как статической структуры программы (диаграммы классов), так и для описания поведения объектов (диаграммы состояний, диаграммы взаимодействия, диаграммы последовательности вызовов).
  Существует множество методологий для моделирования статической структуры программ, а также для получения кода на целевом языке. Описание же поведенческой части программы, как правило, носит неформальный характер. Отсутствует семантическая связь с создаваемым в последствии кодом. При наличии сложной логики достаточно трудно применять диаграммы состояний в виде, предлагаемом авторами UML.
  В работе [2] предложен метод проектирования событийных объектно-ориентированных программ с явным выделением состояний, названный "SWITCH-технологией". Особенность этого подхода состоит в том, что поведение объектов описывается с помощью конечных автоматов, представляемых в форме графов переходов с нотацией, предложенной в работе [3]. Существуют утилиты, позволяющие автоматически получать код из графов переходов [4].
  Настоящая работа посвящена описанию разработанного авторами программного пакета UniMod. Этот пакет реализует подход, описанный в работе [5], и решает задачи автоматизации построения событийных объектно-ориентированных программ с явным выделением состояний. Для обеспечения переносимости создаваемых приложений применяется язык программирования Java и язык разметки XML. Для проектирования конечных автоматов используется методология SWITCH-технологии и унифицированный язык моделирования UML. Схема связей автомата, записывается с помощью диаграммы классов, а граф переходов - с помощью диаграммы состояний.
  Программный пакет UniMod состоит из следующих частей:
  - ядро, содержащее объектную метамодель конечного автомата, алгоритмы разбора и интерпретации булевских выражений, алгоритмы проверки корректности конечного автомата и среду исполнения XML-описания модели конечного автомата;
  - встраиваемый модуль для среды разработки диаграмм на языке UML, который помогает создавать схемы связей автомата и графы переходов в виде UML-диаграмм, а также выполняет генерацию XML-описания.
  Задача проверки корректности графа переходов, включает в себя:
  - проверку достижимости каждого простого (без вложенных) состояния;
  - проверку единственности начального состояния для каждого сложного состояния;
  - проверку единственности перехода при любом сочетании события и значений входных переменных (непротиворечивость);
  - проверку наличия переходов при любых сочетаниях событий и значений входных переменных (полнота).
  Множество достижимых состояний строится обходом графа переходов "в глубину". Проверка единственности начального состояния осуществляется последовательным просмотром каждой вершины графа. Непротиворечивость означает, что условия на всех исходящих переходах попарно ортогональны, а полнота - что конъюнкция всех переходов равна единице.
  Для разбора булевских формул в условиях на дугах графа применялась библиотека ANTLR [7]. Она позволяет по заданной LL(k) грамматике, строить транслятор, который преобразует входной поток в синтаксическое дерево разбора. Полученное дерево можно интерпретировать во время выполнения, а также трансформировать в другое дерево.
  В программный пакет UniMod входит также встраиваемый модуль для среды ArgoUML [8]. Этот модуль, в частности, позволяет упростить процесс создания схем связей и графов переходов автоматов.
  Модуль представляет в виде дерева структуру разрабатываемого конечного автомата. Узлами дерева являются объекты управления, состояния и переходы между состояниями. Узлу, который представляет объект управления, сопоставлен класс на схеме связей. Узлу, представляющему состояние - состояние на графе переходов. При выделении какого-либо узла в дереве, открывается диаграмма, на которой присутствует соответствующий элемент, и он выделяется. Такой подход, предложенный авторами, позволяет легко ориентироваться в структуре создаваемого конечного автомата.
  Модуль также отображает ошибки проверки корректности автомата. Эти ошибки делятся на два класса - синтаксические и семантические. К синтаксическим относятся такие ошибки, как отсутствие имени состояния или неправильное имя объекта управления. Узлы, содержащие синтаксические ошибки, выделяются в дереве красным цветом.
  Узлы, содержащие семантические ошибки, выделяются синим цветом. К семантическим относятся такие ошибки как наличие более одного начального состояния, недостижимость состояния, неполнота или противоречивость множества исходящих переходов из состояния.
  Разработанный метод апробирован при создании ряда приложений и показал свою эффективность. К таким приложениям относятся, например: клиент-серверное приложение мгновенного обмена сообщениями [9] и задача о преступниках (http://is.ifmo.ru/?i0=reflections&i1=problems).
  Программный пакет UniMod позволяет:
  - сократить объем ручного программирования;
  - при наличии библиотеки требуемых объектов управления отказаться от ручного программирования;
  - использовать диаграммы классов и графы переходов в составе проектной документации;
  - формально и наглядно описывать логику поведения программы и модифицировать ее, изменяя только графы переходов;
  - упростить сопровождение проекта вследствие повышения централизации логики программы.
  Дистрибутив, исходные тексты, документация и примеры использования программного пакета UniMod представлены на сайте http://unimod.sourceforge.net.
  
  Литература
  1. Буч Г., Рамбо Д., Джекобсон А. Язык UML. Руководство пользователя. М.: ДМК, 2000. - 320 с.
  2. Шалыто А.А., Туккель Н.И. Танки и автоматы //BYTE/Россия. 2003. №2, с. 69-73. http://is.ifmo.ru (раздел "Статьи").
  3. Шалыто А.А., Туккель Н.И. SWITCH-технология - автоматный подход к созданию программного обеспечения "реактивных" систем //Программирование. 2001. №5, с. 45-62. http://is.ifmo.ru (раздел "Статьи").
  4. Головешин А. Использование конвертора Visio2SWITCH. http://is.ifmo.ru.
  5. Гуров В.С., Нарвский А.С., Шалыто А.А. Автоматизация проектирования событийных объектно-ориентированных программ с явным выделением состояний //Труды X Всероссийской научно-методической конференции "Телематика-2003". СПб.: СПбГИТМО (ТУ). 2003. http://tm.ifmo.ru.
  6. Кормен Т., Лайзерсон Ч., Ривест Р. Алгоритмы. Построение и анализ. М.: МЦМНО 2000. - 960 с.
  7. ANTRL (ANother Tool for Language Recognition). http://antlr.org/
  8. ArgoUML. http://argouml.org.
  9. Гуров В.С., Шалыто А.А. Построение простого клиент-серверного приложения на основе автоматного подхода (ICQ и автоматы). http://is.ifmo.ru (раздел "Проекты").
  

Контактная информация

e-mail: vgurovevelopers.com, mazinerain.ifmo.ru
© 2003-2014 Государственный научно-исследовательский институт информационных технологий и телекоммуникаций
(ФГАУ ГНИИ ИТТ "Информика")
Rambler's Top100