stringtranslate.com

Коннасценс

Connascence ( / k ə ˈ n s ən s / ) — это метрика качества программного обеспечения, изобретенная Мейлиром Пейдж-Джонсом, чтобы позволить рассуждать о сложности, вызванной отношениями зависимости в объектно-ориентированном проектировании , во многом подобно тому, как сцепление сделало для структурного проектирования . В программной инженерии два компонента являются connascence, если изменение в одном из них потребует изменения другого для поддержания общей корректности системы. В дополнение к возможности категоризации отношений зависимости, connascence предоставляет систему для сравнения различных типов зависимости. Такие сравнения между потенциальными проектами могут подсказать способы улучшения качества программного обеспечения.

Сила

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

Степень

Приемлемость connascence связана со степенью ее возникновения. Connascence может быть приемлемой в ограниченной степени, но неприемлемой в большой степени. Например, функция или метод, принимающие два аргумента, обычно считаются приемлемыми. Однако обычно неприемлемо, чтобы функции или методы принимали десять аргументов. Элементы с высокой степенью connascence влекут за собой большую сложность и стоимость изменения, чем элементы с более низкой степенью.

Местность

Локальность имеет значение при анализе connascence. Более сильные формы connascence приемлемы, если вовлеченные элементы тесно связаны. Например, многие языки используют позиционные аргументы при вызове функций или методов. Такая connascence позиции приемлема из-за близости вызывающего и вызываемого. Передача аргументов веб- службе позиционно неприемлема из-за относительной несвязанности сторон. Одинаковая сила и степень connascence будут иметь большую сложность и стоимость изменения, чем дальше находятся вовлеченные элементы.

Типы

Ниже представлен список некоторых типов согласия, упорядоченных приблизительно от слабых форм к сильным.

Статические связи

Коннасценсы считаются «статичными», если их можно обнаружить путем визуального исследования кода.

Совпадение имени (CoN)

Согласованность имени — это когда несколько компонентов должны согласовать имя сущности. Имена методов являются примером этой формы согласованности: если имя метода изменяется, вызывающие этот метод должны быть изменены для использования нового имени.

Коннасценция типа (CoT)

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

Согласованность смысла (CoM) или согласованность соглашения (CoC)

Согласованность значений — это когда несколько компонентов должны согласовывать значение конкретных значений. Возврат целых чисел 0 и 1 для представления false и true соответственно является примером этой формы согласованности.

Согласованность позиции (CoP)

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

Знание алгоритма (CoA)

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

Динамическое согласие

Коннасценсы называются «динамическими», если их можно обнаружить только во время выполнения.

Согласие исполнения (CoE)

Совместность выполнения имеет место, когда важен порядок выполнения нескольких компонентов.

Согласованность времени (CoT)

Согласованность сроков имеет место, когда важны сроки выполнения нескольких компонентов.

Коннасценция ценностей (CoV)

Коннасценция ценностей — это когда несколько ценностей должны изменяться одновременно.

Коннасценция идентичности (CoI)

Совпадение идентичности имеет место, когда несколько компонентов должны ссылаться на одну и ту же сущность.

Уменьшение коннасценции

Уменьшение connascence снизит стоимость изменений для программной системы. Один из способов уменьшения connascence — преобразование сильных форм connascence в более слабые формы. Например, метод, который принимает несколько аргументов, можно изменить так, чтобы он использовал именованные параметры . Это изменит connascence с CoP на CoN. Уменьшение степени и увеличение локальности задействованных элементов представляют собой другие способы уменьшения connascence.

Ссылки