DRAKON.SU

Текущее время: Воскресенье, 24 Март, 2019 18:52

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
СообщениеДобавлено: Среда, 13 Февраль, 2019 14:55 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 4052
Откуда: Москва
Митькин С.Б. Автоматное программирование на языке ДРАКОН // Программная инженерия. 2019. №1.

Цитата:
Предложен новый метод визуального автоматного программирования на языке ДРАКОН, состоящий в совмещении конечных автоматов с деревьями принятия решений.

Описана генерация программного кода из автоматных ДРАКОН-схем и способ передачи сигналов между автоматами. Рассмотрен опыт применения предлагаемого метода в реальном программном проекте.

Ключевые слова: автоматное программирование, конечные автоматы, машины состояний, язык ДРАКОН, реактивные системы, визуальное программирование, деревья принятия решений

Введение

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

Поведение системы, как правило, прямо связано с управлением этой системой. В работе [2] авторы отмечают, что задачи управления присутствуют в любом программном обеспечении, как следствие, конечные автоматы могли бы использоваться во всех современных программах.

К настоящему времени разработаны методы построения программ с применением конечных автоматов, например, SWITCH-технология [3]. Тем не менее, в программном обеспечении автоматы встречаются редко.

Причина недооценки автоматного подхода — высокая трудоемкость автоматного программирования.

Для работы с автоматами существуют библиотеки для популярных языков программирования, например, [4] и [5]. Библиотеки снижают трудозатраты, однако создаваемые с помощью библиотек автоматы сложны для чтения и анализа ввиду отсутствия визуализации.

Графические нотации, например, диаграммы состояний UML (UML state machine), показывают структуру автоматов в более понятном виде.

Существуют инструментальные средства, например [6—8], которые генерируют программный код из диаграмм состояний.

Графика облегчает анализ автоматов и снижает трудоемкость разработки по сравнению с чисто текстовым автоматным программированием.

К сожалению, большинство таких средств, включая [6] и [7], требуют от разработчика писать часть автоматного кода отдельно от диаграммы, что по-прежнему создает трудности.

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

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

В работе [2] F. Wagner отмечает:
Цитата:
"Поведение — самая сложная часть программы и поэтому источник самых запутанных ошибок".

Для предотвращения ошибок и повышения производительности труда при разработке автоматов имеет смысл обратиться к визуально упорядоченному языку ДРАКОН.

В литературе по языку ДРАКОН [9] вопрос о преодолении сложностей автоматного программирования не ставится и не рассматривается.

В настоящей работе впервые предложен метод визуального автоматного программирования, основанный на языке ДРАКОН.

Этот метод был реализован в среде разработки DRAKON Editor [10].

В настоящей статье не рассматриваются математические и алгоритмические свойства конечных автоматов. Цель статьи — показать новый способ графического изображения автоматов.

Введение в автоматное программирование
и визуальный язык ДРАКОН


В данном разделе приведены общие сведения о языке ДРАКОН и об автоматном программировании.

Конечные автоматы — математическая абстракция, но здесь и далее автоматы рассмотрены с точки зрения практической разработки программ.

Основы языка ДРАКОН в данном разделе изложены без связи с автоматным программированием.

Введение в автоматное программирование

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

В действительности автоматное программирование представляет собой подход к разработке любого программного обеспечения вне зависимости от его назначения.

Этот подход основан на применении особого рода объектов — автоматов — в качестве строительных блоков. Так же как объектно-ориентированная программа построена из классов, автоматная программа состоит из автоматов.

Классы и автоматы имеют общие черты, а именно: те и другие хранят внутри себя данные; те и другие принимают сигналы извне и реагируют на них.

Несмотря на сходство, автоматы имеют отличия от классов.

Среди данных, хранимых в автомате, выделяют особое поле, называемое управляющим состоянием. Значение этого поля принадлежит некоторому конечному множеству.

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

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

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

Далее в статье под термином "состояние" в единственном числе понимается текущее значение, которое хранится в управляющем состоянии автомата.

Термин "состояния" во множественном числе означает перечень допустимых значений, которые может принимать управляющее состояние автомата.

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

Автомат будет принимать два вида сигналов: "движение мыши над элементом" и "мышь покинула элемент". Начальное состояние — "обычное", начальный цвет элемента — белый.

Если автомат получит сигнал "движение мыши над элементом", находясь в состоянии "обычное", он поменяет цвет элемента на голубой и переключится в состояние "активное".

Если этот сигнал придет, когда автомат уже находится в состоянии "активное", автомат проигнорирует сигнал.

Если автомат получит сигнал "мышь покинула элемент", находясь в состоянии "активное", автомат поменяет цвет элемента на белый и перейдет в состояние "обычное".

Если сигнал "мышь покинула элемент" поступит, когда автомат находится в состоянии "обычное", это может свидетельствовать об ошибке в других подсистемах программы.

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

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

Текущее состояние автомата — результат цепочки предыдущих событий, произошедших с автоматом, поэтому состояние представляет собой связь с прошлым автомата.

Эта связь указывается в явном виде, причем прошлое получается сжатым в одну переменную. Именно такая компактность представления прошлого делает автоматы удобным инструментом моделирования поведения.

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

Масштабируемость достигается построением сетей, состоящих из многих простых автоматов.

Автомат — мощная и в то же время простая программная модель. Автоматы могут помочь в решении задач реализации поведения в самых разных видах программного обеспечения.
Читать дальше...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2019, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB