DRAKON.SU

Текущее время: Суббота, 16 Февраль, 2019 08:49

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 30 Январь, 2019 14:27 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 478
Журнал "Программная инженерия", Номер 1 2019 год
Митькин С.Б.
Автоматное программирование на языке ДРАКОН
https://drakonhub.com/files/pe_drakon_a ... n_2019.pdf


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 30 Январь, 2019 15:01 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 198
Конечный автомат хорошо...
А как будет выглядеть и работать конечный автомат внутри конечного автомата?
Это если рассматривать конечные автоматы как кирпичики для построения сложных программ.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 30 Январь, 2019 19:07 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 4007
Откуда: Москва
Степан Митькин писал(а):
Журнал "Программная инженерия", Номер 1 2019 год
Митькин С.Б.
Автоматное программирование на языке ДРАКОН
https://drakonhub.com/files/pe_drakon_a ... n_2019.pdf
Поздравляю Степана Борисовича Митькина с замечательным достижением — публикацией оригинальной статьи " Автоматное программирование на языке ДРАКОН" в авторитетном профессиональном журнале "Программная инженерия".

Степан, надо разослать вашу статью специалистам: Шалыто, Петренко, Лаврищевой и др.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 30 Январь, 2019 20:37 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 478
А_МУР писал(а):
Это если рассматривать конечные автоматы как кирпичики для построения сложных программ.

Это правильный вопрос. Я вскользь касаюсь его в разделе "Сеть автоматов".
К сожалению, в статье не было возможности подробно рассказать о взаимодействии автоматов.
Если в кратце:
1. Есть известный набор правил, которых следует придерживаться при построении программы из многих автоматов.
2. Если не придерживаться тех правил, то возникнут известные проблемы.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 31 Январь, 2019 11:54 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 198
Степан если в схеме содержится два или более одинаковых конечных автомата, то мы можем говорить о программных экземплярах автоматов?

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

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

Если экземпляр автомата не получил поток управления, то он сохраняет на своих входах предыдущее состояние. И это оказалось очень критично.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 31 Январь, 2019 12:03 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 198
Если не понятно - могу приводить примеры!


Последний раз редактировалось А_МУР Четверг, 31 Январь, 2019 14:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 31 Январь, 2019 12:25 

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 198
А_МУР писал(а):
Степан если в схеме содержится два или более одинаковых конечных автомата, то мы можем говорить о программных экземплярах автоматов?

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

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

Если экземпляр автомата не получил поток управления, то он сохраняет на своих входах предыдущее состояние. И это оказалось очень критично.



У меня есть несколько приемов обхода таких состояний, но все они вносят такой сумбур, что схема становится не читаемой


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 05 Февраль, 2019 11:51 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 127
Откуда: Астрахань
Степан Митькин писал(а):
Журнал "Программная инженерия", Номер 1 2019 год
Митькин С.Б.
Автоматное программирование на языке ДРАКОН
https://drakonhub.com/files/pe_drakon_a ... n_2019.pdf


Отличная статья! Спасибо, внушает :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 11 Февраль, 2019 16:32 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 127
Откуда: Астрахань
В статье:
Цитата:
"Программа DRAKON Editor версии 1.31 не поддерживает входные действия на автоматных ДРАКОН-схемах. Тем не менее принципиальная возможность добавить эти действия существует. Входные действия можно расположить над макроиконой "выбор" с ключевым словом "receive".
Выходные действия автоматные ДРАКОН-схемы не поддерживают совсем"
(см.стр.10)

По первому утверждению все понятно, это места отмеченные зеленым маркером на иллюстрации "Дракон-автомат".
Но почему второе утверждение про выходные действия столь категорично? Почему нельзя выходные действия поместить в места, помеченные красным маркером?
Вложение:
Комментарий к файлу: Дракон-автомат
Автоматы.png
Автоматы.png [ 79.17 КБ | Просмотров: 149 ]

И еще непонятно назначение ветки "Exit". Может иконку ветки совсем убрать? А иконку Конец - оставить.

Если говорить про нарушение канонов, так они уже нарушены:
- к ветке "Exit" не ведет ни один переход (Адрес), если придерживаться старой нотации; а по новой нотации - не понятно, каким состоянием заканчивается работа состояния Exit, мало того, это состояние никогда не наступает, опять же исходя из диаграммы;
- логика работы веток исправлена для обеспечения функциональности автомата;
- в иконке с формальными параметрами записываем функциональный признак диаграммы;

Преимущества записи выходных действий предложенным мною способом:
- нет нужды прописывать в формальные параметры "state machine"; то, что это не простой силуэт, будет видно по характерным блокам Действие после иконок Переход;
- у автоматного Дракона появляется поддержка выходных действий.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Февраль, 2019 13:03 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 478
Дмитрий Бардынин писал(а):
Почему нельзя выходные действия поместить в места, помеченные красным маркером?

Потому что из одного состояния может быть несколько выходов, а правило, выполняемое на любом из выходов из состояния, должно быть одно.
Пример: "при выходе из состояния X закрыть файл Y". При этом из состояния X автомат может перейти в состояния A, B и C.
Дмитрий Бардынин писал(а):
И еще непонятно назначение ветки "Exit". Может иконку ветки совсем убрать?

