ЛЕКЦИЯ 10 Тема 1.7 Модульное программирование 1. Основные понятия и определения. 2. Программные модули и их свойства. 3. Схема модуляции. Оценка модульной программы. 1 Основные понятия и определения Идеи модульного программирования связаны с принципами «разделяй и властвуй» и иерархического упорядочения. Основные цели модульного программирования: 1. Декомпозиция программы на независимые фрагменты–модули, которые могут быть в дальнейшем реализованы в виде отдельных процедур или функций, либо в виде модулей (UNIT). 2. Разделение сложной проблемы на более мелкие и простые подпроблемы. 3. Независимая разработка и тестирование каждого модуля. Модульное программирование – это организация программы в виде небольших независимых блоков, называемых модулями, структура и поведение которых определяется некоторой совокупностью правил. Достоинства модульного программирования: 1. Модульная программа проще для понимания, т.к. возможно в каждый момент времени рассматривать один модуль. 2. Упрощено тестирование программы. 3. Упрощен процесс обнаружения и исправления ошибок. 4. Изменения, вносимые в программу, могут быть ограничены немногими модулями, т.е. не требуют просмотра всего текста программы. 5. Упрощен процесс повышения эффективности программы. 6. Отдельные модули могут повторно использоваться в других программах в качестве строительных блоков. 7. Время разработки сложной программы может быть заметно сокращено, поскольку разработка отдельных модулей может быть поручена разным программистам, работа которых может выполняться более или менее независимо. 2 Программные модули и их свойства Модуль – это какая-либо процедура или функция, написанная в соответствии с определенными правилами. Модуль разрабатывается как последовательность операторов, ограниченных точкой входа и точкой выхода. Для модуля характерна модель типа «черного ящика», которая реализует принцип сокрытия информации. «Черный ящик» - обычная система, для которой известны входы, выходы и функция, выполняемая процессом, но не известно детально, как реализован сам процесс, т.е. «черный ящик» может быть использован без понимания его содержания. Модуль должен обладать свойствами: 1. Каждый модуль представляет одну логическую задачу. 2. Модуль замкнутый и простой. 3. Модуль дискретен и обозрим. 4. Модуль отдельно тестируется и отлаживается. 5. Каждый модуль реализуется применительно к одной независимой функции программы. 6. Каждый модуль имеет одну точку входа и одну точку выхода. 7. Модули могут объединяться в более крупные модули без знания особенностей их внутреннего содержания. 8. Модули должны иметь хорошо определенные интерфейсы, при этом управляющие связи осуществляются через их точки входа и выхода. Структурная программа, построенная по модульному принципу, обладает свойствами: 1. Программа разделяется на ряд модулей, упорядоченных иерархически в соответствии с их логическими связями и связями по последовательности выполнения. 2. Последовательность (поток) выполнения программы от модуля к модулю ограничивается жесткой схемой: управление должно передаваться к модулю в единственную его точку входа и покидать модуль в его точке выхода и всегда должно возвращаться к вызывающему модулю. 3. Конструкция модуля стандартизируется в соответствии с традиционными правилами модуляции, а в качестве составных блоков в модуле должны использоваться только последовательность, выбор и повторение (цикл). Оператор безусловного перехода GO TO только для перехода непосредственно в точку выхода. 4. Структурная программа должна быть документирована, т.е. содержать информацию о модуле в тексте исходного кода в виде комментариев. Описание общей функции программы, пояснение функций каждого модуля, описание структур данных, а также связей модуля с другими модулями программы обязательно. При построении модульной программы важным является выбор размера модуля. Приводятся разные оценки. Обобщая их, можно сказать, что модуль не должен содержать более 50 строк кода.