Зацепление (программирование)

Multi tool use
Зацепление, сцепление, сопряжение[1] (англ. coupling) — способ и степень взаимозависимости между программными модулями[2]; сила взаимосвязей между модулями[3]; мера того, насколько взаимозависимы разные подпрограммы или модули[2].
Сильное зацепление рассматривается как серьёзный недостаток, поскольку затрудняет понимание логики модулей, их модификацию, автономное тестирование, а также переиспользование по отдельности. Слабое зацепление, напротив, является признаком хорошо структурированной и хорошо спроектированной системы, и, когда она комбинируется с сильной связностью, соответствует общим показателям хорошей читаемости и сопровождаемости.
Метрики зацепления и связности были придуманы Ларри Константином, изначальным разработчиком структурного проектирования[4], который был также ранним сторонником таких концепций (см. также SSADM).
Слабое зацепление является одним из шаблонов GRASP Крэйга Лармана[5].
Содержание
1 Типы зацепления
2 Методы уменьшения зацепления
3 См. также
4 Примечания
5 Литература
Типы зацепления |

Связность и зацепление модулей
Типы зацепления, согласно стандарту ISO/IEC/IEEE 24765-2010, включают:
- зацепление по общей области (англ. common-environment coupling, common coupling);
- зацепление по содержимому (англ. content coupling);
- зацепление по управлению (англ. control coupling);
- зацепление по данным (англ. data coupling, input-output coupling);
- смешанное зацепление (англ. hybrid coupling);
- патологическое зацепление (англ. pathological coupling)[2].
- Зацепление по общей области
- Тип зацепления, при котором два программных модуля совместно используют общую область данных.
- Зацепление по содержимому
- Тип зацепления, при котором некоторые или все программные модули включены в некоторый модуль как составные части.
- Зацепление по управлению
- Тип зацепления, при котором один программный модуль обменивается данными с другим модулем с явной целью повлиять на его последующее выполнение.
- Зацепление по данным
- Тип зацепления, при котором выходные данные одного программного модуля служат входными данными другого модуля.
- Смешанное зацепление
- Тип зацепления, при котором различные подмножества значений некоторого элемента данных используются в нескольких программных модулях для разных и несвязанных целей.
- Патологическое зацепление
- Тип зацепления, при котором один программный модуль зависит от деталей внутренней реализации другого модуля или влияет на них.
Методы уменьшения зацепления |
Существуют различные методы уменьшения зацепления (англ. decoupling). Как правило, они описаны в виде шаблонов проектирования. Одним из ключевых методов является инверсия управления, и, в частности, внедрение зависимости.
Снизить зацепление также помогает использование многослойной архитектуры приложений, например Model-View-Controller, Model-View-Presenter, Model-View-ViewModel и т. п.
См. также |
- GRASP
- Закон Деметры
Примечания |
↑ Макконнелл, 2010.
↑ 123 ISO/IEC/IEEE 24765-2010 Systems and software engineering — Vocabulary
↑ ISO/IEC TR 19759:2005, Software Engineering — Guide to the Software Engineering Body of Knowledge (SWEBOK)
↑ W. Stevens, G. Myers, L. Constantine, «Structured Design», IBM Systems Journal, 13 (2), 115—139, 1974.
↑ Philip A. Laplante, Philip A. Laplante. What Every Engineer Should Know about Software Engineering. — CRC Press, 2007. — P. 105–106. — ISBN 978-1-4200-0674-2.
Литература |
- Макконнелл, Стив. Совершенный код = Code Complete. — 2-е издание. — М.: Русская редакция, 2010. — С. 139. — 896 с. — (Мастер-класс). — ISBN 978-5-7502-0064-1.
![]() |
Это заготовка статьи по информатике. Вы можете помочь проекту, дополнив её. |
72qTsA8D9Na QZJK5c