DRAKON.SU

Текущее время: Вторник, 19 Март, 2024 05:00

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
СообщениеДобавлено: Среда, 21 Декабрь, 2022 15:42 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5844
Откуда: Москва
https://habr.com/ru/post/706444/

Лабиринты из линий: превращаем сложный сценарий в понятную схему на языке ДРАКОН

Автор: Кирилл Богатов @Rainvention


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 19 Март, 2023 11:25 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5844
Откуда: Москва
Кирилл Богатов, выпускник Валерия Викторовича Лаптева сделал доклад в Высшей школе экономики

Цитата:
ИТ-лекторий: «Лабиринты из линий. Как улучшить восприятие блок-схем с помощью визуального языка ДРАКОН» от KODE

Приглашаем на ИТ-лекторий! Тема следующей встречи «Лабиринты из линий. Как улучшить восприятие блок-схем с помощью визуального языка ДРАКОН» от KODE.

Спикер: Кирилл Богатов, дизайнер разговорных продуктов, KODE

Вы узнаете:
- Что не так с традиционными языками моделирования (ГОСТ, UML)
- Что такое ДРАКОН и как его принципы помогают упростить описание алгоритмов
- Что такое визуальное программирование или как генерировать код прямо из диаграммы

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

Когда: 17 марта 2022 г в 13:00

Где: Онлайн


https://cs.hse.ru/announcements/819558164.html


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

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 100
Откуда: Томск
Видеозапись доклада: https://www.youtube.com/watch?v=1ZUNibW5cDQ


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Март, 2023 16:43 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Доклад (другой) Кирилла на конференции KODE
https://vimeo.com/777445621


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Март, 2023 10:22 

Зарегистрирован: Среда, 07 Январь, 2015 14:53
Сообщения: 1356
Ссылки QR из доклада:

Различие между ГОСТ и ДРАКОН
QR код успешно распознан:
https://miro.com/app/board/uXjVOhk_fs0=/

heyvoice
QR код успешно распознан:
https://t.me/heyvoice


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 27 Март, 2023 17:38 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 100
Откуда: Томск
Доклад очень интересный. Я не припомню, чтобы кто-то раньше освещал такое применение ДРАКОНа как написание сценариев для чат-ботов. Меня в общем порадовала современная, технически-продуманная, свежая подача знакомого материала. Чувствуется, что в ДРАКОН вдохнули немного жизни.
Теперь хотелось бы обсудить пару моментов, которые у меня вызвали вопросы. Обращаю ваше внимание на схему, которую Кирилл Богатов предоставил нам в докладе на Хабре, собственно.
Вложение:
856d29b6dbe963021f6aa828c3595f1c.png
856d29b6dbe963021f6aa828c3595f1c.png [ 34.71 КБ | Просмотров: 1631 ]
Посмотрим на вторую ветку, которую автор называет "порталом", это его терминология, ничего плохого в этом не вижу. Возникает первый вопрос - на основании чего сделано неожиданное разветвление перед блоками 02А и 02В? Мы должны рассмотреть перед этим условие? По смыслу задачи параллельного исполнения быть не может. Этот вопрос касается качества интерпретации блоков 02, 02А и 02В. Но в ДРАКОНе такая вещь не допускается.
Второй вопрос касается аппендикса в виде иконы Конец. Тоже неожиданная деталь. ДРАКОН специально позволяет избежать дублирования с помощью веток, а тут перед нами два одинаковых Конца. Лучше её вывести в отдельную ветку. Как поётся в песенке "все реки рано ли поздно попадают в океан". Икона Конец - "океан", единственный, в который впадают все "реки" схемы.

В видеоконференции, запись которой выложена на YouTube, заметил одну схему, которая снова пользуется эти правилом "конец-как-аппендикс". В результате схема превращается в замкнутый силуэт. Не смог найти схему в хорошем качестве, пришлось вырезать из видео. Красными стрелочками я отметил иконы Конец и обратил внимание на замкнутость силуэта.
Вложение:
коде.png
коде.png [ 116.61 КБ | Просмотров: 1631 ]

В связи с этими вопросами у меня появилось желание целого нового доклада. Ведь Кирилл Богатов упомянул, что используют ДРАКОН они в компании по-своему, т.е. используют модификацию ДРАКОНа, которую реализуют в конструкторе схем miro. Мне хотелось бы увидеть описание этой модификации и её отличия от оригинального ДРАКОНа в любых деталях.
Например, используются иконы Имя ветки и Адрес в виде треугольников с закруглёнными углами, чтобы человеческий глаз комфортнее воспринимал схему за счёт округлённых форм. Это дизайнерское правило. А вот такое правило: если сценарий невозможно продумать дальше некоторого блока, после этого блока надо добавить икону Конец. Это уже правило конструирования. В общем такой документик хотелось бы.
Для компании KODE это ещё один способ проявить себя публично в исследовательской сфере, а для нашей стороны форумчан - это получение критики ДРАКОНа и потенциальных идей на создание новых программных продуктов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Март, 2023 16:04 

