Connascence - Connascence

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

Сила

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

Степень

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

Местонахождение

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

Типы согласия

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

Статические союзы

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

Созвучие имени (CoN)

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

Созвучие типа (CoT)

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

Согласованность смысла (CoM) или Connascence of Convention (CoC)

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

Коннесценция позиции (CoP)

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

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

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

Dynamic Connascence

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

Согласие на казнь (CoE)

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

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

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

Сознание ценностей (CoV)

Совокупность ценностей - это когда несколько ценностей должны измениться вместе.

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

Созвучие идентичности - это когда несколько компонентов должны ссылаться на объект.

Уменьшение согласия

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

Рекомендации

  • Великая унифицированная теория дизайна программного обеспечения, Джим Вейрих
  • Мейлир Пейдж-Джонс, Сравнение методов с помощью инкапсуляции и согласования, Сообщения ACM, том 35, выпуск 9
  • Что каждый программист должен знать об объектно-ориентированном дизайне, Мейлир Пейдж-Джонс, Dorset House Publishing, ISBN  0-932633-31-5
  • «Основы объектно-ориентированного дизайна в UML», Мейлир Пейдж-Джонс, Addison-Wesley Pub Co; ISBN  0-201-69946-X
  • Мануэль Риверио; 9 августа 2018 г .; Connascence: взгляд на объектно-ориентированный дизайн в Java