
5. Коммуникационно- прочный модуль (коммуникативная связность).
Это процедурно прочный модуль, в котором все функции модуля связаны по данным. Пример такого модуля:
Модуль Отчет и средняя зарплата
используется таблица зарплаты служащих;
сгенерировать отчет по зарплате;
вычислить параметр средняя_зарплата;
вернуть отчет по зарплате, средняя_ зарплата
конец модуля.
Как видно из примера, все элементы модуля работают со структурой таблица зарплаты служащих. С точки зрения пользователя проблема применения коммуникативно-связного модуля может состоять в избыточности получаемых результатов (например, при необходимости только значения средней зарплаты “в нагрузку” пользователь получает еще и отчет по зарплате).
По сравнению с процедурной связностью коммуникативная связность укрепляет связь предложений, относящихся к одной функции и их разрыв в тексте модуля менее вероятен, а иногда невозможен.
6. Информационная прочность – модуль выполняет несколько функций над одной и той же структурой данных, образуя как бы конвейер для обработки данных – результаты одного обработчика используются как исходные данные для следующего обработчика. Например:
Модуль прием и проверка записи
прочитать запись из файла;
проверить контрольные данные в записи;
удалить контрольные поля из записи;
вернуть обработанную запись
конец модуля.
Информационно-прочные модули обладают хорошей сопровождаемостью, но объединение действий с одной структурой данных в один модуль не всегда оправдано.
7. Функциональная прочность – это когда модуль выполняет одну функцию – это то, к чему следует стремиться при проектировании модульной структуры ПО. Информационно - прочные модули следует рассматривать как физическое соединение нескольких функционально – прочных модулей.
Примерами функциональных модулей могут быть:
вычисление синуса угла;
чтение записи файла;
вычисление координаты цели;
поиск минимального элемента массива и т.п.
В таблице 1 сведены характеристики модулей в зависимости от типа связности.
Таблица 1. Характеристики связности модуля
Тип связности |
балл |
Нагляд-ность |
Возможность изменения |
Сопровож-даемость |
Степень прозрачности |
функциональная |
10 |
хорошая |
хорошая |
хорошая |
“черный ящик” |
информационная |
9 |
хорошая |
хорошая |
средняя |
Не совсем “черный ящик” |
коммуникативная |
8 |
средняя |
средняя |
средняя |
“серый ящик” |
процедурная |
5 |
средняя |
средняя |
плохая |
“просвечи-вающий ящик” |
временная |
3 |
средняя |
средняя |
плохая |
“белый ящик” |
логическая |
1 |
плохая |
плохая |
плохая |
“белый ящик” |
По совпадению |
0 |
плохая |
плохая |
плохая |
“белый ящик” |
Таблица 1 показывает, что на практике целесообразно проектировать и реализовывать модули, имеющие функциональную, информационную или коммуникативную связность. Как правило, при хорошо продуманной декомпозиции модули верхних уровней иерархии имеют функциональную или информационную связность функций или данных. Для модулей обслуживания данных (поиск данных, замена данных и т.п.) характерна коммуникативная связность. Получение в процессе декомпозиции модулей с другими видами связности, скорее всего, означает слабую квалификацию проектировщика ПО.