Блок-схема процесса разработки программного обеспечения

Блок-схема процесса разработки программного обеспечения: символы, типы и примеры.

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

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

Блок-схемы, которые обновляются сами по себе

SMART TS XL Генерирует точные блок-схемы непосредственно из вашего исходного кода — ручное рисование не требуется.

Узнать больше

Что такое блок-схема в разработке программного обеспечения?

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

Блок-схемы появились в 1920-х годах в промышленной инженерии, где использовались для документирования производственных процессов. В 1940-х и 1950-х годах эта методика была формализована для вычислительной техники, а к моменту, когда структурированное программирование стало стандартной практикой в ​​1970-х годах, блок-схемы стали неотъемлемой частью документации по проектированию программного обеспечения. Сегодня блок-схемы по-прежнему активно используются для проектирования алгоритмов, документации по адаптации новых сотрудников, картирования бизнес-процессов и передачи логики нетехническим заинтересованным сторонам, даже несмотря на то, что более специализированные типы диаграмм (UML, диаграммы последовательности, диаграммы состояний) взяли на себя некоторые функции, которые изначально выполняли блок-схемы.

В чём разница между блок-схемой и технологической диаграммой?

Эти термины часто используются взаимозаменяемо, и в большинстве случаев это безвредно. Однако иногда проводится различие: блок-схема обычно представляет логику отдельного алгоритма или программы, решения, циклы, ветвления внутри кода. Диаграмма потока процесса (или блок-схема процесса) чаще представляет бизнес-процесс, последовательность действий между людьми, отделами или системами, часто без детальной логики принятия решений, характерной для блок-схем на уровне кода. На практике символы и условные обозначения являются общими для обоих типов диаграмм, и используемый термин в значительной степени определяется вашей аудиторией и отраслевыми нормами, а не строгими техническими рамками.

Символы блок-схем: Полный справочник

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

СимволФормаИмяСмысл
Овальный / Закругленный прямоугольникТерминатор (Начало/Конец)Отмечает начало или конец процесса.
ПрямоугольныеРазработкаПредставляет собой отдельный шаг, действие или операцию.
DiamondРешениеТочка ветвления с двумя или более возможными исходами (Да/Нет, Верно/Неверно)
ПараллелограммВвод, выводПредставляет данные, поступающие в процесс или покидающие его.
HexagonПодготовкаПредставляет собой этап настройки, например, инициализацию счетчика цикла.
▭ (с двойной рамкой)Предопределенный процессВызов отдельного, уже определенного процесса или подпрограммы.
ДокументПредставляет собой печатный или сгенерированный документ.
Маленький кругсоединительСоединяет две точки на блок-схеме, часто используется для предотвращения пересечения линий.
Треугольник (острием вниз)идтиОбъединяет несколько путей в один.
Треугольник (острием вверх)ВыпискаРазделяет один путь на несколько
ArrowПоточная линияУказывает направление потока процесса.
Внестраничный соединительУказывает на то, что поток продолжается на другой странице.

Два символа, которые каждый читатель должен сразу распознать, — это прямоугольник (этап процесса) и ромб (точка принятия решения с несколькими вариантами выхода). Только эти два символа охватывают большую часть содержимого любой блок-схемы. Овальный/закругленный разделитель, обозначающий начало и конец, завершает минимальный набор терминов, необходимых для правильного чтения большинства блок-схем.

Типы блок-схем, используемых в разработке программного обеспечения

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

Тип блок-схемыЧто это показываетЛучше всего использовать для
Схема процессаПоследовательные этапы в одном процессеДокументирование алгоритма, логики функции или бизнес-процедуры.
Блок-схема системыКак данные перемещаются между аппаратными и программными компонентамиДокументация по архитектуре высокого уровня, сопоставление устаревших систем.
Блок-схема с использованием плавающих дорожек (межфункциональная).Этапы сгруппированы по ответственным лицам, командам или системам.Процессы, охватывающие несколько ролей или отделов.
Диаграмма потоков данных (DFD)Как данные перемещаются между процессами, хранилищами и внешними объектами.Документирование преобразований данных, а не логики управления.
Схема рабочего процессаПередача задач и цепочки утверждения в бизнес-процессеУправление проектами, процессы утверждения, маршрутизация заявок.
Диаграмма активности UMLПараллельные и последовательные действия с использованием формальной нотации UML.Документация по проектированию объектно-ориентированного программного обеспечения

Диаграмма потока данных против блок-схемы: в чем разница?

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

Блок-схема отвечает на вопрос: «Что происходит, в каком порядке, при каких условиях?» Диаграмма потока данных отвечает на вопрос: «Откуда берутся эти данные, что их изменяет и куда они попадают?» Многие реальные системы выигрывают от использования обоих методов: блок-схемы для документирования логики обработки и диаграммы потока данных для документирования того, как информация перемещается по этой логике.

Примеры блок-схем в разработке программного обеспечения

Приведенный ниже синтаксис Mermaid отображается непосредственно в GitHub, GitLab, Notion и большинстве современных платформ для работы с документацией, что делает его стандартным способом версионирования блок-схем вместе с кодом, а не в виде отдельных статических изображений.

