автореферат диссертации по информатике, вычислительной технике и управлению, 05.13.13, диссертация на тему:Методы объектно-ориентированного проектирования и реализации программного обеспечения реактивных систем

кандидата технических наук
Шопырин, Данил Геннадьевич
город
Санкт-Петербург
год
2005
специальность ВАК РФ
05.13.13
Диссертация по информатике, вычислительной технике и управлению на тему «Методы объектно-ориентированного проектирования и реализации программного обеспечения реактивных систем»

Автореферат диссертации по теме "Методы объектно-ориентированного проектирования и реализации программного обеспечения реактивных систем"

На правах рукописи

Шопырин Данил Геннадьевич

Методы объектно-ориентированного проектирования и

реализации программного обеспечения реактивных систем

Специальность 05.13.13 - Телекоммуникационные системы и компьютерные сети

АВТОРЕФЕРАТ

диссертации на соискание ученой степени кандидата технических наук

Санкт-Петербург 2005

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

Защита диссертации состоится «» октября 2005 года в {%_£часов на заседании диссертационного совета Д.212.227.05 в Санкт-Петербургском государственном университете информационных технологий, механики и оптики, 197101, Санкт-Петербург, ул. Саблинская 14, СПбГУ ИТМО.

С диссертацией можно ознакомиться в библиотеке СПбГУ ИТМО. Автореферат разослан «/ ¿Г» сентября 2005 г,

Научный руководитель:

доктор технических наук, профессор Шалыто Анатолий Абрамович

Официальные оппоненты:

доктор технических наук Марлей Владимир Евгеньевич

кандидат физ.-мат. наук Новиков Федор Александрович

Ведущая организация:

Ленинградский отраслевой научно-исследовательский институт связи (Санкт Петербург)

Ученый секретарь совета Д.212.227.05,

Поляков Владимир Иванович

кандидат технических наук, доцент

¿L&Ob-Li

lié

Общая характеристика работы

Актуальность проблемы. При разработке объектно-ориентированного программного обеспечения телекоммуникационных систем актуальна задача проектирования, описания и реализации их поведения. Программные системы можно разделить на три класса: преобразующие, интерактивные и реактивные системы. Реактивные системы взаимодействуют с окружающей средой посредством обмена сообщениями в темпе, задаваемом средой.

Время отклика реактивной системы задается ее окружением. Для реактивных систем характерны детерминированность и параллелизм. Сбои в работе многих реактивных систем крайне нежелательны.

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

Наиболее часто для решения задач проектирования, описания и реализации телекоммуникационных систем используются такие средства как язык описания и спецификации SDL (Spécification and Description Language), универсальный язык моделирования UML (Unified Modeling Language), a также язык синхронного программирования SyncCharts.

Во всех вышеперечисленных языках в качестве средства описания поведения объектов и процессов используются графические языки, основанные на теории автоматов. Однако диаграммы описания поведения объектов в этих языках обладают рядом недостатков:

• громоздкость;

• отсутствие удобных и непротиворечивых способов перехода от спецификации к реализации.

Для устранения этих недостатков с 1991 года в России разрабатывается SWITCH-технопогкя, также известная как «автоматное программирование», предназначенная для спецификации и реализации систем со сложным поведением. Графы переходов, используемые в автоматном программировании, весьма компактны, так как используются совместно со схемами связи автоматов, подробно описывающими их интерфейс. Однако в автоматном программировании остаются недостаточно проработанными следующие вопросы:

• совместное использование объектно-ориентированного и автоматного программирования;

• объектно-ориентированное проектирование программного обеспечения реактивных систем; ____

• объектно-ориентированная реализация программного обеспечения реактивных систем.

Поэтому исследования, направленные на решение проблем проектирования и реализации реактивных систем и совместного использования объектно-ориентированного и автоматного программирования, весьма актуальны.

Целью диссертационной работы является разработка методов объектно-ориентированного проектирования и реализации программного обеспечения реактивных систем, в основном телекоммуникационных, на основе конечных автоматов.

Основные задачи исследования состоят в следующем:

1. Совершенствование методов реализации автоматных систем на основе SWITCH-ткхнопогии.

2. Разработка графической нотации для проектирования автоматных объектов, которая позволяет описывать декомпозицию и структурирование их логики с помощью наследования.

3. Разработка методов реализации автоматных объектов на универсальных языках программирования, обеспечивающих декомпозицию и структурирование логики с помощью наследования.

Методы исследования. В работе использованы методы теории автоматов, объектно-ориентированного проектирования и программирования.

Научная новизна. В работе получены следующие научные результаты, которые выносятся на защиту:

1. Предложен метод реализации автоматных систем на основе библиотеки STOOL (SWITCH-Technology Object Oriented Library), устраняющий ряд недостатков SfVITCH-технологяи.

2. Разработана графическая нотация для проектирования автоматных объектов, которая позволяет описывать декомпозицию и структурирование их логики с помощью наследования.

3. Разработан метод реализации автоматных объектов на основе виртуальных методов, обеспечивающий декомпозицию и структурирование логики с помощью наследования.

4. Разработан метод реализации автоматных объектов на основе виртуальных вложенных классов, обеспечивающий декомпозицию и структурирование логики с помощью наследования.

Результаты диссертации были получены в ходе выполнения научно-исследовательских работ «Разработка технологии программного обеспечения систем управления на основе автоматного подхода», выполненной по заказу Министерства образования РФ в 2001 - 2005 гг., и «Разработка технологии автоматного программирования», выполненной по гаранту Российского фонда фундаментальных исследований №02-07-90114 в 2002 -2003 гг. (http://is.ifmo.ru. раздел «Наука»).

Достоверность научных положений, выводов и практических рекомендаций, полученных в диссертации, подтверждается корректным обоснованием постановок задач, точной формулировкой критериев, а также результатами внедрения методов, предложенных в диссертации, на практике.

Практическое значение работы заключается в том, что все полученные результаты могут быть использованы, а некоторые уже используются, в практической деятельности. Предложенные методы проектирования и реализации автоматных объектов упрощают поддержку и сопровождение программ за счет сокращения дублирования логики автоматов. Предложенные методы реализации автоматных объектов основаны только на стандартных возможностях используемых языков программирования, что снижает риски при их практическом применении. Практическая ценность подтверждается внедрением результатов работы.

Внедрение результатов работы. Результаты, полученные в диссертации, используются на практике:

1. В компании Транзас (Санкт-Петербург) при разработке системы мониторинга мобильных объектов Nävi Manager, и в частности, ее коммуникационного сервера.

2. В компании Транзас (Санкт-Петербург) при разработке каркаса редактора пространственных данных Iris.

3. В учебном процессе на кафедре «Компьютерные технологии» СПбГУ ИТМО при чтении лекций по курсу «Теория автоматов в программировании».

Апробация диссертации. Основные положения диссертационной работы докладывались на научно-методических конференциях «Телематика-2003», «Телематика-2004», «Телематика-2005» (Санкт-Петербург) и ХХХШ конференции профессорско-преподавательского состава СПбГУ ИТМО (Санкт-Петербург, 2004).

Публикации. По теме диссертации опубликовано 7 печатных работ, в том числе в журналах «Информационно-управляющие системы» и «Информационные технологии моделирования и управления».

Структура диссертации. Диссертация изложена на 187 страницах и состоит из введения, пяти глав и заключения. Список литературы содержит 88 наименований. Работа содержит 56 рисунков и две таблицы.

Содержание работы

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

Первая глава содержит обзор современного состояния проблемы проектирования и реализации реактивных систем на основе конечных автоматов.

Для проектирования и реализации реактивных систем на базе конечных автоматов широко применяются такие графические языки, как SDL, UML, а также SyncCharts. В языке SDL конечные автоматы используются для описания поведения системы. Диаграммы Statecharts языка UML добавляют в традиционную модель конечных автоматов такие понятия как иерархия и параллелизм. Язык SyncCharts основан на синхронной гипотезе или гипотезе атомарных реакций.

Одним из недостатков описанных языков проектирования является отсутствие нотации для декомпозиции и структурирования логики конечных автоматов с помощью наследования. В настоящей работе предлагается графическая нотация, устраняющая этот недостаток.

Для устранения некоторых недостатков упомянутых языков, таких, например, как громоздкость, в России разрабатывается 5И//ТСЙг-технология, также известная как «автоматное программирование». Семантика используемых в SWITCH-техяопогт графов переходов близка к семантике языка Statecharts, но не эквивалентна ей. В 5И7ТС7/-технологии вводятся понятия автомат и вложение автоматов, и отсутствуют понятия вложенных и ортогональных состояний. Вложение и ортогонализацяя состояний в 5И7ГС#-технологии реализуется посредством вложения автоматов и введения понятия «система автоматов».

Основными недостатками реализации программ на основе SWITCH-технологии являются использование двух последовательно выполняющихся операторов switch, отсутствие автоматического контроля изменения состояний автоматов и механизмов автоматического протоколирования. В настоящей работе предлагается метод реализации программ, являющийся развитием SWITCH-texaonorw и устраняющий некоторые ее недостатки.

После перехода на объектно-ориентированную методологию программирования, использование конечных автоматов сократилось по причине отсутствия полностью объектно-ориентированных методов их реализации. Многие номинально объектно-ориентированные методы реализации конечных автоматов, на самом деле, больше относятся к структурному программированию.

Наиболее распространенные не объектно-ориентированные методы реализации конечных автоматов основаны на вложенных условных операторах if, вложенных операторах switch, операторах goto и таблицах переходов.

Наиболее известным объектно-ориентированным методом реализации автоматных объектов является паттерн проектирования State. На данный момент известно множество альтернативных вариантов паттерна State.

Известен метод реализации автоматных объектов, при использовании которого состояние автоматного объекта хранится в виде набора указателей на методы, реализующие поведение объекта в данном состоянии. Известны также методы реализации, позволяющие расширять логику автоматных объектов с помощью наследования.

Одним из недостатков упомянутых методов реализации автоматных объектов является отсутствие способов декомпозиции и структурирования логики конечных автоматов с помощью наследования. В настоящей работе предлагаются методы, устраняющие этот недостаток.

Вторая глава содержит описание метода реализации автоматных систем на основе упомянутой выше библиотеки STOOL, которая устраняет ряд недостатков реализации систем на основе SWITCH-технологии. Библиотека STOOL базируется на следующих принципах:

• автоматы, входные и выходные воздействия являются объектами;

• явно вводятся понятия класс автоматов и экземпляр класса автоматов;

• каждый автомат не располагает никакой информацией о других автоматах

• автоматные объекты хранят только свое текущее управляющее состояние. Вычислительные состояния вынесены за пределы системы автоматов и хранятся в специальном объекте - окружении. Библиотека STOOL предоставляет абстрактные базовые классы для реализации автоматов, входных и выходных воздействий, а также «инфраструктуру» для организации системы в целом. Диаграмма основных классов библиотеки STOOL приведена на рис. 1.

Auto - базовый класс для реализации классов автоматов. State - класс, который хранит состояние автомата. Каждый экземпляр класса Auto содержит экземпляр класса State. Класс State обеспечивает протоколирование любого (даже ошибочного) изменения состояния автомата. Input - базовый класс для реализации входных воздействий. Output - базовый класс для реализации выходных воздействий. Impact - класс, управляющий процессом выполнения выходного воздействия, с помощью методов «Выполнить», «Откатить» и «Подтвердить». System - класс, управляющий системой автоматов. Change -класс, управляющий системным переходом. ChangeServer - класс, управляющий созданием и уничтожением системных переходов.

По сравнению с уже существующими методами реализации программных систем на основе SIVITCff-технологии, библиотека STOOL обладает следующими достоинствами:

• для реализации графа переходов используется только один оператор switch;

• различаются действия и деятельности в состояниях;

системы;

Рис. 1. Диаграмма основных классов библиотеки STOOL

• обеспечивается автоматическое протоколирование всех изменений, происходящих в системе автоматов;

• выделено состояние системы в целом;

• обеспечивается возможность повторного использования автоматов;

• реализован механизм обработки исключительных ситуаций;

• обеспечивается поддержка параллельных вычислений.

В работе на примере продемонстрирована целесообразность применения предложенной библиотеки.

Третья глава содержит описание предлагаемой графической нотации для проектирования автоматных объектов. Ее основным достоинством является возможность декомпозиции и структурирования логики поведения автоматных объектов с помощью наследования.

Граф переходов автоматного объекта изображается внутри рамки. Заголовок рамки содержит строку в формате

«Автоматный класс> («Интерфейс»)[ : «Базовый класс> [,«Базовый класс>]].

Состояния автоматного объекта изображаются в виде прямоугольников с закругленными углами. Начальное состояние выделяется жирным прямоугольником. Переходы изображаются в виде направленных дуг. Рядом с каждой дугой располагается спецификация перехода в формате

<Причина> [(<Условие>)] [ / <Действие>].

Базовый класс автомата, если он есть, указывается в заголовке рамки после двоеточия. Все состояния и переходы базового класса неявно переходят в производный автоматный класс. Состояния и группы состояний базового класса, упоминаемые на диаграмме производного класса, помечаются «жирной точкой». Разрешается перегрузка (замещение) переходов базового класса. Дуга перегруженного перехода имеет в качестве своего начала символическое изображение базового класса в виде закрашенной жирной точки.

Внутри рамки автоматного объекта изображается отсортированная по алфавиту таблица сокращений.

Структурирование логики позволяет обобщать поведение, общее для нескольких состояний. На диаграмме поведения состояния, входящие в одну группу, обводятся пунктиром. Состояния, входящие в одну группу, являются потомками одного базового класса состояния. Группы состояний могут вкладываться друг в друга, образуя иерархии.

Рассмотрим, например, семейство классов, предоставляющих доступ к файлу: доступ на чтение (Иеас1Г:11е), доступ на запись (1Яг:^еГ11е) и доступ на чтение/запись (Кеас1УУг2^еГ:11е). Диаграммы поведения этих классов приведены на рис. 2.

Л г

ZJT7

J С

ЙмММЬЛЬ (пи)

o/w ofw

Q г—Ди» ^ ^ wte ) wiMwa

ou^i>7rrJrагг

МЭ/ЯТ W

Г гм^

гтг

"ТГ

Рис. 2. Диаграммы поведения без использования наследования Поведение описанных классов может быть обобщено (выделены одинаковые компоненты) и структурировано с помощью наследования. Диаграмма поведения этих классов, с использованием наследования, приведена на рис. 3.

г -

СЕ

RMtfFHa (FIs): На

г

У—R—dQ

QWpMI Н>

WitMFlto (IF*»: Н»

Mung ачуыпчапяс»

RflwMriliFIt (Fte) s RndFBi, WiikiFli

J \C

\( nxtwrWng

-,-'

¡7)

OFRW FB*.OpMt0ham«, "пи")

А AteAUdO

w NKWHHO

Рис. 3. Диаграммы поведения с использованием наследования Автоматные классы ReadFile и WriteFile являются потомками класса File. Абстрактный автоматный класс File структурирует логику, вводя группы состояний closed и opened. Автоматный класс ReadWriteFile является потомком классов ReadFile и WriteFile. Все состояния и перехо-

ды, определенные в базовых классах, неявно переходят в класс ReadWriteFile.

Поведение любого из автоматных классов может бьггь расширено с помощью наследования. На рис. 4 приведена диаграмма поведения автоматного класса AppendFile, расширяющего логику автоматного класса ReadWriteFile, добавляя в него еще одно состояние - appending. Расширение происходит инкременталыю, без изменения уже существующих автоматных классов.

í App»rntFIU (IFtH RMdWrttoni»

¡OFA IFta Орпфмп» 'я")

¡ " ) ^ .....- («мола Г*аИп0ятгдлямм*см»аем«Г

j

Рис. 4. Диаграмма поведения класса AppendFi lee использованием наследования Диаграмма поведения класса AppendFile приведенная на рис. 4, эквивалентна диаграмме поведения класса AppendFile, приведенной на рис. 5, которая построена без использования наследования. Отметим, что использование наследования значительно сокращает дублирование состояний и переходов.

Рис. 5. Диаграмма поведения класса АррепйГ11е без использования наследования Таким образом, предложенная графическая нотация для проектирования автоматных объектов позволяет обобщать, декомпозировать, структурировать и расширять логику автоматных объектов с помощью наследования. При этом отметим, что по предложенным диаграммам поведения с наследованием, текст программы может быть построен формально и изоморфно с помощью методов, описанных в следующей главе.

Четвертая глава содержит описание методов реализации автоматных объектов, обеспечивающих возможность декомпозиции и структурирования логики автоматных объектов с помощью наследования.

Оба метода позволяют реализовать автоматный объект в соответствии с принципами объектно-ориентированного программирования.

Инкапсуляция. Факт наличия автоматной логики скрывается от клиентов объекта. Экземпляры классов состояний могут иметь вычислительные состояния.

Полиморфизм. Клиент может взаимодействовать с разными классами автоматных объектов универсальным образом.

Наследование Поведение автоматного объекта может быть расширено с помощью существующего в языках программирования механизма наследования. Похожее поведение в разных состояниях и в разных автоматах может быть, например, обобщено и повторно использовано, как показано в предыдущей главе.

В методе реализации автоматных объектов на основе виртуальных методов (УМ-метод) автоматный объект реализуется посредством трехуровневой структуры, состоящей из интерфейса, посредника и контекста (рис. 6). Реализация контекста основана на стандартном механизме виртуальных функций. Пространство состояний автомата отображается на множество виртуальных методов, так что каждому состоянию соответствует один и только один метод класса, называемый виртуальным методом состояния.

Client |

; 1 I а. и»

L^O^no

I-1 I

I -t—L»J KOpanrtO — I \НпЩ> RaadO

Нортону

Op«по*—--»€Орея

a—0 .CtoMO«--»ECtoae

^sOpenedo ElsOpenod

|Wr«o<--->EWWe

--^"-•Jr«.^;.— -»ERmd

_J

Рис. 6. Реализация автоматных объектов на основе виртуальных методов

Метод реализации автоматных объектов на основе виртуальных методов состоит в следующем:

1. Автоматный объект разделяется на три части: интерфейс, посредник и контекст.

2. Посредник реализует интерфейс, преобразуя вызовы его методов в сообщения, которые затем передаются для обработки контексту.

3. Контекст реализуется следующим образом:

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

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

3.3. Текущее состояние хранится в виде приватного указателя на соответствующий метод состояния.

3.4. Доступ к контексту предоставляется в виде открытого метода, принимающего сообщение и переадресовывающего его текущему методу состояния.

4. Методы состояния и группы состояний реализуются следующим образом: 4.1. Методы состояния и группы состояний реализуются в виде защищенных методов контекста. Все методы имеют одинаковую сигнатуРУ-

4.2. В качестве единственного параметра методы принимают сообщение, соответствующее вызову метода интерфейса.

4.3. Метод состояния или группы состояний последовательно, для каждого перехода, возможного в данном состоянии или группе состояний, проверяет выполнение разрешительной части спецификации перехода и в случае успеха совершает этот переход, возвращая значение true.

4.4. В случаях, когда переход не был выполнен:

4.4.1. Если состояние или группа состояний вложены в некоторую группу, то управление передается методу этой группы.

4.4.2. В противном случае возвращается значение false.

Недостатками ИИ-метода являются высокая трудоемкость: хранения вычислительных состояний, обеспечения константности данных и преобразования методов в сообщения и обратно.

Метод реализации автоматных объектов на основе виртуальных вложенных классов (ИГС-метод) устраняет перечисленные недостатки, сохраняя возможность декомпозиции и структурирования логики с помощью наследования (рис. 7). Механизм виртуальных вложенных классов, доступный в некоторых языках программирования (например, Python), позволяет перегружать вложенный класс базового класса в его потомках. В таких языках программирования, как С++ и CW, существует возможность эмулировать данный механизм.

Ckent

Q--

о»«). Proxy

Ор«0 CtoMO (•Opwwdo «Мао RsadO Ое-0 Переадресация текущему режиму

И—dp ^

ReadFlto 0 File): File

Рис. 7. Реализация автоматных объектов на основе виртуальных вложенных классов

Метод реализации автоматных объектов на основе виртуальных вложенных классов состоит в следующем:

1. Автоматный объект разделяется на три части: интерфейс, посредник и контекст.

2. Посредник реализует интерфейс, переадресовывая вызовы его методов контексту.

3. Контекст реализуется следующим образом:

3.1. Поведение автоматного объекта в каждой из его групп состояний реализуется с помощью вложенного защищенного класса группы состояний, реализующего интерфейс автоматного объекта.

3.2. Поведение автоматного объекта в каждом из его состояний реализуется с помощью вложенного защищенного класса состояния, реализующего интерфейс автоматного объекта.

3.3. Текущее состояние хранится в виде приватного указателя на экземпляр соответствующего класса состояния.

3.4. Переключение состояний осуществляется с помощью фабрик состояний.

3.5. Фабрики состояний реализуются в виде защищенных методов контекста, возвращающих экземпляры классов состояний.

3.6. Доступ к контексту предоставляется в виде открытого метода, возвращающего текущий экземпляр класса состояния.

4. Классы состояний и групп состояний реализуются в виде вложенных защищенных классов следующим образом:

4.1. Классы состояний и групп состояний реализуют интерфейс автоматного объекта.

4.2. Каждый метод класса состояния или группы состояний реализует переходы, возможные в данном состоянии или группе состояний и имеющие в качестве своей причины вызов соответствующего метода интерфейса.

4.3. Метод класса группы состояний может бьггь вынесен в контекст, для обеспечения возможности дальнейшего расширения поведения в этой группе.

4.4. Каждый метод класса состояния или группы состояний последовательно, для каждого из возможных состояний, проверяет выполнение условия перехода и в случае успеха совершает этот переход, завершая свое выполнение.

4.5. В случаях, когда переход не был выполнен:

4.5.1. Если состояние или группа состояний вложены в некоторую группу, то управление передается базовому классу;

4.5.2. Если тип возвращаемого значения позволяет вернуть значение 5 (например: false, null), идентифицирующее неуспех, то возвращается значение д.

4.5.3. Если тип возвращаемого значения (например, void) метода т не позволяет вернуть значение 8, идентифицирующее неуспех, то в случае необходимости метод т заменяется методом т', тип возвращаемого значения которого позволяет вернуть д (без изменения интерфейса автоматного объекта).

Оба предложенных метода реализации автоматных объектов обеспечивают возможность декомпозиции и структурирования логики с помощью наследования.

Преимуществами VIC-метода по сравнению с ИМ-методом являются отсутствие трудоемкого преобразования методов интерфейса в события и возмож-

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

Пятая глава содержит описание внедрения результатов настоящей работы на практике. Результаты, полученные в диссертации, используются в компании Транзас (Санкт-Петербург) при разработке:

• системы мониторинга мобильных объектов Navi-Manager, и в частности, ее коммуникационного сервера;

• каркаса для построения редакторов пространственных данных Iris.

Система Navi-Manager применяется для мониторинга различных типов морских, речных и наземных мобильных объектов, сопровождения технологических процессов на береговых объектах ГМССБ, охраны исключительной экономической зоны и т.д.

Эта система предоставляет возможность работы с глобальной системами спутниковой связи Inmarsat-C и Inmarsat-D* (рис. 8, а). Одной из основных проблем, возникающих при работе с системой Inmarsat, является сложность тестирования таких приложений. По ряду причин тестирование на реальной системе осуществляется исключительно редко (в основном на этапе окончательного тестирования). Для тестирования взаимодействия с системой Inmarsat применяются эмуляторы (рис. 8, б). Система глобальной спутниковой связи является типичным представителем реактивных систем. Поведение системы связи на всех уровнях определяется посредством обмена сообщениями между участниками системы. Эмулятор системы также является реактивной системой и может быть спроектирован и реализован на основе совместного использования объектно-ориентированного и автоматного программирования с помощью методов, предложенных в настоящей работе.

Эмулятор должен обеспечивать возможность: имитации серверов доступа систем Inmarsat-C и Inmarsat-D+ с интерфейсами идентичными интерфейсам реальных серверов (http, e-mail и т. д.), использования упрощенного интерфейса для модульного тестирования, имитации поведения мобильных объектов, расширения логики поведения серверов и мобильных объектов, изменения масштаба времени.

Рис. 8. Структурная схема системы мониторинга Упрощенные диаграммы поведения эмуляторов терминалов систем ¡птагъМ-С и 1ппииъа1-1)+ приведены на рис. 9.

