Принципи модульного програмування
Приступаючи до розробки ПП слід пам'ятати, що ПП є великою системою, тому повинні вживатися заходи щодо її спрощення. Одним з основоположних принципів спрощення є принцип "розділяй і володарюй", який отримав наукову назву декомпозиція. При розробці ПП цей принцип реалізують шляхом розробки великої програми по частинах, які називають програмними модулями, а сам такий метод розробки програм називають модульним програмуванням
Что в теории понимается под модулем? Модуль - це замкнута програма, яку можна викликати з іншого модуля і самостійно скомпілювати. Інше визначення: програмний модуль - це будь-який фрагмент опису процесу, що оформляється як самостійний програмний продукт, придатний для використання в описах процесу.
модуль реалізує деяку логіку (алгоритм).
використовується в одному або декількох контекстах.
При цьому функція - це те, що робить модуль, а не те, як він це робить. А от логіка характеризує, як модуль виконує свої функції. Контекст описує конкретне застосування.
Наприклад: модуль з функцією "видалити пробіли з литерной рядки" може використовуватися в контексті "стиснути повідомлення для телеобработки".

може використовуватися в контекстах "обчислення зарплати всіх співробітників" або "визначення пробігу всіх автомобілів". В цьому випадку змістовний сенс доданків ai різний.
Основна причина по якій розробляється ПЗ розбивається на модулі - боротьба зі складністю ПО.
Принципи модульного програмування дозволяють отримувати програмні комплекси мінімальної складності. Ці принципи наступні:
а) посилення внутрішніх зв'язків в кожному модулі (інакше принцип називається підвищенням міцності модуля);
б) ослаблення взаємозв'язку між модулями (інакше цей принцип називається ослабленням зчеплення модулів).
Якщо розглядати програму як набір пропозицій, пов'язаних між собою деякими відносинами (як по виконуваних функцій, так і по оброблюваних даних), то застосування принципів модульного програмування означає, що необхідно розподілити пропозиції програми по окремих модулів так, щоб пропозиції всередині кожного модуля були тісно пов'язані , а зв'язок між будь-якими двома модулями була мінімальною.
Для якісної характеристики модулів введені 7 класів міцності модулів і 5 видів зчеплення модулів. Клас міцності є мірою зв'язку пропозицій всередині модуля. Зчеплення модулів - це міра залежності між модулями.
Класи міцності модулів
Назвемо ці класи в порядку зростання міцності. Ви повинні розуміти, що до більшої за номером класу належить конкретний програмний модуль, тим він "доброкачественнее".
Щоб віднести модуль до того чи іншого класу, потрібно проаналізувати виконувану їм функцію (або функції).
1. Міцність за випадковим збігом.
Між пропозиціями модуля немає стійких смислових зв'язків. Така ситуація виникає, якщо повторювану групу пропозицій програми оформляють у вигляді окремого модуля і використовують його в різних контекстах.
Например модуль вычисления суммы. може використовуватися в різних контекстах, і в залежності від контексту змінюється і сенс зв'язків між пропозиціями модуля.
Основна проблема з модулями такого класу - це необхідність ретельної перевірки, не губиться сенс обробки даних при кожному новому використанні модуля.
2. Міцність за логікою - при кожному виклику виконується деяка функція з набору функцій модуля. Як випливає з цього визначення, міцний за логікою модуль виконує кілька функцій, і необхідна в конкретний момент функція вибирається (визначається) викликає модулем.
Приклад: бібліотека стандартних програм, що реалізують чисельні методи.
Основна проблема з модулями цього класу - це використання одного і того ж сполучення в різних програмах. Правила цього сполучення повинні бути витримані як в викликає, так і спричиненої програмах.
3. Міцність по класу - модуль виконує кілька функцій, віднесених розробником до одного класу.
Зазвичай це перші або останні модулі в програмних комплексах, на які покладаються операції ініціалізірованія і завершення.
Для таких модулів основна проблема полягає в тому, що вони неявно пов'язані з іншими модулями і при змінах міцних по класу модулів часто виникають помилки, коли ці зв'язки не враховуються.
4. Процедурно-міцний модуль - виконує кілька функцій відносяться до однієї функціональної процедуру вирішення завдання. Тут єдина проблема полягає в тому, що фрагменти програми, що відносяться до однієї функції, можуть бути не послідовними в тексті модуля, ускладнюються зміни в модулі.