DrakonHub будет навсегда отключен 1 декабря 2024 Узнать больше...

Блог >

Инструкция по рисованию ДРАКОН-схем

Автор: Степан Митькин

6 мая 2018 г.

Придумай значащее название

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

Постарайтесь придумать название покороче, не утратив значения.

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

Плохой пример:
Проверка
Проверка чего? Непонятно.

Плохой пример:
Проверка, является ли уровень воды достаточным
Многословно.

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

Одна икона — одна мысль

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

Не вставляйте в одну икону более одной мысли.

Слишком длинный блок текста — указание на то, что вы пытаетесь слепить вместе несколько идей. И ещё: будьте осторожны при виде запятых.

Как только вы заметили, что в иконе содержится несколько приказов, растащите эти приказы по отдельным иконам.

Разбивайте длинные участки текста
Разбивайте длинные участки текста

Используй прямой язык

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

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

Хороший пример:
Проверь пароль

Не всегда хорошо следовать формальному или вежливому стилю. Помните: цель — писать понятно.

Берегись слов И, ИЛИ и НЕ

Считайте И, ИЛИ и НЕ словами-паразитами, когда работаете над ДРАКОН-схемами. Каждое такое слово в тексте — повод подумать.

Если И соединяет два приказа в одном предложении, разбейте это предложение и поместите приказы в отдельные иконы.

Если же приказы соединяет слово ИЛИ, это приводит к неоднозначности. Например, что значит "дерись или беги"? Не понятно, что делать, драться или бежать. Здесь скрыто решение. Показывайте точки принятия решения в явном виде.

ИЛИ может скрыть решение
ИЛИ может скрыть решение

Внутри приказов использовать И и ИЛИ иногда можно.

Разрежь ремень ножом или ножницами

Здесь приказ — это "разрежь". Решение присутствует, но оно не сложное: используй тот инструмент, который есть.

Слова НЕ, И и ИЛИ вредят вопросам ещё больше, чем приказам.

Легче всего избавиться от отрицания:

  • удалите слово НЕ из вопроса;
  • поменяйте местами выходы Да и Нет из иконы "Вопрос".
Графическая формула отрицания
Графическая формула отрицания

Для устранения И и ИЛИ применяйте вот эти графические формулы.

Графические формулы для И и ИЛИ
Графические формулы для И и ИЛИ

Каждый из этих шаблонов может заменять либо И, либо ИЛИ, в зависимости от ситуации.

Определи исполнителей

Определите, какие исполнители будут выполнять приказы.

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

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

Не упоминайте исполнителя, давайте ему приказы
Не упоминайте исполнителя, давайте ему приказы

Если исполнителей в алгоритме несколько, используйте икону "Полка". Поместите исполнителя на верхнюю полку, а приказ — на нижнюю.

Если один исполнитель посылает сообщение другому, поместите обоих на верхнюю полку. Разделите исполнителей стрелкой или знаком >.

Исполнитель вверху, приказ внизу
Исполнитель вверху, приказ внизу

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

Ввод
Ввод

Если получатель сообщения не является исполнителем в алгоритме, используйте икону "Вывод".

Output
Output

Различай типы вопросов

Если на вопрос можно ответить "да" или "нет", используйте икону "Вопрос".

Вопрос
Вопрос

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

Что значит "слишком много"? Трудно дать точное определение для всех случаев. Обычно восемь — это ещё не слишком много.

Выбор
Выбор

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

  • Создайте отдельную таблицу, в которой возможным вариантам будут соответствовать действия.
  • Храните эту таблицу вне ДРАКОН-схемы.
  • Поместите ссылку на таблицу в иконе "Действие".

Не засоряйте диаграмму чрезмерным ветвлением.

Записывайте ветвление со множеством ответов в таблице
Записывайте ветвление со множеством ответов в таблице

Не позволяй диаграмме расти сверх меры

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

Какую диаграмму считать слишком большой?

Вот практический совет: пока диаграмма помещается на экране по вертикали, делать ничего не надо. Когда диаграмма становится больше экрана по высоте, пора принимать меры.

