DRAKON.SU

Текущее время: Пятница, 29 Март, 2024 00:12

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 23 Август, 2019 12:17 

Зарегистрирован: Понедельник, 14 Декабрь, 2015 19:18
Сообщения: 127
Добрый день, дорогие форумчане!

Сейчас будет чистая практика. Есть пример временной диаграммы(в каком то виде).
Хочется сделать её чистой и понятной благодаря ДРАКОНу.

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

I. Описание системы
Представим систему из двух частей(TX, RX), разделенных сетью:
Вложение:
Снимок экрана от 2019-08-23 11-55-54.png
Снимок экрана от 2019-08-23 11-55-54.png [ 46.62 КБ | Просмотров: 4253 ]

Одна часть компонент, создает важную информацию синхронно общаясь по сети.
Это компоненты:
1. "Генератор информации TX"
2. Сеть
3. "Генератор информации RX"

Их цель - создать очередной блок информации одинаковый на обоих сторонах.
После этого один из них(кто-то первее) кидает запрос на добавление информации в своё "Хранилище Информации".

Здесь мы уже говорим, что у нас есть:
1. "Хранилище TX"
2. Сеть
3. "Хранилище RX"

Цель хранилищ - получить очередной блок информации от "Генераторов информации" и синхронно добавить блок себе внутрь.

II. Временная диаграмма
Интересует освещение алгоритма работы Хранилищ.
Ниже представлена временная диаграмма, освещающая взаимодействие Хранилищ, а конкретно:
-очередность событий по добавлению блока информации внутрь Хранилищ.
Вложение:
Снимок экрана от 2019-08-22 15-17-21.png
Снимок экрана от 2019-08-22 15-17-21.png [ 102.32 КБ | Просмотров: 4253 ]

Всё начинается с обработки запроса типа "PutEvent".
Обработчик событий одного из хранилищ получил очередное событие - "PutEvent" с блоком информации в нем.
Большие прямоугольники с маленькими прямоугольники внутри выражают функции с действиями.
В основном это функции - call-back'и - т.е. функции, которые вызываются обработчиком событий при наступление очередного события(приходе очередного сообщения по сети).

Есть продолжение в виде ДРАКОН схемы, освещающей часть работы - работу Хранилища TX. Выложу чуть позже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 23 Август, 2019 15:47 

Зарегистрирован: Понедельник, 14 Декабрь, 2015 19:18
Сообщения: 127
III. Обработка временной диаграммы.

Сначала, я бы убрал связи-стрелочки между сторонами RX и TX:
Вложение:
Снимок экрана от 2019-08-22 14-56-01.png
Снимок экрана от 2019-08-22 14-56-01.png [ 88.83 КБ | Просмотров: 4249 ]

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

Всё идет последовательно:
-выполняем инструкции
-отсылаем сообщения(события)

Лишь в каких-то местах останавливаемся из-за:
-ожидания сообщения(события)

Сконцентрируемся на стороне TX:
Вложение:
Снимок экрана от 2019-08-22 14-56-46.png
Снимок экрана от 2019-08-22 14-56-46.png [ 40.86 КБ | Просмотров: 4249 ]


IV. Превращение диаграммы в ДРАКОН схему
Выразим её с помощью ДРАКОН схемы:
Вложение:
20190823153950.png
20190823153950.png [ 111.96 КБ | Просмотров: 4249 ]

Действия общения по сети выразил через иконки:
-send(отослать) ---> иконка "Вывод" с указанием получателя и сути сообщения
-wait_for(ожидать ответа) ---> иконка "Ввод" с указанием отправителя и сути сообщения


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 23 Август, 2019 17:04 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Смотрите схему в сообщении выше.

Схема выполнена в инструменте Степана Митькина.
Инструмент не обеспечивает автоматизация построения схему.
В ветке имеется 2-е одинаковых иконы Адрес "Обработка входящих событий". Автоматическое объединение икон не произошло, осталась визуальная избыточность. Пользователь надеется на инструмент и не производить объединение с применением горизонтальной линии объединения.

Степану Митькину необходимо совершенствовать инструмент.
Сморите в книге "Учись ..." стр. 102, "рис. 61. Плохая схема." и "рис. 62. Хорошая схема.".


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Для точности терминологии.
Вообще-то это не временная диаграмма, а два взаимосвязанных алгоритма.
Временная диаграмма это примерно вот что:
Изображение
Изображение

В программировании учёт временной координаты показывается на диаграмме последовательности (sequence diagram):
Изображение
Изображение

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


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
Здравствуйте Владимир, я тоже немного не понял про временную диаграмму.
Возможно Вы имели ввиду логику процесса?


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

Зарегистрирован: Понедельник, 14 Декабрь, 2015 19:18
Сообщения: 127
LKom, Alexey_Donskoy, А_МУР.
Спасибо за Ваши комментарии, вопросы.
Думаю, благодаря им сам лучше разберусь в сути)

Думаю, ближе всего именно временная диаграмма(Sequence diagram).
Хотя.. нет.

Речь идет о "Событийно-ориентированном программирование":
1) Событийно-ориентированное программирование и язык ДРАКОН
2) Икона "Событие". Как изобразить?
3) Как с помощью силуэта изобразить асинхронный автомат?

Насколько понял, сейчас консенсуса нет и как-то Владимир Паронджанов говорил, что требуется широкое обсуждение этого вопроса перед принятием решения.
Я для себя выбрал вариант switch'a. Не знаю насколько он хорош по сравнению с другими.
Думаю, нужно еще лучше изучить код, чтобы понять как его отобразить в ДРАКОНе.


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

Зарегистрирован: Среда, 27 Сентябрь, 2017 18:44
Сообщения: 332
я предполагаю, что события лучше отображать как отдельная ветка алгоритма. Например событие "клик мышки по форме" и т.д


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

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Владимир Невзоров писал(а):
временная диаграмма (Sequence diagram)
Ещё раз: в устоявшейся инженерной практике "временная диаграмма" и "Sequence diagram" - это разные термины! Хотя в принципе это почти одно и то же, но термины смешивать всё-таки не стоит.

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

Пока предлагается начать с Sequence diagram, где показывается взаимодействие двух объектов, и потом каждый прямоугольник диаграммы раскрыть детально в отдельном алгоритме (Дракон-схеме).
Это будет методически верно, т.к. соответствует системной иерархии и принципам инкапсуляции.


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

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


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

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


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

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