Связность модуля

сентября 17, 2007 Влад Иванов

Давненько не писал ничего из теории программирования (про заметку о том, что не надо экономить на переменных вдобавок не забыл, но писать пока ни сил ни времени нет!). Думаю пора бы исправить данную ситуацию. В данном посте маленько расскажу о таком понятии как “Сила связности модулей” в дальнейшем более подробно расскажу о каждом из типов отдельно.

В свое время все мои взгляды на программирование изменило понятие “Связность (Cohesion) модуля” (есть вдобавок понятие “Связность класса”, но об этом поговорим позже). Вот небольшое определение из книги С.А. Орлова “Технология разработки программного обеспечения”: Связность модуля - это мера зависимости его частей. Чем выше связность модуля, тем лучше результат проектирования, то кушать тем “черней” его ящик. (Надеюсь, что такое “черный ящик” в теории программирования разъяснять не надо?).

Всего существуют семь типов связности:

1. Связность по совпадению.
Это когда в модуле отсутствуют очевидно выраженные внутренние связи.

2. Логическая связность.
Части модуля объединены по принципу функционального подобия.

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

4. Процедурная связность.
Части модуля связаны порядком выполняемых ими действий. Бывает путаю данный тип связности с временной связностью.

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

6. Информационная связность.
Выходные данные одной части используются как выходные данные другой.

7. Функциональная связность.
Части модуля совместно реализуют одну функцию.

Могу сказать, что 1, 2, 3 типы - результат ошибочного проектирования, 4 - результат небрежности. А вот если мощь связности в модулях 5, 6, 7 типов, то уже можно разговаривать о нормально спроектированной программе. Отмечу, что предпочтительнее использовать 7-ой тип, но на практике не ввек возможно.

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

Интересно? Читай мой RSS feed! (?)

Популярность: нет [?]

Метки: ,

Добавлено в Программирование WEB |

Оставить комментарий