Связанность (программирование)

Связанность (программирование)

Свя́занность (англ. coupling) или зави́симость (англ. dependency) — характеристика взаимосвязи модуля с другими модулями. Это степень, в которой каждый программный модуль полагается на другие модули.

Связанность обычно противопоставляется связности (англ. cohesion). Слабая связанность часто сочетается с сильной связностью и наоборот. Метрика качества ПО связанности и связности была придумана Larry Constantine, изначальным разработчиком Структурного Дизайна[1], который был также ранним сторонником таких концепций (см. также SSADM). Слабая связанность часто является признаком хорошо структурированной компьютерной системы и признаком хорошего дизайна, и, когда она комбинируется с сильной связностью, соответствует общим показателям хорошей читаемости и поддерживаемости.

Содержание

Типы связанности

Концептуальная модель связанности

Связанность может быть "низкой" (также "свободной" и "слабой") или "высокой" (также "несвободной" или "сильной"). Некоторые типы связанности по направлению от наивысшей к наинизшей связанности, следующие:

Связанность содержимого (высокая)
Связанность содержимого это когда один модуль изменяет или полагается на внутреннюю кухню другого модуля (например, доступ к локальным данным другого модуля).
Следовательно, изменение способа, которым второй модуль производит данные (расположение, тип, время) приведёт к необходимости изменять зависимый модуль.
Общая связанность
Общая связанность это когда два модуля делят между собой один и тот же глобальный набор данных (например, глобальную переменную).
Изменение общего ресурса подразумевает изменение всех модулей, использующих его.
Внешняя связанность
Внешняя связанность возникает когда два модуля делят между собой определённый извне формат данных, протокол связи, или интерфейс устройства. Это обычно основано на коммуникации со внешними средствами и устройствами.
Связанность управления
Связанность управления это когда один модуль управляет исполнением другого путём передачи ему информации по поводу того, что делать (например, передачей флага "что-нужно-сделать").
Связанность по отпечатку в структуре данных (stamp coupling)
Это когда модули делят между собой составную структуру данных, и каждый используют только её часть, по возможности даже не ту же самую часть (например, передача полной структуры в функцию, которой нужно только одно поле этой структуры).
Это может привести к изменению способа чтения модулем этой структуры, когда изменится поле, которое модуль не использует.
Связанность данных
Связанность данных это когда модули делят общие данные через, скажем, параметры. Каждая порция данных это элементарный фрагмент, и это только те данные, которые используются совместно (например, передача целого числа функции, вычисляющей квадратный корень).
Связанность сообщений (низкая)
Это наислабейший тип связанности. Он может быть достигнут децентрализацией состояний (как в объектах) и коммуникацией компонентов через параметры или передачу сообщений (см. Обмен сообщениями).
Нет связанности
Модули не общаются между собой вовсе.

Объектно-ориентированное программирование

Связанность подклассов
Описывает взаимоотношения между дочерним и родительским элементами. Дочерний элемент связан с родительским, но родительский не связан с дочерним.
Временная связанность
Когда два действия связаны вместе в один модуль только потому, что они происходят в одно и то же время.

См. также

Ссылки

IEEE Std 610.12-1990

Примечания

  1. W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974.



Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "Связанность (программирование)" в других словарях:

  • Метод (программирование) — У этого термина существуют и другие значения, см. Метод. Метод в объектно ориентированном программировании  это функция или процедура, принадлежащая какому то классу или объекту. Как и процедура в процедурном программировании, метод состоит… …   Википедия

  • GRASP — (англ. General Responsibility Assignment Software Patterns  общие образцы распределения обязанностей)  паттерны, используемые в объектно ориентированном проектировании для решения общих задач по назначению обязанностей классам и… …   Википедия

  • Шаблоны проектирования GRASP — GRASP (англ. General Responsibility Assignment Software Patterns (общие образцы распределения обязанностей)) паттерны, используемые в объектно ориентированном проектировании для решения общих задач по назначению обязанностей классам и объектам. В …   Википедия

  • UML — (англ. Unified Modeling Language  унифицированный язык моделирования)  язык графического описания для объектного моделирования в области разработки программного обеспечения. UML является языком широкого профиля, это  открытый… …   Википедия

  • Диаграмма классов — Для улучшения этой статьи желательно?: Викифицировать статью. В UML диаграмма классов является типом диаграммы статичес …   Википедия

  • Диаграмма прецедентов — Диаграмма вариантов использования для упрощенной модели работы ресторана. Диаграмма прецедентов (англ.  …   Википедия

  • Рамбо, Джеймс — Джеймс Рамбо англ. James Rumbaugh Дата рождения: 1947 год(1947) Страна …   Википедия

  • Kohana — Тип Программный каркас для создания веб приложений Разработчик Kohana Team[1] Написана на PHP Операционная сис …   Википедия

  • Шаблон проектирования — У этого термина существуют и другие значения, см. Паттерн. В разработке программного обеспечения, шаблон проектирования или паттерн (англ. design pattern) повторимая архитектурная конструкция, представляющая собой решение проблемы… …   Википедия

  • Диаграмма деятельности — UML диаграмма деятельности, отображающая процесс мозгового штурма. Диаграмма деятельности англ.  …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»