tnmcTefm!na!Loglc(1T«?TninBl)

/ 1nmOpT*rmfcMLoglc(fTermlnal)44

PRR/PR 1

PRR/PR

PRR/PR

L

PRR/PR I Ш

( mrtn ^ ^ mm J

С

PRR/PR

(

J) ^ raauUr )

Рис. 9. Упрощенные диаграммы поведения эмуляторов терминала без использования

наследования

Эквивалентные диаграммы поведения с использованием наследования автоматных объектов приведены на рис. 10. Как следует из этих диаграмм, использование декомпозиции и структурирования логики позволяет в значительной мере сократить дублирование. В работе приведен исходный код на языке CW, реализующий эмуляторы терминалов системы Inmarsat.

/ taMnifTMHMUMITwmlnaii ^

Рис. 10. Диаграммы поведения эмуляторов терминала с использованием наследования

Переходя к рассмотрению второй практической задачи, отметим, что визуальное редактирование пространственных данных является важной частью многих приложений в сфере навигационных, береговых и тренажерных систем. Большинство современных программных систем, разрабатываемых в этих областях, являются сложными, распределенными программно-аппаратными комплексами. Актуальной задачей является создание повторно используемого каркаса, облегчающего реализацию визуального редактирования в подобных системах.

Каркас Iris, разрабатываемый в компании Транзас, предназначен для построения редакторов пространственных (spatial) данных. Архитектура каркаса Iris основана на принципах и идеях, предложенных Дж. Влиссидесом и М. Линтоном в каркасе для построения прикладных графических редакторов Unidraw. При этом учтена специфика работы с пространственными данными в условиях распределенной программной системы.

