Модулі у програмуванні
Модуль – функціонально завершений фрагмент програми, який оформлено у вигляді окремого файла з початковим кодом або поіменованої безперервної її частини.
Модулі дозволяють розбивати складні задачі на більш дрібні у відповідності з принципом модульності.
Модулі зазвичай проектуються таким чином, щоб надавати програмістам зручну для багаторазового використання функціональність (інтерфейс) у вигляді набору функцій, класів, констант.
Модулі можуть об'єднуватись в пакети і далі в бібліотеки.
Зручність використання модульної архітектури полягає у можливості поновленя (заміни) модуля без необхідності зміни решти системи.
Модульне програмування – це організація програми як сукупність невеликих незалежних блоків структура і поведінка яких підпорядковується певним правилам.
Використання модульного програмування дозволяє спростити тестуваня програми і виявлення помилок. Апаратно-залежні підзадачі можуть бути чітко відокремлені від інших підзадач, що покращує мобільність створюваних програм.
Першим основні властивості програмного модуля більш-менш чітко сформулював Девід Парнас (David Parnas) 1972 року:
Для написання одного модуля має бути достатньо мінімальних знань про текст іншого.
У відповідності з цим визначенням модулем могла би бути будь-яка окрема процедура (функція) як найнижчого рівня ієрархії (рівня реалізації), так і самого верхнього рівня, на якому відбуваються лише виклики інших процедур-модулів. Отже, Д.Парнас першим висунув концепцію приховування інформації (information hiding) в програмуванні. Однак існуючі на той час (70ті роки) у мовах програмування тільки такі синтаксичні конструкції як процедури і функції не могли забезпечити надійного приховування інформації через повсюдного використання глобальних змінних. Вирішити цю проблему можна було тільки розробивши нову синтаксичну конструкцію, яка не схильна до впливу глобальних змінних. Таку конструкцію було створено і названо модулем. З самого початку передбачалось, що при реализації складних програмних комплексів модуль повинен використовуватись нарівні з процедурами і функціями як конструкція, яка об'єднує і надійно приховує деталі реалізації окремої підзадачі. Таким чином кількість модулей у комплексі повинно визначатись декомпозицією поставленої задачі на незалежні підзадачі. У крайньому випадку модуль може використовуватись навіть для включення в нього лише однієї процедури якщо необхідно щоб виконувана нею локальна дія була гарантовано незалежною від впливу інших частин програми при будь-яких змінах.