На территории Российской Федерации действует единая система программной документации (ЕСПД), частью которой является Государственный стандарт – ГОСТ 19.701-90 “Схемы алгоритмов программ, данных и систем” [1]. В нём, в качестве графического описания алгоритма закреплены блок-схемы. На данный момент блок-схемы не являются лучшим графическим способом представления алгоритма, куда лучше для этой работы выглядит использование структурограмм. Они обладают рядом преимуществ, в частности более наглядно и компактно представляют структуру алгоритма, что зачастую невозможно при использовании блок-схем. Данный вид графического представления алгоритма не распространён на территории Российской Федерации так как является немецким стандартом.
При создании программы, одного лишь кода, как правило, недостаточно. Должен быть предоставлен некоторый текст, описывающий различные аспекты того, что именно делает код. Такая документация часто включается непосредственно в исходный код или предоставляется вместе с ним.
Подобная документация имеет сильно выраженный технический характер и в основном используется для определения и описания API, структур данных и алгоритмов.
Решение задач на компьютере основано на понятии алгоритма.
Алгоритм означает точное описание некоторого процесса, инструкцию по его выполнению. Разработка алгоритма является сложным и трудоемким процессом.
Для записи алгоритма решения задачи применяются следующие изобразительные способы их представления:
− Словесно- формульное описание;
− Блок-схема (схема графических символов);
− Алгоритмические языки;
− Структурограммы (схемы Насси-Шнейдермана);
− Операторные схемы;
− Псевдокод.
Графический способ описания алгоритма (блок – схема) получил самое широкое распространение. Для графического описания алгоритмов используются схемы алгоритмов или блочные символы (блоки), которые соединяются между собой линиями связи.
Каждый этап вычислительного процесса представляется геометрическими фигурами (блоками). Они делятся на арифметические или вычислительные (прямоугольник), логические (ромб) и блоки ввода-вывода данных (параллелограмм).
Порядок выполнения этапов указывается стрелками, соединяющими блоки. Геометрические фигуры размещаются сверху вниз и слева на право. Нумерация блоков производится в порядке их размещения в схеме.
Блок-схема является формой представления алгоритма с помощью графических символов.
Графические символы, их размеры, а также правила построения блок-схем определены государственными стандартами.
Блок-схемы – это та часть документации к программе, которая почти всегда имеется в избытке. Между тем многие программы вообще не нуждаются в блок-схемах и лишь очень немногие из них требуют больше одного листа таковых.
Блок-схемы показывают структуру ветвления программы только в одном ее аспекте. Но даже эта структура видна достаточно четко, только если вся блок-схема помещается на одной странице, и о ней очень трудно получить хорошее представление, если блок-схема располагается на нескольких листах, связанных вместе нумерованными стрелками.
В действительности блок-схемы гораздо больше превозносятся, чем используются на практике. Большинство программистов рисуют схемы только после того, как программа была написана.
Более удобным средством графического представления алгоритмов являются структурограммы (диаграммы Насси – Шнейдермана).
Диаграмма Насси – Шнейдермана(ДНШ) — это графический способ представления структурированных алгоритмов и программ, разработанный в 1972 году американскими аспирантами Беном Шнейдерманом и Айзеком Насси.[2]
Поскольку в структурном программировании не используется безусловный переход, то Бен Шнейдерман решил, что для записи структурированных алгоритмов не нужны используемые в блок-схемах стрелки. Придумав разные способы изображения основных структур управления, он затем вместе с Айзеком Насси подробно проработал свою идею. Вместе они написали статью «Техника блок-схем для структурного программирования», которая была опубликована в научном журнале «SIGPLAN Notices» в августе 1973 года.[3]
Диаграммы Насси — Шнейдермана имеют ряд преимуществ перед блок-схемами при разработке структурированных алгоритмов и программ:
− Запись является более компактной и наглядной (в первую очередь за счёт отсутствия стрелок между элементами).
− Отсутствии соединительных линий со стрелками, что помогает избежать случайных ошибок;
− Изобразив алгоритм или программу в виде диаграммы Насси — Шнейдермана, можно быть гарантировано уверенным в том, что принципы структурного программирования соблюдены (при использовании блок-схем можно случайно получить неструктурированный алгоритм, если быть невнимательным).
− Диаграммы Насси — Шнейдермана удобнее использовать для пошаговой детализации задачи, так как они тоже строятся по принципу пошаговой детализации — изначально диаграмма представляет собой один прямоугольник (исходная задача), затем в нём рисуется некоторая структура управления, в которой имеется несколько прямоугольников (подзадач исходной задачи), и далее с каждым прямоугольником (подзадачей) может быть проделана та же операция.
Диаграммы Насси – Шнейдермана строятся с использованием шести элементарных “строительных блоков”.
- Блок действия
- Блок с разветвлением
- Блок множественного выбора
- Блок цикла с предусловием
- Блок цикла с постусловием
- Блок подпрограммы
Так как на практике графическое представление алгоритма рисуется программистом уже после написания программы, то для сокращения сроков создания документации по ПО, необходимо приложение позволяющее автоматизировать этот процесс, а при построении, для более удобного представления алгоритмов, использовать структурограммы. Приложение должно обладать высокой скоростью работы и удобным интерфейсом.
Библиографический список
- Межгосударственный стандарт http://www.novsu.ru/file/1142824 (дата обращения: 13.10.2015);
- Википедия (свободная энциклопедия). Диаграмма Насси — Шнейдермана. [Электронный ресурс] – Режим доступа: https://ru.wikipedia.org/wiki/%C4%E8%E0%E3%F0%E0%EC%EC%E0_%CD%E0%F1%F1%E8_%97_%D8%ED%E5%E9%E4%E5%F0%EC%E0%ED%E0 (дата обращения: 22.05.2015)
- Школа программирования: тематический выпуск газеты “В мир информатики”. / “Информатика”, 2006, № 68.