Зарегистрирован: Вторник, 28 Март, 2023 13:40
Сообщения: 4
Здравствуйте! Отвечаю на ваши вопросы.

1. «На основании чего сделано неожиданное разветвление перед блоками 02А и 02В? По смыслу задачи параллельного исполнения быть не может».

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

В этом случае можно было бы использовать икону «Выбор» с вопросом «Что ответил пользователь?», но это привело бы к созданию ряда одинаковых икон и визуальному усложнению схемы. Поэтому мы решили обойтись без них. Это также соответствует тому, как мы ведем разработку ботов, т.к. для реализации подобной логики не используются условные операторы.

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

2. «ДРАКОН специально позволяет избежать дублирования с помощью веток, а тут перед нами два одинаковых Конца. Лучше её вывести в отдельную ветку.»

Здесь я солгасен, это могло бы улучшить схему. Спасибо за замечание.

Отмечу лишь, что в нашей сфере может быть «конца»: завершение сценария (пользователь в диалоге и может вызвать другой сценарий) и выход из диалога (бот закрыл окно чата).

3. «Мне хотелось бы увидеть описание этой модификации и её отличия от оригинального ДРАКОНа в любых деталях.»

Основные отличия:
- Добавили икону «Карточка ситуации». Она находится за пределами схемы и нужна для описания реакций бота на ошибки и одношаговые действия, доступные из нескольких мест сценария.
- Используем цветовое выделение икон «Имя ветки» и «Адрес», чтобы упростить навигацию.
- Иногда позволяем себе поднимать некоторые иконы «Адрес», если связанные с ними ветки получаются слишком короткими. Сделали для удобства, т.к. во время работы часто приходится приближать схему и совершать лишние движения, чтобы добраться до её низа.

Общий вид схемы можно посмотреть в Miro: https://miro.com/app/board/uXjVOhk_fs0=/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Март, 2023 18:33 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5844
Откуда: Москва
Кирилл Богатов писал(а):
1. «На основании чего сделано неожиданное разветвление перед блоками 02А и 02В? По смыслу задачи параллельного исполнения быть не может».

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

В этом случае можно было бы использовать икону «Выбор» с вопросом «Что ответил пользователь?», но это привело бы к созданию ряда одинаковых икон и визуальному усложнению схемы.

Вложение:
856d29b6dbe963021f6aa828c3595f1c.png
856d29b6dbe963021f6aa828c3595f1c.png [ 34.71 КБ | Просмотров: 1591 ]

1. Какой текст скрывается за шифрами 02А и 02В?
2. Можно ли добавить всего одну икону Выбор с вопросом:
Цитата:
Кому перевести деньги?
предполагая, что блоки 02А и 02В дают два ответа на этот вопрос?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Март, 2023 19:49 

Зарегистрирован: Вторник, 27 Апрель, 2021 05:25
Сообщения: 100
Откуда: Томск
Здравствуйте, Кирилл. Приветствую Вас на этом форуме и надеюсь на продуктивное общение.
Я долго перерабатывал Ваши ответы, пришлось подумать. Давайте по порядку отвечу:

Кирилл Богатов писал(а):
1. «На основании чего сделано неожиданное разветвление перед блоками 02А и 02В? По смыслу задачи параллельного исполнения быть не может».
В чат-ботах и голосовых помощниках на одно и то же сообщение можно ответить несколькими способами, каждый из которых приведет к разному исходу. Например, на вопрос «Хотите перевести деньги себе или другому пользователю» можно выбрать один из этих вариантов или назвать имя получателя.
В этом случае можно было бы использовать икону «Выбор» с вопросом «Что ответил пользователь?», но это привело бы к созданию ряда одинаковых икон и визуальному усложнению схемы. Поэтому мы решили обойтись без них. Это также соответствует тому, как мы ведем разработку ботов, т.к. для реализации подобной логики не используются условные операторы.
Возможно, что имеет смысл создать какую-нибудь небольшую икону для таких случаев, чтобы отличать подобные ситуации от параллельного исполнения, но мы с такими случаями пока не сталкивались.
То есть такое разветвление реализует оператор ИЛИ. В таком случае вопросов нет. Тем более условные обозначения реплик и действий дают это понять. Можно кстати отметить, что вы идёте по обратному пути создания гибридного языка программирования - от реализации к проектированию. Это ни хорошо, ни плохо. Это по-другому и наверное правильно, если вы хотите приручить ДРАКОН под себя.
По поводу обозначения этого разветвления иконой сомневаюсь. Но дело в том, что такое разветвление можно встретить в конструкции Гибридный цикл в ДРАКОНе. Хотя, добросовестные чертёжники укажут в точке слияния стрелку влево от идущей слева линии, встречаются варианты, в которых этого нет. Я к тому, что точку разветвления можно обозначить каким-то простым символом, незаурядным. Например, маленький ромбик ... оранжевый.

