Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМИП.doc
Скачиваний:
17
Добавлен:
11.07.2019
Размер:
359.94 Кб
Скачать

Концепция модульного программирования

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

Концепцию модульного программирования можно сформулировать в виде нескольких понятий и положений:

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

  • Модуль – основа концепции модульного программирования. Каждый модуль в функциональной декомпозиции представляет собой «черный ящик» с одним входом и одним выходом. Модульный подход позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации и существенно облегчает ее сопровождение (тестирование и обнаружение ошибок). Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль. Кроме того, такие модули могут использоваться как строительные блоки в других программах.

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

  • Назначение всех переменных модуля должно быть описано с помощью комментариев по мере их определения.

Здесь следует заметить, что нужно различать использование слова «модуль» когда имеется в виду синтаксическая конструкция языков программирования (например, Unit в Паскале), и когда имеется в виду единица дробления большой программы на отдельные блоки (в виде процедур или функций).

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

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