Модульное программирование (МП)
Структурное программирование
Структурное программирование (СП) – это совокупность рекомендуемых технологических приемов, охватывающих выполнение всех этапов разработки ПО.
В основе СП лежит декомпозиция сложных систем с целью реализации в виде отдельных небольших подпрограмм (до 40 ... 50 операторов).
Структурный подход требует представления задачи в виде иерархии подзадач простейшей структуры. Для получения такой иерархии применяется метод пошаговой детализации, который заключается в следующем:
- определяется общая структура программы в виде одного из трех вариантов:
- последовательности подзадач (например, ввод данных, преобразование данных, вывод данных),
- альтернативы подзадач (например, добавление записей к файлу или их поиск),
- повторения подзадачи (например, циклически повторяемая обработка данных);
- каждая подзадача, в свою очередь, разбивается на подзадачи с использованием тех же структур;
- процесс продолжается, пока на очередном уровне не получается подзадача, которая достаточно просто реализуется средствами используемого языка (1 - 2 управляющих оператора языка).
Методика процедурной декомпозиции является основой алгоритмического (процедурного) подхода к программированию, при котором основное внимание концентрируется на определении последовательности действий.
Поддержка принципов СП была заложена в основу процедурных языков программирования. Они включали основные «структурные» операторы управления, поддерживали вложение подпрограмм, локализацию и ограничение области «видимости» данных. Наиболее известные – PL/I, ALGOL-68, Pascal, С.
Архитектура МП позволяет:
- выделить группы подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов, модуль подпрограмм вывода на принтер.
- осуществлять связи между модулями через специальный интерфейс,
- запретить доступ к реализации модуля (телам подпрограмм и некоторым «внутренним» переменным).
Технологию МП поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula.
Использование МП упрощает разработку программ несколькими программистами:
- внутренняя организация модулей скрыта и потому может изменяться независимо;
- взаимодействие модулей осуществляется через специально оговоренные интерфейсы модулей;
- модули в дальнейшем могут использоваться в других разработках, что увеличивает производительность труда программистов.
Практика программирования показывает, что структурный подход в сочетании сМП позволяет получать достаточно надежные программы, размер которых не превышает 100000 операторов.
Узкие места МП:
- ошибка в интерфейсе при вызове подпрограммы выявляется только при выполнении программы (из-за раздельной компиляции модулей обнаружить эти ошибки раньше невозможно).
- при увеличении размера программы свыше 100 000 операторов возрастает сложность межмодульных интерфейсов, и предусмотреть взаимовлияние отдельных частей программы становится практически невозможно.
Стремление уменьшить количество связей между отдельными частями программы приводит к появлению объектно-ориентированного программирования (ООП).