Здавалка
Главная | Обратная связь

Модульный принцип программирования. Подпрограммы. Принципы проектирования программ «сверху-вниз» и «снизу-вверх».



Часто в разных программах приходится многократно выполнять одни и те же действия. Например, выводить окно с предупреждением о невозможности отмены какого-либо действия. Естественным в таких случаях является использование библиотек, содержащих подпрограммы (процедуры) для выполнения стандартных действий. Такие «заготовки» можно использовать в качестве строительных «кубиков» при создании программы.

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

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

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

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

Модульность — в языках программирования — принцип, согласно которому программное средство (программа, библиотека, web-приложение и др.) разделяется на отдельные именованные сущности, называемые модулями.

Модуль характеризуют:

§ один вход и один выход – на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input - Process - Output) – вход-процесс-выход;

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

§ логическая независимость – результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;

§ слабые информационные связи с другими программными модулями – обмен информацией между модулями должен быть по возможности минимизирован;

§ обозримый по размеру и сложности программный элемент.

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

Каждый модуль состоит из спецификации и тела. Спецификации определяют правила использования модуля, а тело – способ реализации процесса обработки.

Модульный принцип написания программ самый старый по возрасту принцип программирования. Модульным он назван потому, что каждая задача для предстоящего программирования разбивается на какие-то цельные завершенные части. И программирование ведется исключительно по этим частям – написали часть номер 1, протестировали ее, написали часть номер 2, протестировали ее – потом все вместе собрали и получили программный продукт. То есть программу в конечном итоге можно представить в виде мозаики, которую сначала рисует, а потом и собирает вместе программист. Большим плюсом данного подхода (и, собственно, причиной, по которой он появился) является возможность работы над программой не одного программиста, а нескольких или даже нескольких групп программистов. Простые и близкие языки модульного принципа – Pascal, и C, Phyton и даже Perl.

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

Модульное программирование предназначено для разработки больших программ.

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

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

Однотипные функции реализуются одними и теми же модулями. Функция верхнего уровня обеспечивается главным модулем; он управляет выполнением нижестоящих функций, которым соответствуют подчиненные модули.

При определении набора модулей, реализующих функции конкретного алгоритма, необходимо учитывать следующее:

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

§ принятие основных решений в алгоритме выносится на максимально "высокий" по иерархии уровень;

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

Метод восходящего проектирования (Программирование "снизу вверх")

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

Нисходящее программирование (Программирование "сверху вниз")

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

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.