Связность модуля (Cohesion) – это мера зависимости его частей [58], [70], [77]. Связность – внутренняя характеристика модуля. Чем выше связность модуля, тем лучше результат проектирования, то есть тем «черней» его ящик (капсула, защитная оболочка модуля), тем меньше «ручек управления» на нем находится и тем проще эти «ручки».
Для измерения связности используют понятие силы связности (СС). Существует 7 типов связности:
1) связность по совпадению(СС=0) – в модуле отсутствуют явно выраженные внутренние связи.
2) логическая связность (СС=1) – части модуля объединены по принципу функционального подобия. Например, модуль состоит из разных подпрограмм обработки ошибок. При использовании такого модуля клиент выбирает только одну из подпрограмм.
Недостатки:
- сложное сопряжение;
- большая вероятность внесения ошибок при изменении сопряжения ради одной из функций.
3) временная связность (СС=3) – части модуля не связаны, но необходимы в один и тот же период работы системы.
Недостаток: сильная взаимная связь с другими модулями, отсюда – сильная чувствительность к внесению изменений.
4) процедурная связность (СС=5) – части модуля связаны порядком выполняемых ими действий, реализующих некоторый сценарий поведения.
5) коммуникативная связность (СС=7) – части модуля связаны по данным (работают с одной и той же структурой данных).
6) информационная (последовательная) связность (СС=9) – выходные данные одной части используются как входные данные в другой части модуля.
7) функциональная связность (СС=10) – части модуля вместе реализуют одну функцию.
Отметим, что типы связности 1, 2, 3 – результат неправильного планирования архитектуры, а тип связности 4 – результат небрежного планирования архитектуры приложения. Общая характеристика типов связности представлена в табл. 1.1.