зчепленням і зв'язністю.
Зчеплення модулів. Зчеплення є мірою взаємозалежності модулів, яка визначає, наскільки добре модулі відокремлені один від одного. Модулі незалежні, якщо кожен з них не містить про інше ніякої інформації. Чим більше інформації про інших модулях зберігає модуль, тим більше він з ними зчеплений.
Розрізняють п'ять типів зчеплення модулів:
за даними;
за зразком;
по управлінню;
по загальній області даних;
по вмісту.
Зчеплення за даними припускає, що модулі обмінюються даними, представленими скалярними значеннями. При невеликій кількості переданих параметрів цей тип забезпечує найкращі технологічні характеристики програмного забезпечення.
Наприклад, функція Мах припускає зчеплення за даними через параметри скалярного типу:
Function Max (a, b: integer). 'integer; begina gt; b then Max:=a else Max:=b; end;
Зчеплення за зразком припускає, що модулі обмінюються даними, об'єднаними в структури. Цей тип також забезпечує непогані характеристики, але вони гірше, ніж у попереднього типу, так як конкретні передані дані заховані в структури, і тому зменшується прозорість зв'язку між модулями. Крім того, при зміні структури переданих даних необхідно модифікувати всі використовують е модулі.
Так, функція MaxEl, описана нижче, припускає зчеплення за образом (параметр а - відкритий масив).
Function MaxEl (a: array of integer). 'integer; Var i: word; begin:=a [OJ; i:=l to High (a) doa [i] gt; MaxEl then MaxEl:=afij;
end;
При зчепленні з управління один модуль посилає іншому деякий інформаційний об'єкт (прапор), призначений для управління всередині неї логікою модуля. Таким способом часто виконують настройку режим роботи програмного забезпечення. Подібні настройки також знижують і наочність взаємодії модулів і тому забезпечують ще гірші характеристики технологічності розроблюваного програмного забезпечення в порівнянні з попередніми типами зв'язків.
Наприклад, функція MinMax припускає зчеплення з управління так як значення параметра flag впливає на логіку програми: якщо функція MinMax отримує значення параметра flag, рівне true, то повертає максимальне значення з двох, а якщо false, то мінімальне:
Function MinMax (a, b: integer; jlag: boolean): integer; begin (a gt; b) and (flag) then MinMax:=a
else MinMax:=6; end;
Зчеплення по загальній області даних припускає, що модулі працюють із загальною областю даних. Цей тип зчеплення вважається неприпустимий оскільки:
програми, що використовують даний тип зчеплення, дуже складні для розуміння при супроводі програмного забезпечення;
помилка одного модуля, що призводить до зміни загальних даних, може проявитися при виконанні іншого модуля, що істотно ускладнює локалізацію помилок;
при посиланні до даних у спільній області модулі використовують конкретні імена, що зменшує гнучкість розроблюваного програмного забезпечення.
Наприклад, функція Махал, що використовує глобальний масив А, зчеплена з основною програмою по загальній області:
інформаційний комп'ютеризація програма файл
Function MaxA: integer; Var i: word; begin
махати:=a [Low (a) J; for i:=Low (a) + l to High (a) do if a [i] gt; MaxA then MaxA:=a [i];
end;
Слід мати на увазі, що підпрограми з пам'яттю raquo ;, дії яких залежать від історії викликів, використовують зчеплення по загальній області, що робить їх роботу в загальному випадку непередбачуваною. Саме цей варіант використовують статичні змінні С і C ++.
У разі зчеплення по вмісту один модуль містить звернення до внутрішніх компонентів іншого (передає управління всередину, читає і/або змінює внутрішні дані або самі коди), що повністю суперечить блочно-ієрархічним підходу. Окремий модуль в цьому випадку вже не є блоком ( чорним ящиком ): його вміст має враховуватися в процесі розробки іншого модуля. Сучасні універсальні мови процедурного програмування, наприклад Pascal, даного типу зчеплення в явному вигляді не підтримують, але для мов низького рівня, наприклад Асемблера, такий вид зчеплення залишається можливим.
Зв'язність модулів. Зв'язність - міра міцності з'єднання функціональних та інформаційних об'єктів усередині одного модуля. Якщо зчеплення характеризує якість відділення модулів, то зв'язність характеризує ступінь взаємозв'язку елементів, що реалізують...