Сцепление модулей
Определение связности модуля
Приведем алгоритм определения уровня связности модуля.
1) Если модуль – единичная проблемно-ориентированная функция, то уровень связности – функциональный; конец алгоритма. В противном случае перейти к пункту 2.
2) Если действия внутри модуля связаны, то перейти к пункту 3. Если действия внутри модуля никак не связаны, то перейти к пункту 6.
3) Если действия внутри модуля связаны данными, то перейти к пункту 4. Если действия внутри модуля связаны потоком управления, то перейти к пункту 5.
4) Если порядок действий внутри модуля важен, то уровень связности – информационный. В противном случае уровень связности – коммуникативный. Конец алгоритма.
5) Если порядок действий внутри модуля важен, то уровень связности – процедурный. В противном случае уровень связности – временной. Конец алгоритма.
6) Если действия внутри модуля принадлежат к одной категории, то уровень связности – логический. Если действия внутри модуля не принадлежат к одной категории, то уровень связности – по совпадению. Конец алгоритма.
Возможны более сложные случаи, когда с модулем ассоциируются несколько уровней связности. В этих случаях следует применять одно из двух правил:
- правило параллельной цепи: если все действия модуля имеют несколько уровней связности, то модулю присваивают самый сильный уровень связности;
- правило последовательной цепи: если действия в модуле имеют разные уровни связности, то модулю присваивают самый слабый уровень связности.
Например, модуль может содержать некоторые действия, которые связаны процедурно, а также другие действия, связные по совпадению. В этом случае применяют правило последовательной цепи и в целом модуль считают связным по совпадению
Сцепление (Coupling) – мера взаимозависимости модулей по данным [58], [70], [77]. Сцепление – внешняя характеристика модуля, которую желательно уменьшать. Количественно сцепление измеряется степенью сцепления (СЦ). Выделяют 6 типов сцепления.
1. Сцепление по данным (СЦ=1). Модуль А вызывает модуль В.
Все входные и выходные параметры вызываемого модуля – простые элементы
данных (рис. 1.13).
Рис 1.13 Сцепление по данным
2. Сцепление по образцу (СЦ=3). В качестве параметров используются структуры данных (рис. 1.14).
Рис 1.14 Сцепление по образцу
3. Сцепление по управлению (СЦ=4). Модуль А явно управляет функционированием модуля В (с помощью флагов или переключателей), посылая ему управляющие данные (рис. 1.15).
Рис 1.15 Сцепление по управлению
4. Сцепление по внешним ссылкам (СЦ=5). Модули А и В ссылаются на один и тот же глобальный элемент данных.
5. Сцепление по общей области (СЦ=7). Модули разделяют одну и ту же глобальную структуру данных (рис. 1.16).
6. Сцепление по содержанию (СЦ=9). Один модуль прямо ссылается на содержание другого модуля (не через его точку входа). Например, коды их команд перемежаются друг с другом (рис. 1.16).
Рис 1.16 Сцепление по общей области и содержанию
На рис. 1.16 видим, что модули В и D сцеплены по содержанию, а модули С, E и N сцеплены по общей области.