Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

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

Из Википедии — свободной энциклопедии

Зацепление[1], сцепление, связанность, сопряжение[2] (англ. coupling) — способ и степень взаимозависимости между программными модулями[3]; сила взаимосвязей между модулями[4]; мера того, насколько взаимозависимы разные подпрограммы или модули[3].

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

Метрики зацепления и связности были придуманы Ларри Константином, изначальным разработчиком структурного проектирования[5], который был также ранним сторонником таких концепций (см. также SSADM).

Слабое зацепление является одним из шаблонов GRASP Крэйга Лармана[6].

Типы зацепления

Связность и зацепление модулей: a) правильно (слабое зацепление, сильная связность), b) неправильно (сильное зацепление, слабая связность)
Связность и зацепление модулей:
a) правильно (слабое зацепление, сильная связность), b) неправильно (сильное зацепление, слабая связность)

Типы зацепления, согласно стандарту ISO/IEC/IEEE 24765-2010, включают:

  • зацепление по общей области (англ. common-environment coupling, common coupling);
  • зацепление по содержимому (англ. content coupling);
  • зацепление по управлению (англ. control coupling);
  • зацепление по данным (англ. data coupling, input-output coupling);
  • смешанное зацепление (англ. hybrid coupling);
  • патологическое зацепление (англ. pathological coupling)[3].
Зацепление по общей области
Тип зацепления, при котором два программных модуля совместно используют общую область данных.
Зацепление по содержимому
Тип зацепления, при котором некоторые или все программные модули включены в некоторый модуль как составные части.
Зацепление по управлению
Тип зацепления, при котором один программный модуль обменивается данными с другим модулем с явной целью повлиять на его последующее выполнение.
Зацепление по данным
Тип зацепления, при котором выходные данные одного программного модуля служат входными данными другого модуля.
Смешанное зацепление
Тип зацепления, при котором различные подмножества значений некоторого элемента данных используются в нескольких программных модулях для разных и несвязанных целей.
Патологическое зацепление
Тип зацепления, при котором один программный модуль зависит от деталей внутренней реализации другого модуля или влияет на них.

Методы уменьшения зацепления

Существуют различные методы уменьшения зацепления (англ. decoupling). Как правило, они описаны в виде шаблонов проектирования. Одним из ключевых методов является инверсия управления, и, в частности, внедрение зависимости.

Снизить зацепление также помогает использование многослойной архитектуры приложений, например Model-View-Controller, Model-View-Presenter, Model-View-ViewModel и т. п.

См. также

Примечания

  1. Кравченко А. К., Афанасьева И. В. Влияние изменения зацепления и связности на сложность кода и его быстродействие в разработке программного обеспечения // Радиоэлектроника и информатика, 2016, № 3, с. 9—12.
  2. Макконнелл, 2010.
  3. 1 2 3 ISO/IEC/IEEE 24765-2017 Systems and software engineering — Vocabulary
  4. ISO/IEC TR 19759:2005, Software Engineering — Guide to the Software Engineering Body of Knowledge (SWEBOK)
  5. W. Stevens, G. Myers, L. Constantine, «Structured Design», IBM Systems Journal, 13 (2), 115—139, 1974.
  6. 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.

Литература

Эта страница в последний раз была отредактирована 12 декабря 2021 в 17:33.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).