Кирилл Богатов писал(а):
2. «ДРАКОН специально позволяет избежать дублирования с помощью веток, а тут перед нами два одинаковых Конца. Лучше её вывести в отдельную ветку.»

Здесь я солгасен, это могло бы улучшить схему. Спасибо за замечание.

Отмечу лишь, что в нашей сфере может быть «конца»: завершение сценария (пользователь в диалоге и может вызвать другой сценарий) и выход из диалога (бот закрыл окно чата).
Здесь, думаю, всё равно какая ситуация вызывает завершение диалога. Последняя ветка с иконой Конец может быть и не такой короткой. Вы можете туда поместить все операции, характеризующие окончание диалога - прощальные слова чат-бота, информацию рекомендательного характера. С другой стороны, если мы пойдём по пути лаконичности, то Вы сами писали простую вещь, что если путь где-то обрывается, значит дальше сценария нет и бот прекращает общение. То есть вообще икону "Конец" можно не использовать. И таким образом мы избавимся не только от одной иконы, но и от ветки и путей, ведущих к этой ветке.
Или компромиссный вариант такой: допустим перед завершением чат-бот обязательно должен что-то сказать, сделать, вывести. Тогда список всех действий, после которых следует конец диалога, помещаем в "контекст" карточки событий "Завершение диалога", а соответствующие действия станут "реакцией" на неё.

Кирилл Богатов писал(а):
3. «Мне хотелось бы увидеть описание этой модификации и её отличия от оригинального ДРАКОНа в любых деталях.»

Основные отличия:
- Добавили икону «Карточка ситуации». Она находится за пределами схемы и нужна для описания реакций бота на ошибки и одношаговые действия, доступные из нескольких мест сценария.
- Используем цветовое выделение икон «Имя ветки» и «Адрес», чтобы упростить навигацию.
- Иногда позволяем себе поднимать некоторые иконы «Адрес», если связанные с ними ветки получаются слишком короткими. Сделали для удобства, т.к. во время работы часто приходится приближать схему и совершать лишние движения, чтобы добраться до её низа.
Значит, список отличий невелик и на отдельную публикацию, конечно, не наберётся. Хорошо, что Вы этим поделились здесь. Ещё мне кажется, особенность Ваших схем в уникальности абсолютно всех элементов. Всё равно в некоторых алгоритмах встречается повторяющаяся операция, которую ну никак не выделить в отдельную ветку или как-то ещё упростить. У Вас в схемах это достигается за счёт большого количество ветвей и за счёт использования карточек событий. И вот карточки событий, на которые я раньше большого внимания не обратил, наверное, являются самым любопытным элементом в концепции. Да, они экономят место в схеме и сами по себе компактно представлены, но ведь это текстовое представление алгоритма причём разной сложности. Я попробовал представить карточки ситуаций из Вашего доклада на Хабре в виде Дракон-схем. Последние две я вообще объединил в одну. В голубых прямоугольниках реплики бота, в серых - действия пользователя. Конечно, это вопрос удобства и привычки, но я вижу ситуационный подход к моделированию именно в атрибуте "контекст" карточек событий. Это по сути икона Вставка, которая явно в дракон-схеме не присутствует, чтобы не затруднять просмотр.
Вложение:
20230328231852.png
20230328231852.png [ 40.18 КБ | Просмотров: 1588 ]
Вложение:
20230328232132.png
20230328232132.png [ 40.63 КБ | Просмотров: 1588 ]
Вложение:
20230328232701.png
20230328232701.png [ 81.87 КБ | Просмотров: 1588 ]

Кирилл Богатов писал(а):
Общий вид схемы можно посмотреть в Miro: https://miro.com/app/board/uXjVOhk_fs0=/

Возник вопрос по одной схеме. Поясните, пожалуйста, момент, изображённый на рисунке. Видимо, это случайная ошибка, и тут имелся ввиду переключатель.
Вложение:
вопрос.PNG
вопрос.PNG [ 32.73 КБ | Просмотров: 1588 ]


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Март, 2023 20:02 

Зарегистрирован: Вторник, 28 Март, 2023 13:40
Сообщения: 4
Владимир Паронджанов писал(а):
1. Какой текст скрывается за шифрами 02А и 02В?
2. Можно ли добавить всего одну икону Выбор с вопросом:
"Кому перевести деньги?", предполагая, что блоки 02А и 02В дают два ответа на этот вопрос?

