110
функцию и реализуется последовательностью операций в виде единого цикла.
Пример модуля с функциональной связностью – модуль управления
обработкой пакетов. Другой пример – модуль, который может быть разбит
только на исток, преобразователь и сток (так как он выполняет единственную
функцию). Если модуль спроектирован так, чтобы изолировать выбранный
алгоритм, он имеет функциональную связность.
Модуль, имеющий последовательную связность, может быть разбит на
последовательные части, выполняющие независимые функции, но совместно
реализующие единственную функцию. Модуль с последовательной связностью
реализуется как последовательность циклов или последовательность операций.
Модуль, имеющий коммуникативную связность, может быть разбит на
независимые модули, разделяющие общую структуру данных. Общая структура
данных является основой его организации как единого модуля. Если модуль
спроектирован так, чтобы упростить работу со сложной структурой данных,
изолировать эту структуру, он имеет коммуникативную связность. Такой
модуль предназначен для выполнения нескольких различных и независимо
используемых функций (например, запоминание данных, поиск данных).
Модули высшего уровня иерархической структуры программы должны
иметь функциональную или последовательную связность. Для модулей
обслуживания предпочтительнее коммуникативная связность.
Если модули имеют процедурную, временную, логическую связность или
связность по совпадению, это свидетельствует о недостаточно продуманном их
планировании. К таким типам связности может привести, например,
модификация уже существующей программы.
Процедурная связность характерна для модуля, управляющие
конструкции которого организованы так, как изображены на структурной схеме
программы или схеме алгоритма. Такая структура модуля может возникнуть,
например, при расчленении длинной программы на части в соответствии с
передачами управления, но без определения каких-либо функций при выборе
разделительных точек; при группировании альтернативных частей программы;
если для уменьшения размеров модуль с функциональной связностью делится
на два независимых модуля (например, исходный модуль содержит объявления,
подпрограммы и раздел операторов для выполнения единой функции; после его
разделения один модуль содержит объявления и подпрограммы, а другой –
раздел операторов).
Модуль, содержащий функционально несвязанные части, но
необходимые в один и то же момент обработки, имеет временную связность
или связность по классу. Например, модуль активации, выполняющий все
множество требуемых в момент входа в программу функций и начальных
установок, имеет временную связность. Функции активации лучше разделить
между другими модулями, выполняющими обработку соответствующих
переменных или файлов. Если в начале выполнения программы необходимо