Результаты

Подпрограммы

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

 

 

 

Разработка программы методом «сверху-вниз»

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

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

Разработка заканчивается тогда, когда не останется ни одной «затычки», которая не была бы удалена. Такая последовательность гарантирует, что на каждом этапе разработки программист одновременно имеет дело с обозримым и понятным ему множеством фрагментов, и может быть уверен, что общая структура всех более высоких уровней программы верна.

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

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

В течение 70 и начале 80-х годов под патронажем Министерства Обороны США был разработан язык программирования Ada. Для создания программных систем управления и руководства Министерства обороны США использовались сотни отдельных языков. Но Министерство обороны хотело иметь один язык, полностью удовлетворяющий всем его запросам. В качестве базового языка был выбран Pascal, но в конце концов язык Ada оказался совсем не похож на Pascal. Язык был назван по имени Ады Лавлейс, дочери поэта лорда Байрона. Леди Лавлейс приписывают честь написания первой в мире компьютерной программы (для спроектированного Чарльзом Беббиджем механического вычислительного устройства, названного Аналитической Машиной). Наиболее важное свойство языка Ada называется многозадачностью; оно позволяет программистам определять много действий для параллельного выполнения. Другие широко распространённые языки высокого уровня, включая Pascal и C++, вообще говоря, позволяют писать программы, в которых одновременно можно выполнять только одно действие.

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

Перечислим некоторые достоинства структурного программирования:

1. Структурное программирование позволяет значительно сократить число вариантов построения программы по одной и той же спецификации, что значительно снижает сложность программы и, что ещё важнее, облегчает понимание её другими разработчиками.

2. В структурированных программах логически связанные операторы находятся визуально ближе, а слабо связанные — дальше, что позволяет обходиться без блок-схем и других графических форм изображения алгоритмов (по сути, сама программа является собственной блок-схемой).

3. Сильно упрощается процесс тестирования и отладки структурированных программ.