К основному содержимому
#Architecture

[2/2] Сложность и модулярность две стороны одной медали - Влад Хононов - ArchDays 2023 (Рубрика Architecture)

#Architecture #Software #Architect #SystemDesign #SoftwareArchitecture #Processes #Management

Продолжая пост про доклад Влада Хононова на ArchDays 2023, я расскажу про использование модели интеграции для оценки качества архитектуры. Для оценка Влад предлагает использовать 2 параметра: расстояние между взаимодействующими компонентами и уровень этого взаимодействия (intrusive coupling, functional coupling, model coupling, contract coupling). Получается у нас связь между стоимостью изменения и расстоянием между компонентами, что затрагивают эти изменения. Для того, чтобы отобразить доступные варианты Влад предлагает использовать стандартный подход консультантов с матрицей 2 на 2, где осями являются дистанция и сила связи. В итоге, у нас получается 4 варианта (2 первых предпочтительных и последние 2, которых стоит избегать)

  • High distance, low strength - это стандартное loose coupling, когда компоненты далеко друг от друга и они полльзуются contract coupling
  • Low distance, high strength - это стандартный high cohesion, когда компоненты рядом и связь между ними сильна
  • Low distance, low strength - это локальная сложность, когда у нас в близлежащих компонентах нет связи и при изменениях нам надо пытаться вспомнить, а почему эти компоненты вообще расположены вместе:)
  • High distance, high strength - а это стандартная история с глобальной сложностью, когда изменения в вроде бы несвязанных далеких компонентах приводят к спецэффектам наавроде взрыва на макаронной фабрике Я приложил картинку с визуализацией этой матрицы 2x2.

В итоге, главным уравнением в этом подходе является

Modularity = Strength Xor Distance Единственная проблема, что это уравнение скорее является эвристикой для инженеров, а вот использовать его для автоматического анализа качества архитектуры пока не получилось.

#Software #Architect #SystemDesign #SoftwareArchitecture #Processes #Management