Модульність

Модульність – принцип розробки програмної системи, що припускає реалізацію її у вигляді окремих частин (модулів). При виконанні декомпозиції системи на модулі бажано поєднувати логічно пов’язані частини, по можливості забезпечуючи скорочення кількості зовнішніх зв’язків між модулями. Принцип успадкований від модульного програмування, слідування йому спрощує проектування і налагодження програми.

Модульність – це:

  • Складна система, може ділиться на простіші частини під назвою модулі.
  • Система, яка складена з модулів.
  • Підтримує застосування розділ задач.
  • Маючи справу з модулем, ми можемо нехтувати деталями інших модулів.

Наслідки модульності:

  • Підвищена ремонтопридатність, можливість повторного використання (переносимість)
  • Зменшення складності
  • Паралельна спрощенність розробки
  • Зниження продуктивності
  • Командна проблема зв’язку.

Модулі і їх категорії

Модуль – це чітко окреслений компонент системи програмного забезпечення; це частина системи, яка забезпечує набір операцій іншим модулям.

Операції – це обчислювальні елементи, що їх інші модуль можуть використовувати.

Категорії модулів:

1. Функціональні модулі:

– традиційна форма модуляризації;

– забезпечте процедурну абстракцію;

– інкапсулюйте алгоритм (наприклад, сортуючий модуль, модуль швидкого перетворння Фур’є, т.д…).

2. Бібліотеки – це група пов’язаних процедурних абстракцій (наприклад, математичні бібліотеки, здійснені за допомогою підпрограм мов програмування).

3. Загальні пули даних – це дані, спільно використовувані різними модулями (наприклад, константи конфігурації).

4. Абстрактні об’єкти:

– об’єкти, що маніпулюються через інтерфейси функцій;

– структура, прихована до клієнтів.

5. Абстрактні типи даних – на основі абстрактних типів даних можуть бути створені багато об’єктів.

Відношення між модулями, бажані властивості відношень

Модулі і відношення

Нехай S є множина модулів S = {M1, M2, . . ., Mn}

Бінарне відношення r в S є підмножина S x S

Якщо Mi, Mj є S, <Mi, Mj> Î r може бути записане як Mi r Mj

Відношення

Транзитивне замикання r+ від r

Mi r+ Mj тільки для таких, що

Mi r Mj або $Mk в S таких, що Mi r Mk і Mk r+ Mj

(Ми припускаємо, що наше відношення  іррефлексивне)

r є ієрархією тільки тоді, коли в ньому немає таких двох елементів Mi, Mj ,що Mi r+ Mj Ù Mj r+ Mi

Відносини:

а) Відносини можуть бути представлені як графи

b) Ієрархія – DAG (спрямований ациклічний граф)

Бажані властивості відношень між модулями:

– USES мають бути ієрархією.

– Ієрархія робить програмне забезпечення легшим для розуміння (Ми можемо рухатись з нижніх вузлів (хто не використовує інші) вгору).

– Вони роблять програмне забезпечення простішим для побудови.

– Вони роблять програмне забезпечення простішим для тестування.

Ієрархія відношень USES

Відношення USES:

A USES B:

– A вимагає правильної роботи від B

– “статично” визначено

– A залежить від B для забезпечення своїх операцій (приклад: виклик підпрограми, що експортована в B)

– A є клієнтом B; B є сервером

Бажані властивості:

– USES мають бути ієрархією

– Ієрархія робить програмне забезпечення легшим для розуміння (Ми можемо рухатись з нижніх вузлів (хто не використовує інші) вгору)

– Вони роблять програмне забезпечення простішим для побудови

– Вони роблять програмне забезпечення простішим для тестування

Ієрархія:

– Організовує модульну структуру через рівні абстракції

– Кожен рівень визначає абстрактну (віртуальну) машину для наступного рівня

– Рівень може бути точно визначений

– Mi має рівень 0 якщо не існує Mj такого, що Mi r Mj

– Нехай k буде максимальним рівнем з усіх вузлів Mj  таких, що Mi r Mj.Тоді Mi матиме рівень k+1

Зчеплення та зв’язаність модулів

Зчеплення (в середині модуля) та зв’язаність (між модулями):

Кожен модуль має бути добре зв’язний

– Модуль розуміється як значуща частина

– Компоненти модуля крепко зчеплені один з одним

Модулі повинні мати слабкий зв’язок

– модулі мають мало взаємодіяти з іншими

– Мають бути зрозумілі окремо

Візуальне представлення:

Сильне зв’язування                                             Слабке  зв’язування