Лекция: Структурное программирование при разработке программ.

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

Одним из пионеров новой методики стал Дейкстра, в 1968 году заявил о необходимости исключить из состава языков программирования высокого уровня оператора goto. Позднее была сформулирована четкая система правил, названная структурнымпрограммированием.

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

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

2) В сложных системах, требующих постоянного сопровождения и развития, ошибки присутствуют всегда

3) Издержки от испытания сложных комплексов постоянно возрастают, по мере того, как люди возлагают на ЭВМ все более ответственные функции.

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

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

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

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

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

2) конструкция обобщенного цикла

 

3) конструкция двоичного решения

 

еще рефераты
Еще работы по информатике