Один из способов уменьшить диаграмму — декомпозиция:

  • Создайте новую ДРАКОН-схему.
  • Вырежьте из большей диаграммы фрагмент и вставьте этот фрагмент в новую диаграмму.
  • Добавьте икону "Вставка" в исходную диаграмму на месте вырезанного фрагмента.
  • Поместите название новой диаграммы в икону "Вставка".
Insertion
Insertion

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

В ДРАКОНе есть другой способ бороться с размером диаграмм — силуэт. Силуэт размещает несколько блок-схем на одной визуальной сцене.

Превратить блок-схему в силуэт — это как разбить монолитный текст на главы.

Silhouette
Silhouette

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

Покажи царскую дорогу

Если в алгоритме есть царская дорога (happy path), покажите её.

Следуйте правилу "чем правее, тем хуже". Согласно этому правилу, царская дорога идёт прямо вниз по самой левой вертикали. Менее удачные пути идут в обход по правой стороне диаграммы.

Царская дорога
Царская дорога

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

Обозначь невидимые связи при помощи "общей судьбы"

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

Это ещё одна интересная возможность языка ДРАКОН. Общая судьба указывает на скрытые связи между иконами на разных вертикалях.

Общая судьба
Общая судьба

Укажи входы и выходы в иконе "Параметры"

Если вы хотите показать, что алгоритм имеет чётко обозначенные вход и выход, добавьте справа от заголовка икону "Параметры". В иконе "Параметры" укажите и входы, и выходы.

Входы и выходы в иконе Параметры
Входы и выходы в иконе Параметры

Изображай на диаграмме только самое интересное

Показывайте на ДРАКОН-схеме либо важное, либо нетривиальное поведение. Не рисуйте лишнего. Ограничьте объём информации, которую читатель должен усвоить.

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

Не программируй

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

Когда диаграмма становится слишком формальной, она превращается в программный код. Код выглядит отвратительно, код непонятен даже программистам.

Учитесь отбрасывать ненужные технические детали и формализмы.

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

Плохой пример:
Проверка удостоверяющих данных пользователя(имя пользователя, пароль)

Хороший пример:
Проверь пароль

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

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

Возьмём другой пример. Пользователь устанавливает соединение к серверу и проходит аутентификацию. Соединение закрывается автоматически после некоторого периода бездействия. Пользователь откладывает автоматическое отключение, когда совершает действия на сервере. Таким образом, соединение продлевается, пока пользователь работает с сервером.

Типичная ошибка — добавить шаг "Отложить автоматическое отключение" в каждую процедуру, доступную пользователю. Если процедур сорок штук, придётся изменить сорок алгоритмов. Так делать не надо. Вместо этого вставьте комментарий в ДРАКОН-схему "Отложить автоматическое отключение" с таким текстом: "Выполняйте эту процедуру после каждого действия пользователя". Программисты догадаются, как это реализовать.

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

Проблема в том, что конечному пользователю наплевать на эти тонкости. Поэтому не показывайте технические детали на ДРАКОН-схеме, которая задаёт поведение системы как единого целого. Изобразите на этой схеме последовательность действий системы без упоминания JavaScript-кода, сервера, сети, потоков и прочего.

Чем меньше на диаграмме технического мусора, тем легче диаграмму читать.

Резюме

  • Придумай значащее название
  • Одна икона — одна мысль
  • Используй прямой язык
  • Берегись слов И, ИЛИ и НЕ
  • Определи исполнителей
    • Когда исполнитель один, используй икону "Действие"
    • Когда исполнителей несколько, используй икону "Полка"
  • Различай типы вопросов
    • Для вопросов типа Да-Нет подходит икона "Вопрос"
    • Для вопросов с несколькими ответами подходит икона "Выбор"
    • Если вариантов очень много, храни ветвление в таблице
  • Не позволяй диаграмме расти сверх меры
    • Для декомпозиции используй икону "Вставка"
    • Для создания глав используй силуэт
  • Покажи царскую дорогу
  • Обозначь невидимые связи при помощи "общей судьбы"
  • Укажи входы и выходы в иконе "Параметры"
  • Изображай на диаграмме только самое интересное
  • Не программируй

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

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

Смотрите также

Визуальный язык ДРАКОН

Учим ДРАКОН по примерам

Иконы языка ДРАКОН

Видео: Как нарисовать ДРАКОН-схему