Программирование на языке дракон
Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность/Надёжность
Инструменты пользователя
Инструменты сайта
Содержание
Программа «ИС Дракон»
Программа «ИС Дракон» предназначена для:
— практической алгоритмизации вашей деятельности,
— формулирования ваших задач,
— формализации ваших знаний.
Программа представляет собой инструмент:
— визуальной техники мышления и общения,
— визуального проектирования алгоритмов деятельности и программ,
— визуального программирования,
— формирования алгоритмических баз деятельности.
Программа «ИС Дракон» (Интегрированная Среда Дракон) является средой работы с Дракон-алгоритмами.
С помощью «ИС Дракон» внедряется алгоритмическая культура во многие виды деятельности.
Скачать программу «ИС Дракон»
После скачивания программа работает с ограниченной функциональностью. Чтобы включить полную функциональность, необходимо обратиться к автору программы Г.Н. Тышову.
Указания пользователю
Указания программисту
В программе есть средства настройки на различные языки программирования. Программа позволяет производить сборку Дракон-схем в исходные тексты программ на языках имеющих операторы: комментарий, метка, безусловный переход (GOTO), переход по условию; к примеру языки семейств 1С, Delphi, C. Сборка программного кода икон в файл производится внутренним Маршрутным транслятором.
Для работы с языками программирования без GOTO и с ассемблерами предусмотрен режим сборки без Маршрутного транслятора в заданном программистом порядке.
Для языка Tcl, без GOTO, есть опыт формирования программного кода Маршрутным транслятором и с последующей доработкой, смотрите http://forum.oberoncore.ru/viewtopic.php?p=89576#p89576
Заставка программы ИС Дракон
Что такое дракон-лист?
Редактирование дракон-схемы
Икона 3 выбрана для редактирования.
Знаком «?» в иконах Адрес и Ветка отмечено отсутствие передачи управления. Передача управления визуально отображается штриховой линией.
Особенности
Отличительной особенностью программы является высокая степень автоматизации ввода графики.
Для отображения бизнес-процессов иконы дополняются наименованием участников бизнес процесса.
Все отображаемые тексты могут быть многострочными и большого объема.
Максимальное количество строк в иконе задается в настройках программы, полностью текст отображается в текстовом редакторе на вкладке.
Описание формата DRT
Методические указания по работе с ИС Дракон
Калиногорский Н. А. Автоматизация процесса разработки алгоритмов управления в интегрированной среде Дракон. \ Методические указания. — Новокузнецк, Изд. центр СибГИУ, 2013. — 50с. Методические указания разработаны на Кафедре прикладной информатики Института информационных технологий и автоматизированных систем Сибирского государственного индустриального университета, г. Новокузнецк.
Печать выполнять так: сохраните графический файл, печатайте его в PAINT-е. Там есть возможности печати с масштабированием и раскладкой на несколько листов формата А4, есть настройки для печати.
Уроки ДРАКОНа
Для освоения приёмов работы с программой ИС Дракон полезно посмотреть видеоролики. Показан процесс от первого запуска редактора до загрузки полученной прошивки в микропроцессор.
Примечание.
Ролики записывались с устаревшей версией ИС Дракон. Тем не менее, они хорошо передают суть работы программы. Подробнее смотрите здесь. Автор С.Д. Ефанов.
Дополнительный сайт программы «ИС Дракон»
Текстовые варианты и файлы Дракон-схем уроков
Черновики Геннадия Тышова
Сопроводительная информация может содержат указание на законодательные и организационно-распорядительные документы, содержать фрагменты документов.
Наличие сопроводительной информации важно для лиц работающих с юридически значимыми алгоритмами. Наличие к иконе сопроводительной информации обосновывает происхождение и срок действия юридической нормы отображенной в иконе. Именно наличие сопроводительной информации определяет актуальность юридически значимого Дракон-алгоритма.
Программа ИС Дракон разработана на основе визуальных алгоритмических языков Дракон и Гном созданных В.Д. Паронджановым и государственного стандарта ГОСТ 19.701-90 (ISO 5807–85). Идеи и цели языка Дракон получили развитие для практического и широкого применения.
Создание и редактирование Дракон-схем выполняется в ИС Дракон.
Дракон-алгоритмы на планшетниках
Некоторые вопрос использования Дракон-алгоритмов созданных в ИС Дракон рассмотрены на форуме в теме «ИС Дракон и Андроид».
ИС Дракон работает в других операционных системах
В UNIX-подобными ОС работает с программой Wine.
В MacOS работает с программой Parallels Desktop.
Действия к иконам 19 и 21 выполняются участниками бизнес-процесса.
Дракон-лист отображен в режиме программирования.
Точки ввода текста (до 4-х квадратов) являются A,B,S,P-текстами: A,B для ввода сопровождающей информации, P для ввода программного кода, S для просмотра собранного программного кода. При наличии текста квадрат темный.
Лист можно сопроводить колонтитулами: верхний средний, нижний левый, нижний средний, нижний правый.
Знаком »?« отмечены обязательные места ввода текста в иконы, места ввода иконы в блоке икон для обеспечения функциональности блока.
Визуальный язык ДРАКОН и его применение в ракетно-космической отрасли, медицине и других областях. Видео доклада В. Паронджанова
ДРАКОН иногда называют правильными блок-схемами. Но в первую очередь он отлично подходит для записи алгоритмов.
Внутри НПЦ АП (Научно-производственный центр автоматики и приборостроения) ДРАКОН используется с помощью закрытой технологии ГРАФИТ-ФЛОКС.
За рамками НПЦ АП есть открытые общедоступные среды, на которых можно писать реальные программы на так называемых гибридных языках, например: ДРАКОН-Си, ДРАКОН-JavaScript, ДРАКОН-Java, ДРАКОН-C#, ДРАКОН-Python, ДРАКОН-Tcl, ДРАКОН-ASM и т.д.
Доклад представлен на Международной научно-технической конференции «Системы и комплексы автоматического управления летательных аппаратов», посвящённой 105-летию со дня рождения академика АН СССР Н.А. Пилюгина. Конференция проводилась 21 мая 2013 в Институте проблем управления РАН.
Среды для разработки на ДРАКОНе
Ой, у вас баннер убежал!
Читают сейчас
Редакторский дайджест
Присылаем лучшие статьи раз в месяц
Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.
Похожие публикации
Использование Graphviz для построения блок-схем
Как работает рекурсия – объяснение в блок-схемах и видео
Блок-схемы
Средняя зарплата в IT
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Минуточку внимания
Комментарии 18
Дружелюбный Русский Алгоритмический язык, Который Обеспечивает Наглядность
Польза в том, что упрощается процесс алгоритмизации + радикально снижается количество ошибок.
Там в списке есть статья, как парень микроконтроллеры программировал. К ней несколько видеороликов прилагается по среде ИС Дракон (говорят что Drakon Editor попроще будет).
На ДРАКОНе удобно зависывать любую деятельность поддающуюся или нуждающуюся в алгоритмизации. А некоторые программируют на обычных языках в ДРАКОН-средах. Среды, конечно, ещё сыроваты, но разработчики прислушиваются к мнениям и довольно шустро работают.
В общем то это основной мотив на форуме forum.oberoncore.ru — там уже больше года просят убрать Дракон с форума на отдельный сайт, чтобы форум был для того, для чего изначально предназначался — для обсуждения Оберона (точнее в основном Компонентного Паскаля, а еще точнее — BlackBox Component Builder).
Тут дело в том, что во-первых драконоиды много более активные чем обероновцы, соответственно бОльшую часть постов теперь на этом форуме про дракон, а не оберон. А во-вторых, посты у них большие, пространные и малосодержательные. Читать такое частенько сложновато.
Одна из первых рецензий на книгу Паронджанова. Почти десятилетней давности.
Тогда я очень радовался, что, наконец, нашёлся у нас человек, который исследует вопросы когнитивной эргономики. Потому что эти вопросы не решены до сих пор, а надо было — ещё в том веке…
К сожалению, с тех пор исследования не продвинулись ни на миллиметр.
Продолжается агрессивный пиар самого слабого и спорного из описанного в книге: языка ДРАКОН.
Моё мнение таково. Сегодня визуальные языки давно привычны и широко употребляются в разных областях программирования.
Предложенная технология может привнести что-то новое только при условии радикального пересмотра и дополнительных исследований не только по эргономике визуальных представлений, но и по когнитивным технологиям в целом.
Но проблематика интересная, и заниматься ею необходимо.
Оооооочень проблематично это использовать для реальной разработки:
1. Как это хранить в версионнике? Как должны выглядеть диффы?
2. Как осуществлять полноценную навигацию и поиск в том числе по кускам кода? А если его РЕАЛЬНО много?
3. Блок-схемы сильно менее наглядны, чем код, вроде давно уже всем понятно.
4. Набирать текст тупо быстрее и удобнее, чем рисовать.
5. Конечные автоматы — далеко не единственная парадигма программирования. Насколько удобно в этой парадигме использовать, например, функции высших порядков? Вообще stateless-код?
Ну и не забываем про Windows Workflow Foundation и еще множество workflow-движков, где реализовано полностью то же самое, только применимое в реальной жизни.
Идея устарела лет на… В том виде, в котором здесь показана — полнейшая профанация и фейспалм.
Тут нужно чётко разделять критику концепции и реализации. Что вы критикуете?
Предположу что концепцию и исходя из этого буду отвечать.
1) Diff — это текстовый инструмент. Возможно для дракона нужны будут новые типы дифов, графические.
Лично я не вижу проблем и с текстовыми дифами: например, в конечном итоге ДРАКОН-Си преобразуется в программу на Си. А сам ДРАКОН-файл можно делать в XML-формате.
2) Соответственно и проблемы поиска нет. Это реализуется в рамках среды.
4) Главная фишка не в скорости написания, а в скорости понимания + минимизации ошибок в конечном продукте. Дракон в ракетно-космической отрасли был создан. Фишка Дракона — учёт правил эргономики. Блок-схемы на драконе получаются более понятные, чем обычные. P.S. У меня рисовать получается быстрее.
5) Есть гибридный язык ДРАКОН-Erlang. Поддерживается в Drakon Editor.
множество workflow-движков, где реализовано полностью то же самое
Похожее, да не то. Буду благодарен ссылкам на другие движки кроме WWF.
Я критикую концепцию.
1. Ок. Предложите вариант графического диффа.
2. Не вижу как.
3. А книги бы умерли и остались бы только комиксы. Про понятность блок-схем тоже писали уже все кому не лень.
4. Вот я с трудом их понимаю. Потому что они большие и запутанные. А если резать на мелкие «процедуры» — влетаем в проблему навигации. Вы понимаете что цикломатическая сложность управляющих алгоритмов ракеты и современной бизнес-логики — очень разные вещи?
5. Чуть позже, с телефона пишу.
1) Самый простой способ показывать исчезнувшие блоки одним цветом, а появившиеся другим. Если изменилось только содержание блока, то можно внутри обойтись традиционными плюсами и минусами
Вообще diff, как средство понимания изменений, годится только для небольших изменений. Если изменения глобальны, то мы имеем труднопонимаемую кашу.
Если diff вас интересует как инструмент создания патчей, то текстовые версии обычного diff могут применимы к программам и ДРАКОН-программам
2) Ctrl-F, вводим слово. Далее среда выделяет один блок, потом другой и т.п.
3) Комиксами трудно нарисовать законы. Комикс — очень трудоёмкий жанр.
Наверное, писали про понятность обычных блок-схем. ДРАКОН — это не обычные блок-схемы. Вот краткое введение.
5) Возможно, если в эти продукты ввести поддержку ДРАКОНа, их эффективность повысится.
Мне не нравится название, но нравятся три идеи в языке Дракон:
1. Деление алгоритма на ветки;
2. Правило «чем правее, тем хуже»;
3. Правило «шампура»: основная ветвь процесса должна идти по строгой вертикали.
Это очень хорошие идеи. Опишу опыт применения в реальных проектах.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
Как разработать требования к программному обеспечению на языке ДРАКОН
Автор: Степан Митькин
Требуй чёткой постановки задачи
Разработка требований к программному обеспечению начинается с постановки задачи. Чётко поставленная задача — необходимое входное условие для составления требований. Если клиент не предоставил описание задачи, такое описание придётся составить и согласовать с клиентом.
Описание делают коротким, желательно в виде пунктов.
Изображения и списки вместо прозы
Чем меньше сплошного текста в требованиях, тем лучше. Вместо прозы рисуйте диаграммы, составляйте списки и таблицы.
В состав требований будут входить следующие материалы:
Эта статья рассказывает, как рисовать ДРАКОН-схемы для требований к программному обеспечению. Как составлять приёмочные тесты из ДРАКОН-схем, смотрите здесь: ссылка.
Найди входные точки
Рассматривайте программу как пассивный чёрный ящик, который ничего не делает, пока не получит толчок из внешнего мира. Во внешнем мире происходят события, которые приводят программу в движение. Это входные точки в систему.
Создайте список входных точек. Каждой входной точке соответствует алгоритм, по которому программа будет реагировать на событие.
Входные точки разбивают единое полотно программы на отдельные куски. Действует принцип «разделяй и властвуй».
Важно найти все входные точки. Это не всегда просто, так как некоторые входные точки не очевидны.
Возьмём пример с входом на сайт. Первая входная точка — «Вход с паролем». Пользователь нажимает кнопку «Войти», чтобы залогиниться. Здесь всё понятно.
«Система автоматически закрывает сессию после бездействия пользователя.» Данное утверждение скрывает дополнительную входную точку — автоматическое закрытие сессии. Это событие примечательно тем, что произойдёт в будущем.
Когда алгоритм планирует действие в будущем, это действие — тоже входная точка. В таком случае внешний толчок во входную точку приходит не от пользователя, а как бы по сигналу будильника. Не смотря на это отличие, документируйте и тестируйте входные точки отложенных действий на общих основаниях.
Откладывание автоматического закрытия сессии — ещё одна скрытая входная точка. Каждым своим действием на сайте пользователь откладывает автоматическое закрытие сессии. Описание задачи не указывает это в явном виде, и поэтому эту входную точку легко пропустить.
Нарисуй ДРАКОН-схему для каждой входной точки
Приход внешнего толчка во входную точку запускает процесс. Алгоритм этого процесса описывают одной ДРАКОН-схемой верхнего уровня и, возможно, несколькими подчинёнными ДРАКОН-схемами.
Разложи процесс на шаги — приказы и вопросы
Чтобы создать ДРАКОН-схему процесса, изобразите поведение системы в виде последовательности приказов и вопросов. Соблюдайте принцип: одна икона — одна мысль. Читайте руководство по рисованию ДРАКОН-схем здесь: ссылка.
Рассмотрим входную точку «Вход с паролем» из нашего примера.
Царская дорога
Царская дорога, или happy path, идёт сверху-вниз по главной вертикали:
Менее успешный сценарий уходит вправо:
Стрелки — только для циклов
Стрелки — графические детали, которые отвлекают внимание и занимают место. Для линейного течения событий в ДРАКОНе не применяют стрелки. В ДРАКОНе время течёт вниз. Так как направление движения процесса известно, простых линий достаточно.
Стрелка на ДРАКОН-схеме означает цикл и встречается редко, поэтому циклы бросаются в глаза.
Обратите внимание, что решения, принимаемые на основании наличия пользователя и правильности пароля, вынесены в головную схему. Как неправильное имя пользователя, так и неправильный пароль вызывают одинаковое видимое поведение системы: сообщение об ошибке, пауза на три секунды, новая попытка.
Отбрось ненужные детали
ДРАКОН-схема показывает последовательность действий системы точно и однозначно, но без лишних технических деталей и формализмов.
В нашем примере икона «Ввод» задаёт, что процесс получает данные извне — от пользователя.
Схема не объясняет, как работают виджеты для имени пользователя и пароля, показываются ли эти виджеты одновременно или по очереди. Читатель узнаёт только суть: пользователь вводит данные в систему.
Аналогично, икона «Вывод» отправляет данные наружу из процесса — сообщение об ошибке пользователю. В каком месте на экране появляется сообщение и с каким шрифтом — не важно на этом уровне абстракции.
Икона «Пауза» говорит: процесс замирает на три секунды, и пользователь не влияет на ход процесса в это время. ДРАКОН-схема «Вход с паролем» не указывает, как реализовать паузу. Возможно, вся страница или только некоторые виджеты будут «заморожены» на время паузы. Такие технические детали не требуются для понимания работы системы в целом. Если нужно, эти детали можно описать в требованиях более низкого уровня.
Избегай переменных и параметров
Программисты любят переменные. Программисты кладут в переменные значения и передают переменные в аргументы функций. Переменные превращают требования в нечитаемый программный код. Место переменных — в программах, не в требованиях.
Избегайте переменных в требованиях, если можете. Это относится и к передаче параметров в подчинённые ДРАКОН-схемы.
Процедура «Проверить пароль» принимает в составе входных данных пользователя и пароль. ДРАКОН-схема «Проверить пароль» показывает это в иконе «Параметры».
В ДРАКОН-схеме «Вход с паролем» икона «Вставка» вызывает подчинённую ДРАКОН-схему «Проверить пароль», но в тексте иконы нет переменных «пароль» и «пользователь». В иконе «Вставка» есть только название подчинённой схемы — «Проверить пароль».
Если щёлкнуть на этой иконе правой кнопкой мыши, в контекстном меню появится возможность перейти к схеме «Проверить пароль». DrakonHub автоматические вставил эту ссылку, так как нашёл имя схемы в тексте иконы.
Чем правее, тем хуже
Рассмотрим процедуру «Проверить пароль». Царская дорога на этой диаграмме идёт прямо, без поворотов по главной вертикали:
Кроме наилучшего сценария, через диаграмму проходят и другие, менее успешные пути. Правило «чем правее, тем хуже» предписывает сортировать пути через диаграмму. Чем менее удачно складывается сценарий, тем правее этот сценарий расположен на диаграмме.
В нашем примере неправильный пароль хуже правильного, а блокировка пользователя хуже, чем ещё один шанс попробовать.
Сообщай намерение в приказах и вопросах
На диаграмме «Проверить пароль» нет никаких переменных или счётчиков для подсчёта неудачных попыток входа. Для программиста естественно завести такой счётчик и совершать с ним следующие действия:
Не программируйте в требованиях, уберите переменные. Вместо того, чтобы жонглировать значениями переменных, поместите в вопрос или приказ намерение, желаемый результат этого шага. В нашем примере намерение — выяснить, совершил ли пользователь 3 неудачных попытки входа. Разработчики догадаются, как реализовать это намерение.
Иконы языка ДРАКОН
Действие | |
Вопрос | |
Параметры | |
Комментарий | |
Выбор | |
Вставка | |
Цикл ДЛЯ | |
Одновременная работа | |
Ввод | |
Вывод | |
Простой ввод | |
Простой вывод | |
Полка | |
Параллельный процесс | |
Контрольный период | |
Время | |
Пауза | |
Таймер | |
Время группы |
Действие
В иконе Действие содержится команда или приказ совершить какое-то действие.
Вопрос
На икону Вопрос можно ответить Да или Нет. Метки Да и Нет можно поменять местами из контекстного меню, если щёлкнуть правой кнопкой мыши на иконе Вопрос.
Параметры
В иконе Параметры помещают входные данные для алгоритма. Например, чтобы построить маршрут, нужно знать начальную точку и точку назначения.
Комментарий
Икона комментарий объясняет что-то читателю диаграммы. Исполнитель может не принимать её во внимание во время выполнения процедуры.
Выбор
Икона Выбор используется, когда есть вопрос, на который можно дать несколько ответов, и причём нельзя ответить Да или Нет. Пустая икона Вариант справа означает «все остальные ответы».
Вставка
Икона Вставка указывает на другую ДРАКОН-схему, которая находится где-то ещё. В этом примере мы запускаем процедуру «Опубликовать отчёт» и ждём её завершения.
Цикл ДЛЯ
Икону Цикл ДЛЯ применяют в следующих случаях:
Одновременная работа
Макро-икона Одновременная работа задаёт два или больше параллельных пути исполнения. Действия на путях макро-иконы Одновременная работа производятся одновременно.
Ввод
Икона Ввод получает данные из внешнего мира. Она состоит из двух частей: верхней и нижней.
Верхняя часть содержит ключевое слово или ключевую фразу. Обычно там есть глагол.
Нижняя часть содержит объект или описательную информацию.
Вывод
Икона Вывод посылает данные или команду во внешний мир. Как и икона Ввод, Вывод имеет две части: верхнюю для ключевой фразы и нижнюю для описательной информации.
Простой ввод
Икона Простой ввод так же получает данные из внешнего мира, как и обычная икона Ввод. Единственное отличие: она состоит только из одной части.
Простой вывод
Икона Простой вывод так же отправляет данные или команду во внешний мир, как и обычная икона Вывод. Единственное отличие: она состоит только из одной части.
Полка
Икона Полка может иметь несколько значений.
Значение | Верхняя часть | Нижняя часть |
---|---|---|
Приказ исполнителю | Исполнитель. Например, бухгалтер. | Приказ. Например, Распечатай счёт-фактуру |
Отправить сообщение от отправителя получателю | Отправитель и получатель. Например, браузер и сервер приложения. | Сообщение, например, запрос «Logon with Facebook» |
Произвести действие над объектом | Ключевая фраза с действием | Объект, над которым будет произведено действие. |
Назначить значение переменной | Переменная | Значение |
Параллельный процесс
Икона Параллельный процесс управляет процессом, который выполняется одновременно с основным. Верхняя часть иконы Параллельный процесс может содержать одну из следующих команд: Пуск, Останов, Стоп, Рестарт.
Параллельный процесс выполняется в фоновом режиме. Его алгоритм задаётся в другой ДРАКОН-схеме. Выполнение основного процесса возобновляется немедленно, не дожидаясь завершения параллельного процесса. В этом отличие данной иконы от иконы Вставка. Связь с параллельным процессом может происходить при помощи икон Ввод и Вывод.
Контрольный период
Икона Начало контрольного периода задаёт начало критической процедуры, которая должна быть закончена за указанный промежуток времени. Этот период времени пишут внутри иконы Начало контрольного периода.
Икона Конец контрольного периода задаёт конец критической процедуры.
Время
Икона Время присоединяется слева к другой иконе. В зависимости от контекста, икона Время может иметь следующие значения:
Пауза
Икона Пауза задерживает выполнение следующей иконы. Время задержки пишут внутри иконы Пауза.
Таймер
Икона Таймер работает вместе с иконой Время.
Время группы
Икона Время группы указывает, что некоторый набор действий должен быть завершён в течение указанного промежутка времени.