Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_ТП (с рамками)_2013.docx
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
253.1 Кб
Скачать

39. Понятия связанности (Coupling) и зацепления (Cohesion) в сложных программных системах. Связанность и зацепление классов, модулей, компонентов.

Степень связанности (coupling) – это мера, определяющая насколько жестко один элемент связан с другими элементами, либо каким количеством данных о других элементах он обладает. Элемент с низкой степенью связанности (или слабым связыванием) зависит не от очень большого числа других элементов. Класс с высокой степенью связанности (или жестко связанный) зависит от множества других классов. Однако наличие таких классов нежелательно, поскольку оно приводит к возникновению следующих проблем:

  • Изменения в связанных классах приводят к локальным изменениям в данном классе.

  • Затрудняется понимание каждого класса в отдельности.

  • Усложняется повторное использование, поскольку для этого требуется дополнительный анализ классов, с которыми связан данный класс.

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

  • Изменения компонентов мало сказываются на других объектах.

  • Принципы работы и функции компонентов можно понять, не изучая другие объекты.

  • Удобство повторного использования.

Зацепление (cohesion) (функциональное зацепление) – это мера связанности и сфокусированности обязанностей класса. Считается, что элемент обладает высокой степенью зацепления, если его обязанности тесно связаны между собой и он не выполняет непомерных объёмов работы. В роли таких элементов могут выступать классы, подсистемы и т.д.

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

  • Трудность понимания.

  • Сложность при повторном использовании.

  • Сложность поддержки.

  • Ненадёжность, постоянная подверженность изменениям.

Классы со слабым зацеплением, как правило, являются слишком «абстрактными» или выполняют обязанности, которые можно легко распределить между другими объектами.

Гради Буч считает, что можно говорить о высоком функциональном зацеплении между элементами одного компонента (например, класса), если «все они взаимодействуют между собой с целью обеспечения некоторого определённого поведения».

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

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

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