Связность (программирование)
Связность, или прочность, а также сплоченность (англ. cohesion, module strength), — мера силы взаимосвязанности элементов внутри модуля[1]; способ и степень, в которой задачи, выполняемые некоторым программным модулем, связаны друг с другом[1].
Макконнелл объясняет понятие связности на примере класса (как частного случая модуля): «связность характеризует то, насколько хорошо все методы класса или все фрагменты метода соответствуют главной цели, — иначе говоря, насколько сфокусирован класс»[2].
Связность обычно противопоставляется зацеплению. Слабое зацепление является признаком хорошо структурированной и хорошо спроектированной системы, и, когда она комбинируется с сильной связностью, соответствует общим показателям хорошей читаемости и сопровождаемости.
Типы связности
[править | править код]![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/CouplingVsCohesion.svg/300px-CouplingVsCohesion.svg.png)
a) правильно (сильная связность, слабое зацепление), b) неправильно (слабая связность, сильное зацепление)
В стандарте ISO/IEC/IEEE 24765[1] и современной литературе[2][3][4] предлагается рассматривать следующие типы связности:
- случайная (англ. coincidental);
- коммуникационная (англ. communicational);
- функциональная (англ. functional);
- логическая (англ. logical);
- процедурная (англ. procedural);
- последовательностная (англ. sequential) и
- временна́я (англ. temporal).
- Случайная связность
- Тип связности, при котором задачи, выполняемые программным модулем, не имеют функциональной взаимосвязи друг с другом.
- Коммуникационная связность
- Тип связности, при котором задачи, выполняемые программным модулем, используют одни и те же входные данные или участвуют в формировании одних и тех же выходных данных.
- Функциональная связность
- Тип связности, при котором все задачи, выполняемые программным модулем, вносят вклад в выполнение одной и той же функции.
- Логическая связность
- Тип связности, при котором задачи, выполняемые программным модулем, реализуют логически сходные функции (например, одинаково обрабатывают разные типы входных данных).
- Процедурная связность
- Тип связности, при котором все задачи, выполняемые программным модулем, участвуют в некоторой программной процедуре.
- Последовательностная связность
- Тип связности, при котором выходные данные одной задачи, выполняемой программным модулем, служат входными данными для другой задачи, выполняемой этим же модулем.
- Временна́я связность
- Тип связности, при котором все задачи, выполняемые программным модулем, требуются для некоторой фазы выполнения программы (например, модуль содержит все задачи для инициализации).
Эти виды связности аналогичны используемым семи видам связности в SADT[5].
См. также
[править | править код]Примечания
[править | править код]- ↑ 1 2 3 ISO/IEC/IEEE 24765-2017 Systems and software engineering — Vocabulary . Дата обращения: 1 ноября 2021. Архивировано 31 марта 2022 года.
- ↑ 1 2 Макконнелл, 2010.
- ↑ Бадд, 1997, 17.1.2. Разновидности связности.
- ↑ Вендров А. М. CASE-технологии. Современные методы и средства проектирования информационных систем. Архивная копия от 12 сентября 2014 на Wayback Machine 2.2.3. Типы связей между функциями
- ↑ Пирогов В. Ю. Информационные системы и базы данных: организация и проектирование. — СПб.: БХВ-Петербург, 2009. — C. 203—204.
Литература
[править | править код]- Бадд, Тимоти. . Объектно-ориентированное программирование в действии = An Introduction to Object-Oriented Programming. — СПб.: Питер, 1997. — 464 с. — (В действии). — ISBN 5-88782-270-8.
- Макконнелл, Стив. . Совершенный код. 2-е изд = Code Complete. — М.: Русская редакция, 2010. — 896 с. — (Мастер-класс). — ISBN 978-5-7502-0064-1. — С. 163—166.
Это заготовка статьи по информатике. Помогите Википедии, дополнив её. |
Для улучшения этой статьи желательно:
|