ЗацеплениеКравченко А. К., Афанасьева И. В. Влияние изменения зацепления и связности на сложность кода и его быстродействие в разработке программного обеспечения // Радиоэлектроника и информатика, 2016, № 3, с. 9—12. (сцепление, связанность, сопряжение; ) — способ и степень взаимозависимости между программными модулями; сила взаимосвязей между модулями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., который был также ранним сторонником таких концепций (см. также SSADM).
Слабое зацепление является одним из шаблонов GRASP Крэйга Лармана.
Типы зацепления
Типы зацепления, согласно стандарту ISO/IEC/IEEE 24765, включают: зацепление по общей области () — два программных модуля совместно используют общую область данных; зацепление по содержимому () — некоторые или все программные модули включены в некоторый модуль как составные части; зацепление по управлению () — один программный модуль обменивается данными с другим модулем с явной целью повлиять на его последующее выполнение; зацепление по данным () — выходные данные одного программного модуля служат входными данными другого модуля; смешанное зацепление () — различные подмножества значений некоторого элемента данных используются в нескольких программных модулях для разных и несвязанных целей; патологическое зацепление () — один программный модуль зависит от деталей внутренней реализации другого модуля или влияет на них.
Методы уменьшения зацепления Существуют различные методы уменьшения зацепления (). Как правило, они описаны в виде шаблонов проектирования. Одним из ключевых методов является инверсия управления, и, в частности, внедрение зависимости.
Снизить зацепление также помогает использование многослойной архитектуры приложений, например Model-View-Controller, Model-View-Presenter, Model-View-ViewModel и т. п.
См. также GRASP Закон Деметры
Примечания
Литература
Категория:Исследование программ