З Вікіпедії, вільної енциклопедії
Зв'язність (англ. coupling) чи залежність (англ. dependency) — це міра, у якій модуль (компонент) програми залежить від кожного іншого модуля (використовує якусь інформацію про нього).
Зв'язність зазвичай протиставляється пов'язаності. Метрики програмного забезпечення зв'язність та пов'язаність, винайдені Ларрі Констянтином, першим розробником структурного проєктування,[1] який також був першим їхнім прихильником (див. також SSADM). Слабка зв'язність часто є ознакою добре структурованої комп'ютерної системи, та гарної архітектури, і в поєднанні з високою пов'язаністю дозволяє досягнути гарної прочитності та підтримуваності коду.
Зв'язність може бути «слабкою» (чи «низькою») або «сильною» («високою»). Розглянемо деякі види зв'язності в порядку від найвищих, до найнижчих:
У недавній праці інші концепції зв'язності були вивчені та використані як ознаки різних принципів модульності, що використовуються на практиці.[2]
Сильно зв'язні системи зазвичай демонструють наступні характеристики розробки, які часто розглядаються як недоліки:
Незалежно від сили зв'язності, продуктивність системи зменшується через створення повідомлень та параметрів, їх передавання, трансляцію та інтерпретацію. Дивіться подійно-орієнтоване програмування.
Одним з підходів до зменшення зв'язності є функціональне проєктування, яке намагається обмежити відповідальності модулів у функціональності.
Слабка зв'язність виникає тоді, коли один модуль взаємодіє з іншим через простий та стабільний інтерфейс і його не хвилює як реалізований інший модуль. (дивіться: Інкапсуляція).
Такі системи як CORBA чи COM дозволяють об'єктам взаємодіяти між собою без необхідності знати що-небудь про реалізацію один одного. Обидві системи навіть дозволяють взаємодію між об'єктами написаними різними мовами.
Зв'язність та пов'язаність — два терміни, які дуже часто вживаються разом. Вони описують якості, які повинні мати модулі. Зв'язність характеризує взаємозв'язки між модулями, а пов'язаність описує зв'язок функцій усередині модуля. Низька пов'язаність спричиняє ситуацію, коли модуль виконує різні непов'язані завдання, і починає створювати проблеми, коли модуль стає великим.
У книзі «Software Engineering»[3] зв'язність описує варіант метрики пов'язаної з цим терміном.
Для зв'язності даних та потоку керування:
Для глобальної зв'язності:
Для зв'язності середовищ:
Coupling(C)
має тим більше значення, чим більш зв'язним є модуль. Це число варіюється від приблизно 0.67 (слабка зв'язність) до 1.0 (сильна зв'язність)
Наприклад, якщо модуль має лише один вхідний, і один вихідний параметри:
Якщо модуль має 5 вхідних та вихідних параметрів, таке ж число контрольних параметрів, і використовує 10 глобальних змінних, викликає 3 модулі, і викликається чотирма,
Seamless Wikipedia browsing. On steroids.