Базовая блок-схема процесса

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

Блок-схема с циклом

В блок-схемах петли обозначаются стрелкой, которая возвращает к предыдущей точке принятия решения, а не продолжает движение вперед. Это эквивалент петли в блок-схеме. for or while Циклы в коде — один из наиболее часто встречающихся шаблонов, проверяемых на вводных курсах программирования. Например, упражнение «нарисуйте блок-схему для нахождения наибольшего из трех чисел» и подобные ему почти всегда требуют использования циклов или вложенных структур принятия решений.

Пример блок-схемы с дорожками

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

Как создать блок-схему процесса разработки программного обеспечения

Шаг 1: Определите начальную и конечную точки. Каждая блок-схема должна иметь ровно одну четкую начальную точку и одну или несколько четких конечных точек. Если документируемый процесс не имеет очевидного начала и конца, его область действия еще недостаточно четко определена для эффективного построения блок-схемы.

Шаг 2: Перечислите все шаги в последовательности. Запишите шаги простым языком, прежде чем присваивать им символы. Это отделяет определение логики от работы по построению диаграммы и упрощает выявление ошибок; исправить пропущенный шаг в текстовом списке гораздо быстрее, чем на наполовину нарисованной диаграмме.

Шаг 3: Определите все точки принятия решения. Пройдите по списку шагов и отметьте все места, где следующее действие зависит от условия. Каждая точка принятия решения становится ромбом как минимум с двумя исходящими путями, и каждый путь должен быть обозначен (Да/Нет, Истина/Ложь или конкретное условие).

Шаг 4: Присвойте правильные символы. Сопоставьте каждый шаг с соответствующим символом: прямоугольники для действий, ромбы для решений, параллелограммы для ввода/вывода и овалы для начала и конца. Последовательное использование символов делает блок-схему понятной для человека, незнакомого с конкретным процессом.

Шаг 5: Соедините стрелки, указывающие направление. Каждый символ должен иметь четкую входящую и исходящую связь (за исключением начала, для которого нет входящей связи, и конца, для которого нет исходящей связи). Стрелки должны двигаться в одном общем направлении, как правило, сверху вниз или слева направо, чтобы избежать визуальной путаницы.

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

Инструменты для создания блок-схем в разработке программного обеспечения

Для создания блок-схем вручную в рабочих процессах разработки программного обеспечения стандартно используются несколько инструментов:

Mermaid и PlantUML — это инструменты для создания диаграмм в виде кода: блок-схема определяется как текст и автоматически отображается, что обеспечивает контроль версий наряду с исходным кодом, который она документирует. Это рекомендуемый подход для любой блок-схемы, документирующей логику кода, поскольку ее можно обновлять в том же коммите, что и описываемое изменение кода.

Lucidchart , Microsoft Visio и draw.io — это универсальные инструменты для создания диаграмм с интерфейсом перетаскивания, подходящие для документирования бизнес-процессов, презентаций и диаграмм, поддерживаемых вне системы контроля версий.

Инструменты для работы с интерактивными досками (физические доски, Miro, FigJam) подходят для совместных проектных сессий, где блок-схема является рабочим элементом в процессе обсуждения, а не постоянным документом.

Компромисс между этими категориями заключается в синхронизации: диаграммы, поддерживаемые вручную в Lucidchart или Visio, устаревают по мере изменения базового процесса или кода, поскольку обновление диаграммы требует отдельного ручного шага, о котором легко забыть. Диаграммы как код и автоматическая генерация решают эту проблему, связывая точность диаграммы с автоматизированным процессом, а не с человеческой памятью.

Автоматическое создание блок-схем на основе существующего кода

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

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

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

Как SMART TS XL Генерирует блок-схемы из вашего кода.

SMART TS XL Создает блок-схемы, графы вызовов и диаграммы зависимостей непосредственно из исходного кода, COBOL, JCL, Java, Python, RPG и других языков, вместо того, чтобы требовать от разработчиков рисовать их вручную. Это принципиально отличается от универсальных инструментов для построения диаграмм, таких как Lucidchart или Visio, которые предоставляют холсты для рисования, но не знают, что на самом деле делает ваш код.

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

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

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

Блок-схемы — это инструмент коммуникации, а не просто документ.

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

Практическая ценность блок-схемы зависит от её актуальности. Диаграмма, нарисованная один раз на этапе первоначального проектирования и никогда не обновлявшаяся, становится вводящей в заблуждение, как только код начинает от неё отклоняться, что хуже, чем полное отсутствие диаграммы, поскольку создаёт ложное чувство уверенности. Будь то использование практик «диаграмм как кода», при которых блок-схема хранится в том же репозитории, что и код, или автоматическая генерация, которая выводит блок-схему из фактического текущего состояния кода, именно дисциплина поддержания точности диаграммы отличает блок-схемы, которые действительно помогают команде, от блок-схем, которые становятся устаревшими артефактами, которым никто не доверяет.