Знание
Тема этой статьи Википедии может не соответствовать общему правилу по известности . ( август 2019 г. ) |
Connascence ( / k ə ˈ n eɪ s ən s / ) — это метрика качества программного обеспечения , изобретенная Мейлиром Пейдж-Джонсом, чтобы позволить рассуждать о сложности, вызванной отношениями зависимости в объектно-ориентированном проектировании, подобно тому, как связность использовалась для структурированного проектирования . В разработке программного обеспечения два компонента считаются согласованными, если изменение одного потребует модификации другого для поддержания общей корректности системы. Помимо возможности категоризации отношений зависимости, connascence также предоставляет систему для сравнения различных типов зависимости. Такие сравнения потенциальных проектов часто могут указывать на способы улучшения качества программного обеспечения.
Сила
[ редактировать ]Форма согласия считается более сильной, если она более вероятно, потребуют компенсаторных изменений в коннасцентных элементах. чем сильнее форма согласия, тем она труднее и дороже заключается в изменении элементов в отношениях.
Степень
[ редактировать ]Приемлемость коннасценции связана со степенью ее возникновение. Созвучие может быть приемлемо в ограниченной степени, но в значительной степени неприемлемо. Например, функция или метод, который принимает два аргумента, обычно считается приемлемым. Однако это обычно неприемлемо, чтобы функции или методы принимали десять аргументов. Элементы с высокой степенью соответствия вызывают большую трудность, и стоимость изменения, чем элементы, имеющие более низкую степень.
Местность
[ редактировать ]Местоположение имеет значение при анализе созвучия. Более сильные формы согласие приемлемо, если вовлеченные элементы тесно связаны связанный. Например, многие языки используют позиционные аргументы, когда вызов функций или методов. Это совпадение позиций приемлемо из-за близости вызывающего и вызываемого абонентов. Передача аргументов к веб-сервису позиционно неприемлемо из-за относительного несвязанность сторон. Та же сила и степень согласие будет иметь более высокую сложность и стоимость изменений, более отдалены задействованные элементы.
Типы
[ редактировать ]Это список некоторых типов созвучия, упорядоченный примерно от слабых форм к сильным.
Статические знания
[ редактировать ]Связи называются «статическими», если их можно обнаружить путем визуального изучения кода.
Соответствие имени (CoN)
[ редактировать ]Совпадение имени — это когда несколько компонентов должны согласовать имя объекта. Имена методов являются примером такой формы согласия: если имя метода меняется, вызывающие его методы должны быть изменены, чтобы использовать новое имя.
Соответствие типа (CoT)
[ редактировать ]Согласование типа — это когда несколько компонентов должны согласовать тип объекта. В статически типизированных языках тип аргументов метода является примером такой формы согласия. Если метод меняет тип своего аргумента с целого числа на строку, вызывающие этот метод должны быть изменены, чтобы передать другой аргумент, чем раньше.
Совпадение значений (CoM) или согласие условностей (CoC)
[ редактировать ]Совпадение значений — это когда несколько компонентов должны согласовать значение определенных значений. Возврат целых чисел 0 и 1 для представления ложного и истинного значений соответственно является примером такой формы согласия.
Согласие позиции (CoP)
[ редактировать ]Согласование позиции — это когда несколько компонентов должны согласовать порядок значений. Позиционные параметры в вызовах методов являются примером такой формы согласия. И вызывающий, и вызываемый должны согласовать семантику первого, второго и т. д. параметров.
Знание алгоритма (CoA)
[ редактировать ]Согласование алгоритма — это когда несколько компонентов должны согласовать конкретный алгоритм. Коды аутентификации сообщений являются примером такой формы согласия. Обе стороны обмена должны реализовать один и тот же алгоритм хеширования, иначе аутентификация не удастся.
Динамические знания
[ редактировать ]Связи называются «динамическими», если их можно обнаружить только во время выполнения.
Соответствие казни (СЕ)
[ редактировать ]Совпадение выполнения — это когда важен порядок выполнения нескольких компонентов.
Сознание времени (CoT)
[ редактировать ]Согласование времени — это когда важно время выполнения нескольких компонентов.
Созвучие ценностей (CoV)
[ редактировать ]Совпадение ценностей – это когда несколько ценностей должны измениться одновременно.
Соответствие личности (CoI)
[ редактировать ]Совпадение идентичности — это когда несколько компонентов должны ссылаться на одну и ту же сущность.
Снижение осведомленности
[ редактировать ]Уменьшение согласия снизит стоимость изменений в программном обеспечении. система. Один из способов уменьшить сознательность – это преобразовать сильное формы согласия в более слабые формы. Например, метод, который принимает несколько аргументов, которые можно изменить для использования именованных параметров . Это изменит согласие с CoP на CoN . Уменьшение степени и увеличение локальности задействованных элементов являются другими способами уменьшить сознательность.
Ссылки
[ редактировать ]- Великая унифицированная теория проектирования программного обеспечения, Джим Вейрих
- Мейлир Пейдж-Джонс, Сравнение методов посредством инкапсуляции и коннасценции, Сообщения ACM, Том 35, Выпуск 9
- Что каждый программист должен знать об объектно-ориентированном проектировании, Мейлир Пейдж-Джонс, издательство Dorset House, ISBN 0-932633-31-5
- Основы объектно-ориентированного проектирования в UML, Мейлир Пейдж-Джонс, Addison-Wesley Pub Co; ISBN 0-201-69946-X
- Мануэль Риверо; 9 августа 2018 г.; Connascence: взгляд на объектно-ориентированное проектирование в Java