Некоторые автоматы могут выключить себя. Они соответствуют конечным алгоритмам. Для таких автоматов ветка с концом нужна.
Некоторые автоматы не могут выключить себя сами. Они соответствуют бесконечным алгоритмам (например, алгоритмы управления). Для таких автоматов ветка с концом не нужна.
В DRAKON Editor есть ограничение: ветку с выходом нельзя удалить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Февраль, 2019 13:26 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 127
Откуда: Астрахань
Степан Митькин писал(а):
Дмитрий Бардынин писал(а):
Почему нельзя выходные действия поместить в места, помеченные красным маркером?

Потому что из одного состояния может быть несколько выходов, а правило, выполняемое на любом из выходов из состояния, должно быть одно.
Пример: "при выходе из состояния X закрыть файл Y". При этом из состояния X автомат может перейти в состояния A, B и C.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 12 Февраль, 2019 18:26 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 863
Что такое - "уникальный выход"?

Откуда взят такой термин?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 13 Февраль, 2019 09:13 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 127
Откуда: Астрахань
LKom писал(а):
Что такое - "уникальный выход"?
Откуда взят такой термин?

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 13 Февраль, 2019 18:41 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 232
https://forum.drakon.su/viewtopic.php?f=94&t=6449#p102803
Дмитрий Бардынин писал(а):
Цитата:
"Программа DRAKON Editor версии 1.31 не поддерживает входные действия на автоматных ДРАКОН-схемах. Тем не менее принципиальная возможность добавить эти действия существует. Входные действия можно расположить над макроиконой "выбор" с ключевым словом "receive".
Выходные действия автоматные ДРАКОН-схемы не поддерживают совсем"

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

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

В общем случае необходимо различать:
- переходы в другие состояния, а также и переход в собственное состояние -- "петля" в графах переходах/диаграммах состояний. В последнем случае также необходимо выполнить выходные действия и затем входные -- "сброс" или "reset", начинаем работать с начала, м.б. с корректировками;
- "шаг системы" без перехода в иное состояние. В автоматных методиках часто действия без перехода обозначаются аля "do action/activity" или "during action" (в случае поддержки множества событий, в каком-либо виде, возможно дополнительное деление аля "immediate" или нет -- многократное или одноразовое исполнение при дублировании событий, и т.д.).

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

Входные действия могут быть определены в местах с "зеленым маркером", как здесь:
https://forum.drakon.su/viewtopic.php?f=62&t=6097#p100629

Однако, необходимо различать варианты входа в ветку -- "петля" или "шаг системы", или переход из иного состояния (или стартовое состояние) -- исполнять или нет входные действия.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 14 Февраль, 2019 10:21 

Зарегистрирован: Пятница, 08 Декабрь, 2017 18:24
Сообщения: 127
Откуда: Астрахань
PSV100 писал(а):
Однако, необходимо различать варианты входа в ветку -- "петля" или "шаг системы", или переход из иного состояния (или стартовое состояние) -- исполнять или нет входные действия.
Просто перенесем входные действия для петель на начало этих петель, т.е. на красный же маркер.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Февраль, 2019 20:02 

Зарегистрирован: Понедельник, 25 Июнь, 2012 17:26
Сообщения: 232
Всё-таки, без дублирования не обойтись (оттого блок-схемы в автоматных методиках и не используют, в том числе).

Здесь на форуме уже были бурные "автоматные" дискуссии. Неоднократно отмечалось, что деление на ветки как желаемые автоматные состояния не всегда возможно (понимая автоматы "высокоуровнево" -- как процесс, изменяющий своё поведение). К примеру, может возникнуть алгоритмическая ситуация, при которой возникает пересечение линий (из-за переплетения условий). Последнее снимается также через силуэт, в итоге возникают прикладные "автоматные" и вспомогательные ветки.

Альтернативный подход -- рассматривать процесс как "гиперпроцесс" -- полиморфный, с переключением или выбором конкретного варианта исполнения (функции-состояния) в runtime, как на рисунках ниже. Здесь процесс "Process" имеет два дополнительных или альтернативных процесса-состояния. На схемах имеется попытка применения "терминаторов" из блок-схем, а также и "вопросы иначе". Для внешней среды Process есть единый процесс (и идентифицируется единственным именем), который может сам переключаться на необходимый процесс-состояние (конечно, можно тестировать актуальное состояние процесса). В примере "Subpoc 2" завершает весь процесс (Process). Схемы можно компоновать и горизонтально, эмулируя единый силуэт (или каким-то способом обозначить их общность). Внутри любого процесса-состояния ветки могут использоваться как угодно, т.е. как обычно, в т.ч. и для выражения изменения поведения процесса (мол незначительного).
Вложение:
process.png
process.png [ 25.23 КБ | Просмотров: 18 ]

Вложение:
subproc1.png
subproc1.png [ 21.18 КБ | Просмотров: 18 ]

Вложение:
subproc2.png
subproc2.png [ 8.65 КБ | Просмотров: 18 ]


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

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


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

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


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

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