Структурное программирование

Автор работы: Пользователь скрыл имя, 20 Марта 2011 в 10:48, реферат

Описание работы

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

Файлы: 1 файл

Ргр по информатике.doc

— 116.00 Кб (Скачать файл)

     Введение

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

     Возможность применения подпрограмм относит  язык программирования к классу процедурных языков.

     История

     Методология структурного программирования появилась  как следствие возрастания сложности  решаемых на компьютерах задач и  соответственного усложнения программного обеспечения. В 70-е годы XX века объёмы и сложность программ достигли такого уровня, что "интуитивная" разработка программ, которая была нормой в более раннее время, перестала удовлетворять потребностям практики. Программы становились слишком сложными, чтобы их можно было нормально сопровождать, поэтому потребовалась какая-то систематизация процесса разработки и структуры программ. Наиболее сильной критике со стороны разработчиков структурного подхода к программирования подвергся оператор GOTO (оператор безусловного перехода), имеющийся почти во всех языках программирования. Использование произвольных переходов в тексте программы приводит к получению запутанных, плохо структурированных программ, по тексту которых практически невозможно понять порядок исполнения и взаимозависимость фрагментов.

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

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

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

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

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

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

     Для создания "хорошей" программы  появляется необходимость придерживаться определенных принципов или определенной дисциплины программирования. Значительный прогресс в области программирования достигается с использованием так называемого структурного программирования.

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

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

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

     Структурное программирование можно толковать  как "проектирование, написание и  тестирование программы в соответствии с заранее определенной дисциплиной". 

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

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

     Структурное программирование улучшает ясность  и читабельность программ.

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

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

     Наконец, структурное программирование призвано улучшить эффективность программ.

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

     Основные  критерии оценки качества программы для  ЭВМ.

     Известно, что один и тот же алгоритм может  быть реализован на ЭВМ различными способами, т.е. может быть составлено несколько различных программ, решающих одну и ту же задачу.

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

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

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

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

     2. Минимальное время, затрачиваемое  на тестирование и отладку  программы. Тестирование и отладка  программы – необходимый этап  в процессе решения задачи  на ЭВМ. Он занимает от трети  до половины всего времени разработки программы, поэтому очень важно уменьшить время, затрачиваемое на тестирование и отладку.

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

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

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

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

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

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

     4. Гибкость программы. Разработанная  программа обычно находится в  эксплуатации длительное время.  За это время могут измениться требования к решаемой задаче, техническое задание, требования к программе. Появляется необходимость внести определенные изменения в программу, что в некоторых случаях бывает трудно сделать, т.к. разработчиком не предусмотрена такая возможность. "Хорошая" программа должна допускать модификацию.

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

     6. Простота и эффективность. Программа должна быть просто организована.

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

     Эффективность программы считается одной из главных ее характеристик.

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

     Нисходящее  проектирование

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

Информация о работе Структурное программирование