Механизм интерактивного редактирования в каркасе Iris состоит из пятерки объектов: инструмент, манипулятор, метка, призрак и команда. Манипуляторы являются типичными представителями реактивных системам и для их разработки применяются методы проектирования и реализации автоматных объектов, предложенные в настоящей работе.

Вся логика, связанная с осуществлением манипуляции, полностью сконцентрирована внутри манипуляторов. Часть иерархии манипуляторов, определяемых каркасом Iris, приведена на рис. 11.

МапфиМог

ЮпромЫе

1 MauttManfulalor ¡ I ДлмЗвмоМмфиМог] ' RotaMMenfpuMor

>______I .__——._i i____I

LanoS«toctManipulator

PoirOadSaIsctMamiMMOr

Рис. 11. Иерархия манипуляторов, предопределенных в каркасе Iris

В работе подробно рассмотрены вопросы декомпозиции и структурирования логики автоматных объектов с помощью наследования на примере площадных манипуляторов выделения, определяемых каркасом Iris. Диаграммы поведения манипуляторов площадного выделения, построенные без использования наследования, приведены на рис. 12.

/ 1И / ММ/CP

гт

X

гс

J

\ / * LBO/AP/

4 Ммг | РМЭ U Миг

мшср___^ _

4 : LBO/AP

