Зацепление (программирование): различия между версиями
[непроверенная версия] | [непроверенная версия] |
BPK (обсуждение | вклад) |
BPK (обсуждение | вклад) Нет описания правки |
||
Строка 1: | Строка 1: | ||
{{редактирую|1=[[Служебная:Contributions/BPK|BPK]]|2=11 сентября 2011}} |
|||
'''Связанность''' ({{lang-en|coupling}}) или '''зависимость''' ({{lang-en|dependency}}) — характеристика взаимосвязи модуля с другими модулями. Это степень, в которой каждый программный модуль полагается на другие модули. |
'''Связанность''' ({{lang-en|coupling}}) или '''зависимость''' ({{lang-en|dependency}}) — характеристика взаимосвязи модуля с другими модулями. Это степень, в которой каждый программный модуль полагается на другие модули. |
||
Версия от 11:33, 11 сентября 2011
Связанность (англ. coupling) или зависимость (англ. dependency) — характеристика взаимосвязи модуля с другими модулями. Это степень, в которой каждый программный модуль полагается на другие модули.
Связанность обычно противопоставляется связности (англ. cohesion). Слабая связанность часто сочетается с сильной связностью и наоборот. Метрика качества ПО связанности и связности была придумана Larry Constantine, изначальным разработчиком Структурного Дизайна[1], который был также ранним сторонником таких концепций (см. также SSADM). Слабая связанность часто является признаком хорошо структурированной компьютерной системы и признаком хорошего дизайна, и, когда она комбинируется с сильной связностью, соответствует общим показателям хорошей читаемости и поддерживаемости.
Типы связанности
Связанность может быть "низкой" (также "свободной" и "слабой") или "высокой" (также "несвободной" или "сильной"). Некоторые типы связанности по направлению от наивысшей к наинизшей связанности, следующие:
- Связанность содержимого (высокая)
- Связанность содержимого это когда один модуль изменяет или полагается на внутреннюю кухню другого модуля (например, доступ к локальным данным другого модуля).
- Следовательно, изменение способа, которым второй модуль производит данные (расположение, тип, время) приведёт к необходимости изменять зависимый модуль.
- Общая связанность
- Общая связанность это когда два модуля делят между собой один и тот же глобальный набор данных (например, глобальную переменную).
- Изменение общего ресурса подразумевает изменение всех модулей, использующих его.
- Внешняя связанность
- Внешняя связанность возникает когда два модуля делят между собой определённый извне формат данных, протокол связи, или интерфейс устройства. Это обычно основано на коммуникации со внешними средствами и устройствами.
- Связанность управления
- Связанность управления это когда один модуль управляет исполнением другого путём передачи ему информации по поводу того, что делать (например, передачей флага "что-нужно-сделать").
- Связанность по отпечатку в структуре данных (stamp coupling)
- Это когда модули делят между собой составную структуру данных, и каждый используют только её часть, по возможности даже не ту же самую часть (например, передача полной структуры в функцию, которой нужно только одно поле этой структуры).
- Это может привести к изменению способа чтения модулем этой структуры, когда изменится поле, которое модуль не использует.
- Связанность данных
- Связанность данных это когда модули делят общие данные через, скажем, параметры. Каждая порция данных это элементарный фрагмент, и это только те данные, которые используются совместно (например, передача целого числа функции, вычисляющей квадратный корень).
- Связанность сообщений (низкая)
- Это наислабейший тип связанности. Он может быть достигнут децентрализацией состояний (как в объектах) и коммуникацией компонентов через параметры или передачу сообщений (см. Обмен сообщениями).
- Нет связанности
- Модули не общаются меду собой вовсе.
Объектно-ориентированное программирование
- Связанность подклассов
- Описывает взаимоотношения между дочерним и родительским элементами. Дочерний элемент связан с родительским, но родительский не связан с дочерним.
- Временная связанность
- Когда два действия связаны вместе в один модуль только потому, что они происходят в одно и то же время.
См. также
Ссылки
IEEE Std 610.12-1990
Примечания
- ↑ W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974.
Это заготовка статьи по информатике. Помогите Википедии, дополнив её. |
Для улучшения этой статьи желательно:
|