// codeart.ru / Теория программирования / Связность модуля Форум

Связность модуля rss подписка

Автор: Evgeniy Sergeev

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

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

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

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

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

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

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

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

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

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

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

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

Интересные ссылки:

5 Причин Почему “Увольняется” Клиент?

О производительности Javascript frameworks

  1. Я считаю, что при создании программ, которые будут впоследствии дорабатываться и расширяться (не говоря уж о плагинности 8)) , или библиотек — стоит заморачиваться со связностью.

    ИМХО, во многих «бытовых» случаях это необязательно 8)

  2. Юра, нужно или ненужно — личное дело каждого. А вот знать, что такое связность, и уметь оценить какой тип связности существует в модуле должен каждый программист.

  3. Ага, поэтом можешь ты не быть, но гражданином быть обязан 8)

  4. Женя, интересный пост, спасибо — дал кучу мыслей (:

  5. К сожалению автор перепутал связанность и сцепление. В данном случае речь идет о сцеплении.

  6. Елена, в скобках указано значение понятия на английском, о тонкостях перевода можно спорить бесконечно. Просто загляните в словарик и посмотрите, что значит слово «Cohesion».
    На мой взгляд Вы используете один вариант перевода, я другой. Если Вы считаете, что между понятием связанность и сцепление есть разница, то прошу ее озвучить.
    Очень жду Ваших аргументов.

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

  8. Виктория, надеюсь вы понимаете, о чем идет речь в данном посте, и не будете доказывать, что речь идет о сцеплении модуля? Также я надеюсь, что Вы понимаете различие между понятием связанность и связность.

Leave a Reply

« »