Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метода Климко 2006 (Мет пособие).doc
Скачиваний:
277
Добавлен:
15.06.2014
Размер:
1.12 Mб
Скачать
    1. Связность модуля

Связность модуля определяется как мера независимости его частей, то есть чем выше связность, тем более отдельные части модуля зависят друг от друга и тем лучше результат проектирования.

Для оценки связности используется понятие силы связности модуля.

Таблица 3.2– Типы и силы связности модулей

№ п.п.

Связность

Сила связности

1

Функциональная

10 (сильная)

2

Последовательная

9

3

Коммуникативная

7

4

Процедурная

5

5

Временная

3

6

Логическая

1

7

Связность по совпадению

0 (слабая)

Модуль с функциональной связностью не может быть разбит на 2 других модуля, имеющих связность того же типа. Он выполняет единственную функцию и реализуется последовательностью операций в виде единичного цикла. Пример: модуль который может быть разбит только на исток, преобразователь и сток.

Модуль, имеющий последовательную связность, может быть разбит на последовательные части, выполняющие независимые функции, но совместно реализует единственную функцию. Модуль с последовательной связностью реализуется как последовательность циклов или операций.

Модуль, имеющий коммуникативную связь, может быть разбит на независимые модули, разделяющие общую структуру данных. В основе данного модуля лежит общая структура данных. Пример: модуль который изолирует структуру данных.

Модули высшего уровня иерархической структуры программы должны иметь функциональную или последовательную связь. Для модуля обслуживания предпочтительнее коммуникативная связь.

Процедурная связность характерна для модуля, управляющие конструкции которого организованы так, как изображены на схеме программы. Такая структура модуля может возникнуть при расчленении длинной программы на части в соответствии с передачами управления, но без определения функций при выборе разделительных точек.

Модуль, содержащий функционально несвязные части, но необходимые в один и то же момент обработки имеет временную связность или связность по классу.

Если в модуле объединены операторы только по принципу их функционального подобия, а для настройки модуля применяется алгоритм переключения, то модуль имеет логическую связность.

Модуль имеет связность по совпадению, если его операторы объединяются произвольным образом.

Вывод: Три наиболее слабых типа связи возникают при непрерывном планировании или связки модулей после из реализации. Следует добиваться функциональной связности модуля.

    1. Сцепление модулей

Это мера относительной независимости модулей, которая определяет их читабельность и сохранность. Слабое сцепление определяет высокий уровень независимости модулей.

Модули являются полностью независимыми, если каждый из них не содержит о другом никакой информации и не вызывают друг друга . Чем больше информации в них используется, тем менее они независимы и тем более сцеплены. Чем очевиднее взаимодействие двух связных друг с другом модулей, тем проще определить необходимость корректировки одного модуля, зависящего от другого модуля.

Таблица 3.3– Типы и степени сцепления модулей

№ п.п.

Сцепление

Степень сцепления

1

Независимые

0

2

Сцепление по данным

1

3

По образу

3

4

По общей области

4

5

По управлению

5

6

По внешним ссылкам

7

7

По кодам

9(сильное сцепление)

Независимое сцепление возможно только в том случае, если модули не вызывают друг друга и не обрабатывают одну и ту же информацию.

Модули сцеплены по данным, если они имеют общие простые элементы данных, которые передаются от одного модуля к другому, как параметры. Вызывающий модуль знает только имя вызываемого модуля, а также типы и значения переменных, передаваемых как параметры. в этом случае изменение в структуре данных не влияет на другой модуль. Модули со сцеплением по данным не имеет общей области данных или неявных параметров.

Модули сцеплены по образцу, если в качестве параметров используются структуры данных. Недостаток такого сцепления в том, что оба модуля должны знать о внутренней структуре данных, и если модифицируется структура в одном модуле, то необходимо модифицировать и в другом, значит, увеличивается вероятность появления ошибок при сопровождении программы.

Модули сцеплены по общей области, если они разделяют одну и ту же глобальную структуру данных. В этом случае возможность появления ошибок при модификации намного больше.

Модули сцеплены по управлению, если какой-то из них управляет решениями внутри другого с помощью передачи флагов, переключателей, то есть один из модулей знает о внутренней структуре другого. Например, модуль имеет логическую связь и при его вызове используется переключатель, то оба модуля сцеплены по умолчанию.

Модули сцеплены по внешним ссылкам, если у одного модуля есть доступ к данным другого модуля через внешнюю точку входа. Сцепление этого типа возникает, когда внутренние структуры оперируют с глобальными переменными, с которыми оперирует второй модуль.

Модули сцеплены по кодам, если коды их команд перемешаны друг с другом. Например, для одного из модулей доступны внутренние области другого модуля, то есть модули используют один участок памяти. Пример: реализация функций синуса и косинуса. Реализуется синус, а косинус получаем как синус – π/2.

Если модули косвенно обращаются друг к другу, между ними также существует сцепление.

Вывод: сцепление модулей зависит от спроектированной структуры данных и способов взаимодействия между модулями. Необходимо использовать простые параметры и не применять глобальных данных.