X'

lbo , \ lbu j

и / ср )

í ) lboiар

Ммг I PIOUNMÍ

/

а )

Рис. 12. Диаграммы поведения манипуляторов выделения Поведение данных манипуляторов может быть обобщено и структурировано с помощью наследования так, как показано на рис. 13.

Itttcttw

3

• mantputvtfng

(• ЯпЫЫпд У

ММ / CP LBO / АР

mantputafng

31

ЯшИЩпд У V

Рис. 13. Диаграммы поведения манипуляторов выделения с использованием наследования

В работе приведены фрагменты исходного кода, реализующего поведение манипуляторов площадного выделения и других манипуляторов каркаса Iris.

Результаты внедрения подтверждают практическую ценность предложенных методов. Выполненный в работе метрический анализ различных вариантов реализации манипуляторов, демонстрирует целесообразность использования предложенных методов проектирования и реализации реактивных систем.

Заключение

В диссертации получены следующие научные результаты:

1. Предложен метод реализации автоматных систем на основе библиотеки STOOL, устраняющий ряд недостатков существующих методов реализации систем на основе 5И7ТС#-технологии.

2. Разработана графическая нотация для проектирования автоматных объектов, позволяющая описывать декомпозицию и структурирование их логики с помощью наследования.

3. Разработан метод реализации автоматных объектов на основе виртуальных методов, обеспечивающий декомпозицию и структурирование логики автоматных объектов с помощью наследования.

4. Разработан метод реализации автоматных объектов на основе виртуальных вложенных классов, обеспечивающий декомпозицию и структурирование логики автоматных объектов с помощью наследования.

5. Результаты работы внедрены при разработке системы мониторинга мобильных объектов Navi-Manager и каркаса для построения редакторов пространственных данных Iris в компании Transas, а также в учебном процессе на кафедре «Компьютерные технологии» СПбГУ ИТМО при чтении лекций по курсу «Теория автоматов в программировании».

Список публикаций

1. Шопырин Д.Г., Шальгго A.A. Применение класса "STATE" в объектно-ориентированном программировании с явным выделением состояний //Труды X Всероссийской научно-методической конференции "Телематика-2003". СПб.: СПбГИТМО (ТУ). 2003. Т. 1, с. 284-285.

2. Шалыто А. А., Шопырин Д. Г. Объектно-ориентированный подход к автоматному программированию //Информационно-управляющие системы. 2003, №5, с. 29-39.

3. Шалыто A.A., Шопырин Д.Г. Синхронное программирование //Информационно-управляющие системы. 2004, № 3, с. 35-42.

4. Шопырин Д.Г. Разработка промежуточного языка представления конечных автоматов //Труды XI Всероссийской научно-методической конференции "Телематиха-2004". СПб.: СПбГИТМО (ТУ). 2004. Т. 1, с. 195-197.

5. Шопырии Д.Г. Метод проектирования и реализации конечных автоматов на основе виртуальных вложенных классов //Информационные технологии моделирования и управления. 2005, № 1(19), с. 87-97.

6. Шопырин Д.Г. Объектно-ориентированная реализация конечных автоматов на основе виртуальных методов // Информационно-управляющие системы. 2005, № 3, с. 36—40.

7. Шопырин Д.Г. Программирование с явным выделением состояний на платформе .Net //Труды XII Всероссийской научно-методической конференции "Телематика-2005". СПб.: СПбГИТМО (ТУ). 2005. Т. 1, с. 86-87.

Кроме того, по теме диссертации имеется пять отчетов по выполненным научно-исследовательским работам (http://isifirio.ru, раздел «Наука«).

ад * р. 17?

« - * •«

РЫБ Русский фонд ^

2006-4

11087 ?

»

(

Тиражирование и брошюровка выполнены в Центре «Университетские телекоммуникации» Санкт-Петербург, Саблинская ул. 14. Тел (812)233-46-69

Тираж ¡00 экз.

Оглавление автор диссертации — кандидата технических наук Шопырин, Данил Геннадьевич

ВВЕДЕНИЕ.

ГЛАВА 1. ОБЗОР МЕТОДОВ ПРОЕКТИРОВАНИЯ И РЕАЛИЗАЦИИ РЕАКТИВНЫХ СИСТЕМ НА ОСНОВЕ КОНЕЧНЫХ АВТОМАТОВ.

1.1. Язык описания и спецификации SDL.

1.2. Графический язык Statecharts.

1.3. Синхронное программирование.

1.3.1. Язык Argos.

1.3.2. Язык SyncCharts. г 1.4. SWITCH-технология.

1.5. Реализация систем на основе SWITCH-технолопш.

1.6. Конечные автоматы в объектно-ориентированных системах.

1.6.1. Паттерн проектирования State и его варианты.

1.6.2. Реализация автоматных объектов на основе методов.

1.6.3. Расширение поведения конечных автоматов с помощью наследования.

Выводы.

ГЛАВА 2. РЕАЛИЗАЦИЯ АВТОМАТНЫХ СИСТЕМ НА ' # ОСНОВЕ БИБЛИОТЕКИ STOOL.

2.1. Термины и определения.

2.2. Архитектура библиотеки STOOL.

2.3. Обзор классов библиотеки STOOL.

2.4. Основные возможности.

2.4.1. Выделение состояния системы в целом.

2.4.2. Действия и деятельности.

Ш 2.4.3. Повторное использование автоматов.

2.4.4. Автоматическое протоколирование.

2.4.5. Механизм обработки ошибок.

2.4.6. Параллельные вычисления.

2.4.7. Реализация входных и выходных воздействий. ф 2.5. Пример использования библиотеки STOOL.

2.5.1. Проектирование и реализация автоматов.

2.5.2. Реализация окружения.

2.5.3. Связывание системы автоматов.

2.5.4. Протоколирование работы системы.

2.5.5. Запуск системы автоматов.

Выводы.

ГЛАВА 3. ГРАФИЧЕСКАЯ НОТАЦИЯ ДЛЯ '«' ПРОЕКТИРОВАНИЯ АВТОМАТНЫХ ОБЪЕКТОВ.

3.1. Термины и определения.

3.2. Наследование автоматных объектов.6$

3.3. Декомпозиция и структурирование логики автоматных объектов.

3.4. Диаграммы поведения автоматных объектов.

3.4.1. Графическое представление наследования автоматов.

3.4.2. Графическое представление структурирования логики автоматных объектов.

Выводы.

ГЛАВА 4. РЕАЛИЗАЦИЯ АВТОМАТНЫХ ОБЪЕКТОВ НА ОСНОВЕ ВИРТУАЛЬНЫХ МЕТОДОВ И ВИРТУАЛЬНЫХ ВЛОЖЕННЫХ КЛАССОВ.

4.1. Демонстрационный пример: доступ к файлу.

4.2. Реализация автоматных объектов на основе виртуальных

Ф методов.

4.2.1. Термины и определения.

4.2.2. Метод реализации автоматных объектов на основе виртуальных методов.

4.2.3. Отношения и взаимодействия.

4.2.4. Реализация посредника.

4.2.5. Реализация контекста и структурирование логики.

4.2.6. Расширение логики с помощью наследования.

4.2.7. Каркас VMBase.

4.2.8. Недостатки FM-метода.

4.3. Реализация автоматных объектов на основе виртуальных вложенных классов.

4.3.1. Термины и определения.

4.3.2. Метод реализации автоматных объектов на основе виртуальных вложенных классов.

4.3.3. Отношения и взаимодействия.

4.3.4. Реализация посредника.

4.3.5. Реализация контекста и структурирование логики.

4.3.6. Расширение логики с помощью наследования.

4.3.7. Реализация расширения поведения в группе состояний

4.3.8. Каркас VICBase.

Выводы.

• ГЛАВА 5. ВНЕДРЕНИЕ ПРЕДЛОЖЕННЫХ МЕТОДОВ ПРОЕКТИРОВАНИЯ И РЕАЛИЗАЦИИ АВТОМАТНЫХ

ОБЪЕКТОВ В ПРАКТИКУ РАЗРАБОТКИ РЕАКТИВНЫХ СИСТЕМ

5.1. Эмуляция систем связи Inmarsat-C и Inmarsat-D+.

5.1.1. Область внедрения.

5.1.2. Использование глобальных систем спутниковой связи . 122 ^ 5.1.3. Тестирование взаимодействия с системами глобальной спутниковой связи.

5.1.4. Постановка задачи.

5.1.5. Применимость автоматного программирования.

5.1.6. Проектирование поведения терминала системы Inmarsat ф

5.1.7. Реализация терминала системы Inmarsat.

5.2. Каркас для построения графических редакторов Iris.

5.2.1. Обзор каркаса Unidraw.

5.2.2. Механизмы редактирования в каркасе Unidraw.

5.2.3. Архитектура каркаса Iris.

5.2.4. Механизмы в каркасе Iris.

5.2.5. Реализация манипуляторов в каркасе Iris.

5.3. Сравнение методов реализации автоматных объектов.

Выводы.

Введение 2005 год, диссертация по информатике, вычислительной технике и управлению, Шопырин, Данил Геннадьевич

Актуальность проблемы. При разработке объектно-ориентированного программного обеспечения телекоммуникационных систем актуальна задача проектирования, описания и реализации их поведения. Программные системы можно разделить на следующие классы [1]:

• преобразующие системы - это системы, завершающие свое выполнение после преобразования входных данных (например, архиватор, компилятор). В таких системах обычно входные данные известны и доступны на момент запуска системы, а выходные данные доступны после ее завершения;

• интерактивные системы - это системы, взаимодействующие с окружающей средой в режиме диалога (например, текстовый редактор). Характерной особенностью таких систем является то, что они могут контролировать скорость взаимодействия с окружающей средой - заставлять окружающую среду «ждать»;

• реактивные системы - это системы, взаимодействующие с окружающей средой посредством обмена сообщениями в темпе, задаваемом средой.

Многие телекоммуникационные системы являются представителями класса реактивных систем. Реактивные системы имеют следующие особенности [1]:

• время отклика реактивной системы задается ее окружением;

• поведение реактивных систем детерминировано;

• для реактивных систем характерен параллелизм;

• сбои в работе реактивных систем крайне нежелательны.

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

Наиболее часто для решения задач проектирования, описания и реализации телекоммуникационных систем используются такие средства как:

• язык описания и спецификации SDL (Specification and Description Language) [2];

• унифицированный язык моделирования UML (Unified Modeling Language) [3];

• язык синхронного программирования SyncCharts [4, 5].

Вышеперечисленные языки являются графическими и в качестве средства описания поведения объектов и процессов в них используются диаграммы, основанные на теории автоматов. Однако эти диаграммы обладают рядом недостатков:

• громоздкость;

• отсутствие удобных и непротиворечивых способов перехода от спецификации к реализации.

Для устранения этих недостатков с 1991 года в России разрабатывается £Ж/ТС#-технология [6], также известная как «автоматное программирование», которая предназначена для спецификации и реализации систем со сложным поведением, в том числе и телекоммуникационных. Графы переходов, используемые в автоматном программировании, весьма компактны, так как применяются совместно со схемами связей автоматов, подробно описывающими их интерфейс. Однако в автоматном программировании остаются недостаточно проработанными следующие вопросы:

• совместное использование объектно-ориентированного и автоматного программирования;

• объектно-ориентированное проектирование программного обеспечения реактивных систем;

• объектно-ориентированная реализация программного обеспечения реактивных систем.

Поэтому исследования, направленные на решение проблем проектирования и реализации реактивных систем на основе совместного использования объектно-ориентированной и автоматной технологий, весьма актуальны.

Целью диссертационной работы является разработка методов объектно-ориентированного проектирования и реализации программного обеспечения реактивных систем, главным образом телекоммуникационных, на основе конечных автоматов.

Основные задачи исследования состоят в следующем:

• совершенствование методов реализации автоматных систем на основе iW/ТСЯ-технологии;

• разработка графической нотации для проектирования автоматных объектов, которая позволяет описывать декомпозицию и структурирование их логики с помощью наследования;

• разработка методов реализации автоматных объектов на универсальных языках программирования, обеспечивающих декомпозицию и структурирование логики с помощью наследования.

Методы исследования. В работе использованы методы теории автоматов, объектно-ориентированного проектирования и программирования.

Научная новизна. В работе получены следующие научные результаты, которые выносятся на защиту.

1. Предложен метод реализации автоматных систем на основе библиотеки STOOL (5W7T#~Technology Object Oriented Library), устраняющий ряд недостатков £ИТГС#-технологии.

2. Разработана графическая нотация для проектирования автоматных объектов, которая позволяет описывать декомпозицию и структурирование их логики с помощью наследования.

3. Разработан метод реализации автоматных объектов на основе виртуальных методов, обеспечивающий декомпозицию и структурирование логики с помощью наследования.

4. Разработан метод реализации автоматных объектов на основе виртуальных вложенных классов, обеспечивающий декомпозицию и структурирование логики с помощью наследования.

Результаты диссертации были получены в ходе выполнения научно-исследовательских работ «Разработка технологии программного обеспечения систем управления на основе автоматного подхода», выполненной по заказу Министерства образования РФ в 2001 - 2005 гг., и «Разработка технологии автоматного программирования», выполненной по гранту Российского фонда фундаментальных исследований № 02-07-90114 в 2002 - 2003 гг. (http://is.ifmo.ru, раздел «Наука»),

Достоверность научных положений, выводов и практических рекомендаций, полученных в диссертации, подтверждается корректным обоснованием постановок задач, точной формулировкой критериев, компьютерным моделированием, а также результатами внедрения методов, предложенных в диссертации, на практике.

Практическое значение работы заключается в том, что все полученные результаты могут быть использованы, а некоторые уже используются, в практической деятельности. Предложенные методы проектирования и реализации автоматных объектов упрощают поддержку и сопровождение программ за счет сокращения дублирования логики автоматов. Предложенные ф методы реализации автоматных объектов основаны только на стандартных возможностях используемых языков программирования, что снижает риски при их практическом применении. Практическая ценность подтверждается внедрением результатов работы.

Внедрение результатов работы. Результаты, полученные в диссертации, используются на практике:

• в компании Транзас (Санкт-Петербург) при разработке системы мониторинга мобильных объектов Navi-Manager, и в частности, ее коммуникационного сервера;

• в компании Транзас (Санкт-Петербург) при разработке каркаса для построения редакторов пространственных данных Iris;

• в учебном процессе на кафедре «Компьютерные технологии» СПбГУ ИТМО при чтении лекций по курсу «Теория автоматов в программировании».

Апробация диссертации. Основные положения диссертационной работы докладывались на научно-методических конференциях «Телематика-2003», «Телематика-2004», «Телематика-2005» (Санкт-Петербург) и XXXIII конференции профессорско-преподавательского состава СПбГУ ИТМО (Санкт-Петербург, 2004).

Публикации. По теме диссертации опубликовано 7 печатных работ, в том числе в журналах «Информационно-управляющие системы» и «Информационные технологии моделирования и управления».

Структура диссертации. Диссертация изложена на 174 страницах и состоит из введения, пяти глав и заключения. Список литературы содержит

Заключение диссертация на тему "Методы объектно-ориентированного проектирования и реализации программного обеспечения реактивных систем"

Все основные результаты, полученные в работе, опубликованы. Приведем информацию о личном участии автора.

В работах [37, 54, 78] автором предложена идея усовершенствования методов реализации автоматных систем в 5^7ГСЯ-технологии. Основные идеи и принципы, предложенные в этих работах, реализованы в библиотеке STOOL.

В работе [16] автором, впервые на русском языке, выполнен обзор синхронного программирования вообще и языков Esterel, Lustre и Argos в частности.

В работе [65] автором предложен метод реализации автоматных объектов на основе виртуальных методов.

В работах [66, 67] автором предложен метод реализации автоматных объектов на основе виртуальных вложенных классов.

Синтаксис графической нотации для проектирования автоматных объектов был предложен автором в работах [65, 66].

Заключение

В диссертации получены следующие научные результаты:

1. Предложен метод реализации автоматных систем на основе библиотеки STOOL, устраняющий ряд недостатков SWITCH-технологии.

2. Разработана графическая нотация, которая позволяет описывать расширение и структурирование логики автоматных объектов с помощью наследования.

3. Разработан метод реализации автоматных объектов на основе виртуальных методов, обеспечивающий декомпозицию и структурирование логики автоматных объектов с помощью наследования.

4. Разработан метод реализации автоматных объектов на основе виртуальных вложенных классов, обеспечивающий декомпозицию и структурирование логики автоматных объектов с помощью наследования.

Библиография Шопырин, Данил Геннадьевич, диссертация по теме Телекоммуникационные системы и компьютерные сети

1. Harel D., Pnueli A. On the development of reactive systems //1. "Logic and Models of Concurrent Systems". NATO Advanced Study Institute on Logic and Models for Verification and Specification of Concurrent Systems. Springer Yerlag, 1985. pp. 477-498.

2. Specification and Description Language (SDL), International Engineering Consortium, http://www.iec.org/acrobat.asp?filecode=125

3. Буч Г., Рамбо Дж., Джекобсон A. UML. Руководство пользователя. М. ДМК 2000. 432 с.

4. Benveniste A. The Synchronous Languages 12 Years Later. Proceedings of the IEEE, vol. 91, 2003, no. 1, pp. 64-83.

5. Andre C. SyncCharts: A Visual Representation of Reactive Behaviors /Tech. Rep. RR 95-52,13 S, Sophia-Antipolis, France, 1995.

6. Шалыто A.A. SWITCH-технология. Алгоритмизация и программирование задач логического управления. СПб.: Наука, 1998. 628 с.

7. Гольдштейн Б. С. Сигнализация в сетях связи. Том 1. М.: Радио с связь, 2001.-439 с.

8. Specification and Description Language (SDL), рекомендации ITU-T серии Z.100, http://www.itu.int/rec/recommendation.asp?type=folders& lang=e&parent=T-REC-Z. 100

9. Encontre V. SDL: a standard language for Ada real-time applications /Proceedings of the conference on TRI-Ada '91, pp.45-53, October 21-25, 1991, San Jose, California, United States.

10. Harel D. Statecharts: A visual formalism for complex systems //Sci. Com-put. Program. 1987. Vol. 8, pp. 231-274.

11. Automata Studies / Shannon C.E., McCarthy J. Princeton University Press, 1956.

12. Harel D., Naamad A. The Statemate Semantics of Statecharts // ACM Trans. Softw. Eng. Methodology, vol. 5, October 1996. pp. 293-333.

13. Mikk E., Lakhnech Y., Petersohn C., Siegel M. On Formal Semantics of Statecharts as Supported by STATEMATE // Proceedings of the 2nd BCS-FACS Northern Formal Methods Workshop, Ilkley, 14-15 July 1997.

14. Хопкрофт Д., Мотвани P., Ульман Дж. Введение в теорию автоматов, языков и вычислений. М.: Вильяме, 2001. 528 с.

15. OMG Unified Modeling Language Specification, Version 1.5, March 2003.

16. Шалыто A.A., Шопырин Д.Г. Синхронное программирование //Информационно-управляющие системы. 2004. № 3, с. 35-42.

17. Апериодические автоматы /Астановский А.Г., Варшавский В.И., Ма-раховский В.Б. и др. М.: Наука, 1976. 423 с.

18. Palshikar G.K. An Introduction to Esterel //Embedded Systems Programming. 2001. http://www.embedded.com/storv/QEG20011018S0090

19. IEEE Standard VHDL Language Reference Manual. IEEE Press. Piscata-way, NJ, 1994, pp. 1076-1993.

20. Caspi P., Pilaud D., Halbwachs N., Plaice J. A. LUSTRE: A declarative language for programming synchronous systems. In ACM Symp. Principles Program. Lang. (POPL), Munich, Germany, 1987, pp. 178-188.

21. Berry G., Gonthier G. The Esterel synchronous programming language: Design, semantics, implementation //Sci. Comput. Program., vol. 19, Nov., 1992. pp. 87-152.

22. Benveniste A., Guemic P. Hybrid dynamical systems theory and the SIGNAL language //IEEE Trans. Automat. Contr., vol. AC-35, May 1990. pp. 535-546.

23. Maraninchi F. The Argos language: Graphical representation of automata and description of reactive systems /Presented at the IEEE Workshop Visual Lang., Kobe, Japan, 1991.

24. Andre C. Representation and Analysis of Reactive Behaviors: A Synchronous Approach /CESA'96, Lille, France, IEEE-SMC, July 1996.

25. Rapicault P., Mallet F. Behavioral specification of Java component using SyncCharts /ЕСООР2000. Workshop on Pervasive Component Systems, June 2000, Cannes, France.

26. Berry G. Preemption in Concurent Systems //Proceedings of FSTTCS 93. Springer Verlag, LNCS 761, 1993. pp. 72-93.

27. Туккель Н.И., Шалыто A.A. Система управления танком для игры Robocode. Объектно-ориентированное программирование с явным выделением состояний, http://is.ifmo.ru (раздел «Проекты»).

28. Шалыто А.А., Туккель Н.И. Программирование с явным выделением состояний // Мир ПК. 2001. № 8, 9, с. 116-121, с. 132-138.

29. Шалыто А.А., Туккель Н.И. Реализация автоматов при программировании событийных систем. //Программист. 2002. № 4, с. 74-80.

30. Шалыто А.А. Технология автоматного программирования //Мир ПК. 2003. № 10, с. 74-78.

31. Шалыто А.А. Программная реализация управляющих автоматов // Судостроительная промышленность. Серия «Автоматика и телемеханика». 1991. № 13, с. 41-42.

32. Шалыто А.А. Автоматное проектирование программ. Алгоритмизация и программирование задач логического управления //Известия РАН. Теория и системы управления. 2000. № 6, с. 63-81.

33. Шалыто А.А., Туккель Н.И. SWITCH-технология автоматный подход к созданию программного обеспечения «реактивных» систем //Программирование. 2001. № 5, с. 45-62.

34. Шалыто А.А. Алгоритмизация и программирование для систем логического управления и «реактивных» систем //Автоматика и телемеханика. 2001. № 1, с. 3-39.

35. Шалыто А.А., Туккель Н.И. Проектирование программного обеспечения системы управления дизель-генераторами на основе автоматного подхода // Системы управления и обработки информации: СПб.: ФГУП "НПО "Аврора". 2002. № 5, с. 66-82.

36. Гуров B.C., Мазин М.А., Нарвский А.С., Шалыто А.А. UML. SWITCH-технология. Eclipse //Информационно-управляющие системы. 2004. № 6, с. 12-17.

37. Шопырин Д.Г., Шалыто А.А. Объектно-ориентированный подход к автоматному программированию // Информационно-управляющие системы, 2003, № 5, с. 29-39.

38. Adamczyk P. The Anthology of the Finite State Machine Design Patterns // The 10th Conference on Pattern Languages of Programs, 2003.

39. Jones D. W. How (not) to code a finite state machine // SIGPLAN Not. 1988. vol. 23, num. 8, pp. 19-22.

40. Cargill T. С++ Programming Style. Addison Wesley, 1992.

41. Samek M. Practical Statecharts in C/C++. CMP Books, 2002.

42. Шалыто A.A., Наумов Л.А. Методы объектно-ориентированной реализации реактивных агентов на основе конечных автоматов // Искусственный интеллект. 2004. № 4, с. 756-762.

43. Adamczyk P. Selected Patterns for Implementing Finite State Machines /The 11th Conference on Pattern Languages of Programs, 2004.

44. Odrowski J., Sogaard P. Pattern Integration Variations of State /Proceedings of PLoP96. http://www.cs.wustl.edu/~schmidt/PLoP-96/odrowski.ps.gz.

45. Henney K. Methods for states. A pattern for realizing object lifecycles //Proceedings of the First Nordic Conference on Pattern Languages of Programs, 2002, September.

46. Шалыто А. А., Туккель H. И. От тьюрингова программирования к автоматному //Мир ПК. 2002. № 2, с. 144-149.

47. Гамма Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб.: Питер, 2001.-368 с.

48. Шамгунов Н.Н., Корнеев Г.А., Шалыто А.А. State Machine новый паттерн объектно-ориентированного проектирования //Информационно-управляющие системы. 2004. № 5, с. 13-25.

49. Sane A., Campbell R. Object-Oriented State Machines: Subclassing, Composition, Delegation, and Genericity /OOPSLA '95. http://choices.cs.uiuc.edu/sane/home.html.

50. Страуструп Б. Язык программирования С++. 3-е издание. СПб.: Невский диалект, 1999. -991 с.

51. Шалыто А.А., Туккель Н.И. Танки и автоматы. //BYTE/Россия. 2003. №2, с. 69-73.

52. Шопырин Д.Г., Шалыто А.А. Применение класса «STATE» в объектно-ориентированном программировании с явным выделением состояний //Труды X Всероссийской научно-методической конференции "Телематика-2003". СПб.: СПбГИТМО (ТУ). 2003, т. 1, с. 284, 285.

53. Boost С++ library (http://www.boost.org).

54. Danforth S., Tomlinson С. Type theories and object-oriented programming //ACM Comput. Surv. vol. 20, № 1, 1988. pp. 29-72.

55. Taivalsaari A. On the notion of inheritance 11 ACM Comput. Surv. vol. 28, №3, 1996, pp. 438-479.

56. Bracha G., Cook W. Mixin-based inheritance //In OOPSLA/ECOOP'90 Conference Proceedings, ACM SIGPLAN Not. vol. 25, № 10, 1990. pp. 303-311.

57. Cook W. A denotational semantics of inheritance. //Ph.D. thesis, Brown University, Tech. Rep. CS-89-33, 1989.

58. Wegner P., Zdonik S. Inheritance as an incremental modification mechanism or what Like is and isn't like. //In ECOOP'88: European Conference on Object-Oriented Programming. Lecture Notes in Computer Sci. 276, Springer-Verlag. 1988, pp. 55-77.

59. Lee J., Xue N., Kuei T. A note on state modeling through inheritance // SIGSOFT Softw. Eng. Notes vol. 23, 1998, № 1.

60. Liskov B. Data Abstraction and Hierarchy // SIGPLAN Notices. Vol. 23. №5, 1988, pp. 17-34.

61. Liskov, В., Wing J. A Behavioral Notion of Subtyping // ACM Transactions on Programmi ng Languages and Systems, Vol. 16, № 6. 1994, pp. 1811-1841.

62. Заякин E.A., Шалыто A.A. Метод устранения повторных фрагментов кода при реализации конечных автоматов // Мир ПК (диск). 2005. № 8. http://is.ifino.ru, раздел «Проекты».

63. Шопырин Д.Г. Объектно-ориентированная реализация конечных автоматов на основе виртуальных методов // Информационно-управляющие системы. 2005, № 3, с. 36-40.

64. Шопырин Д.Г. Метод проектирования и реализации конечных автоматов на основе виртуальных вложенных классов //Информационные технологии моделирования и управления. 2005, № 1(19) с. 87-97.

65. Шопырин Д.Г. Программирование с явным выделением состояний на платформе .Net //Труды XII Всероссийской научно-методической конференции "Телематика-2005". СПб.: СПбГИТМО (ТУ). 2005, т. 1, с. 86, 87.

66. Лутц М. Программирование на Python. СПб.: Символ-Плюс, 2002. -1136 с.

67. Группа компаний Транзас, http://transas.ru/

68. Inmarsat Global Ltd, http://www.inmarsat.com/

69. Xantic Inmarsat-C Data Reporting and Polling User Manual, http://www.xantic.net/default.asp?FILE=items/3189/108&rnd=2.396339E-02

70. Vlissides J. M., Linton M. A. Unidraw: a framework for building domain-specific graphical editors ПАСМ Trans. Inf. Syst. 1990. vol. 8, num. 3, pp. 237-268.

71. Krasner G. E., Pope S. T. A cookbook for using the model-view-controller user interface paradigm in Smalltalk-80 // Object-Oriented Program. 1, 3 (Aug./Sept. 1988), pp. 26^9.

72. Vlissides, J.M. Generalized graphical object editing. Ph.D. dissertation, Stanford Univ., 1990.

73. M Squared Technologies LLC™, http://msquaredtechnologies.com/

74. Campwood Software, http ://camp woods w. с от/

75. Макконнелл С. Совершенный код. М.: Русская редакция, 2005. — 867с.

76. Шопырин Д.Г. Разработка промежуточного языка представления конечных автоматов //Труды XI Всероссийской научно-методической конференции "Телематика-2004". СПб.: СПбГИТМО (ТУ). 2004, т. 1, с. 195-197.