1. На схеме выше изображен абстрактный пример, не привязанный к конкретному сценарию.
2. Если добавить икону «Выбор», то она будет дублировать текст вышестоящего блока, а выходящие из неё варианты ответа — блоки снизу. Убрать синие и зеленые блоки нельзя, т.к. в них содержится важная информация: id, примеры реплик и доп. информация.

Вложение:
2023-03-28_181534.png
2023-03-28_181534.png [ 35.69 КБ | Просмотров: 1587 ]


+ в коде икона «Выбор» никак не отображается. Понимаю, что её отсутствие создаёт ощущение параллельного выполнения потоков, но мы ни разу не сталкивались с подобными ситуациями, т.к. любая реплика пользователя всегда исключает все остальные (нельзя произнести две реплики сразу).

Вложение:
2023-03-28_183110.png
2023-03-28_183110.png [ 5.77 КБ | Просмотров: 1587 ]


Икону «Выбор» мы используем в других ситуациях. Например, если пользователь передаёт показания счётчика и сразу называет его тип, однако эта информация повлияет на сценарий позже. Тогда мы ставим икону «Выбор» с текстом «Какой тип у счётчика?» и несколькими вариантами, включая вариант без указания типа.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Март, 2023 20:24 

Зарегистрирован: Вторник, 28 Март, 2023 13:40
Сообщения: 4
Alex_st_Tomsk писал(а):
По поводу обозначения этого разветвления иконой сомневаюсь. Но дело в том, что такое разветвление можно встретить в конструкции Гибридный цикл в ДРАКОНе. Хотя, добросовестные чертёжники укажут в точке слияния стрелку влево от идущей слева линии, встречаются варианты, в которых этого нет. Я к тому, что точку разветвления можно обозначить каким-то простым символом, незаурядным. Например, маленький ромбик ... оранжевый.


Тоже думал по поводу ромбика. Но пока потребности в этом не было, т.к. все синие блоки априори являются взаимоисключающими (см. пост выше).

Alex_st_Tomsk писал(а):
С другой стороны, если мы пойдём по пути лаконичности, то Вы сами писали простую вещь, что если путь где-то обрывается, значит дальше сценария нет и бот прекращает общение. То есть вообще икону "Конец" можно не использовать. И таким образом мы избавимся не только от одной иконы, но и от ветки и путей, ведущих к этой ветке.


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

Alex_st_Tomsk писал(а):
Я попробовал представить карточки ситуаций из Вашего доклада на Хабре в виде Дракон-схем. Последние две я вообще объединил в одну. В голубых прямоугольниках реплики бота, в серых - действия пользователя. Конечно, это вопрос удобства и привычки, но я вижу ситуационный подход к моделированию именно в атрибуте "контекст" карточек событий. Это по сути икона Вставка, которая явно в дракон-схеме не присутствует, чтобы не затруднять просмотр.


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

Alex_st_Tomsk писал(а):
Возник вопрос по одной схеме. Поясните, пожалуйста, момент, изображённый на рисунке. Видимо, это случайная ошибка, и тут имелся ввиду переключатель.


Это ошибка, оставшаяся со старой версии схемы. Спасибо, что обратили внимание.

Alex_st_Tomsk писал(а):
Но по итогу могу сказать, что мне было интересно порассуждать на эту тему, посмотреть как с ДРАКОНом обращаются сегодня и прямо параллельно со мной. Спасибо Вам, Кирилл за доклад и обратную связь на форуме.


И вам спасибо. Отметил себе пару моментов для улучшения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 28 Март, 2023 21:58 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5844
Откуда: Москва
Кирилл, в вашей схеме здесь справа
Вместо нее можно использовать такую схему? Или нельзя?
Если нельзя, то почему?
Вложение:
Переключатель      .png
Переключатель .png [ 23.88 КБ | Просмотров: 1582 ]


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 29 Март, 2023 12:36 

Зарегистрирован: Вторник, 28 Март, 2023 13:40
Сообщения: 4
Владимир Паронджанов писал(а):
Кирилл, в вашей схеме здесь справа
Вместо нее можно использовать такую схему? Или нельзя?
Если нельзя, то почему?
Вложение:
Переключатель .png

В этом случае на схеме могут появиться следующие типы икон:
1. Зеленый прямоугольник - для обозначения реплик бота, на которые можно ответить только одним способом.
2. Зеленый треугольник («выбор») — для обозначения реплик бота, на которые можно ответить несколькими способами.
3. Серый треугольник («выбор») — для разбиения схемы на потоки в зависимости от значения определенного параметра.

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

Кроме того, некоторые реплики бота могут не содержать условия или вопрос. Например, когда мы выводим на экран карточки товара с кнопками «Добавить», «Изменить» и «Удалить». Сопроводительного текста «Выберите действие» при этом на экране не будет.


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

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


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

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


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

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