Балансирующая связь в разработке программного обеспечения - Владик Хононов, Международная конференция DOIT | Craft Conference 2022

YOUTUBE · 26.11.2025 04:29

Ключевые темы и таймкоды

Введение

0:00
  • Ведущий Владик Кононов представляет новый фильм.
  • Владик делится своими нервами перед выступлением.
  • Он специализируется на распределенных системах и доменном проектировании.

Тема выступления

0:20
  • Владик будет говорить о связывании, а не о предметно-ориентированном дизайне.
  • Цитата Рут Милан о системном дизайне и границах.
  • Связывание связано с компромиссами и границами.

Проблемы с совокуплением

1:47
  • Совокупление часто считается плохим и замедляет системы.
  • Желание разделить код на независимые части.
  • Стремление к минимальному размеру кода часто приводит к проблемам.

Новый взгляд на совокупление

2:47
  • Владик предлагает использовать совокупление как инструмент проектирования.
  • Исследование природы совокупления и его проявлений.
  • Использование знаний о совокуплении для проектирования модульных систем.

Что такое совокупление?

4:04
  • Лексическое происхождение слова "совокупление" от латыни.
  • Взаимосвязь между компонентами делает систему больше, чем сумма частей.
  • Взаимосвязь необходима для создания системы.

Оценка взаимосвязей

5:19
  • Взаимосвязи должны быть оценены и реорганизованы для повышения успеха.
  • Пример с двумя связанными компонентами и их интеграцией.
  • Взаимосвязь определяет степени свободы компонентов.

Ограничение степеней свободы

7:28
  • Ограничение степеней свободы предотвращает хаос.
  • Совокупление должно быть согласовано с потребностями и ожиданиями.
  • Понимание динамики совокупления для проектирования систем.

Влияние силы

8:51
  • Сила совокупления определяет влияние изменений на другие компоненты.
  • Методология структурированного проектирования и модель kinescence.
  • Уровни взаимосвязей в структурированном проектировании.

Уровни взаимосвязей

10:26
  • Шесть уровней взаимосвязей: контент, общий, внешний, контроль, печать и связь данных.
  • Содержание: использование частных интерфейсов для взаимодействия.
  • Внешний: использование общей глобальной переменной.

Связь управления и штампов

12:37
  • Связь управления: один модуль диктует другому, как выполнять работу.
  • Печать: обмен структурами данных с лишней информацией.
  • Проблемы с обменом посторонней информацией.

Проблемы интеграции

13:37
  • Протокол интеграции не отражает необходимые данные.
  • Связь данных - самый низкий уровень, где модули взаимодействуют через аргументы.
  • Уровни отражают детали реализации, передаваемые через границы модулей.

Kessence

14:22
  • Kessence измеряет взаимодействие в объектно-ориентированном программировании.
  • Уровни делятся на статические и динамические.
  • Статические уровни анализируются по коду, динамические - по поведению системы.

Статические уровни

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

Динамические уровни

17:54
  • Связь исполнения: операции выполняются в определенном порядке.
  • Взаимосвязь во времени: операции выполняются через определенный промежуток времени.
  • Соотношение цены и качества: значения должны изменяться вместе.
  • Связь идентичности: объекты должны ссылаться на один и тот же экземпляр.

Проблемы моделей

20:34
  • Модели структурированного дизайна и Kessence сложны для использования.
  • Терминология из Cobol и Fortran вводит в заблуждение.
  • Обе модели имеют "слепые зоны", например, использование отражения.

Новая модель интеграции

22:10
  • Модель интеграции включает четыре уровня: реализация, функционал, модель и контракт.
  • Реализация: детали реализации используются для интеграции.
  • Функциональное соединение: модули реализуют тесно связанные бизнес-функции.
  • Модель совокупления: компоненты основаны на одной модели бизнес-сферы.
  • Контрактное соединение: интеграция с помощью конкретной модели интеграции.

Заключение

25:52
  • Уровни модели отражают объем знаний, передаваемых через границы компонентов.
  • Реализация позволяет получить больше информации о реализации.
  • Функциональная связь фокусируется на обмене информацией о том, что реализуется.
  • Модельное соединение сводит знания к модели бизнес-области.
  • Контрактное соединение сводит интерфейс к минимуму, необходимому для интеграции.

Влияние расстояния на взаимодействие компонентов

26:55
  • Физическое расположение компонентов влияет на уровень их взаимодействия.
  • Соединения между компонентами могут находиться на разных расстояниях, что связано с уровнями абстракции.
  • Чем больше расстояние между компонентами, тем больше усилий требуется для координации изменений.

Взаимосвязь жизненного цикла компонентов

27:49
  • Чем ближе компоненты, тем выше вероятность каскадных изменений.
  • Компоненты с одинаковым жизненным циклом требуют одновременного тестирования и развертывания.
  • Организационная структура компании также влияет на взаимосвязь жизненного цикла.

Прочность интеграции и непостоянство

30:22
  • Прочность интеграции важна, но не имеет значения, если компоненты не меняются.
  • Важно учитывать частоту изменений компонентов.
  • Поддомены помогают определить области системы, которые изменятся чаще всего.

Типы поддоменов

31:51
  • Основные поддомены обеспечивают конкурентное преимущество компании.
  • Общие поддомены решают проблемы, которые можно купить или использовать с открытым исходным кодом.
  • Вспомогательные поддомены менее важны и меняются реже.

Оценка взаимосвязи компонентов

33:11
  • Важно оценить ожидаемую скорость изменений компонентов.
  • Объединение силы, непостоянства и расстояния помогает оценить боль при поддержании системы.
  • Минимизация одной из этих характеристик может снизить общую боль.

Примеры применения подхода

36:53
  • Устранение случайных сцеплений и снижение степени интеграции минимизируют боль.
  • Разбиение монолита на микросервисы увеличивает расстояние между компонентами.
  • Важно сбалансировать силу, непостоянство и расстояние для минимизации боли.

Введение в сопряжение

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

Поддомены и баланс

40:52
  • Важно определить основные поддомены, которые будут меняться больше всего.
  • Метод балансировки всех трех измерений помогает избежать проблем с обслуживанием.
  • Книга содержит более подробное обсуждение подхода и сравнение проектов с одинаковым уровнем силы интеграции.

Вопросы и ответы

42:00
  • Обсуждение использования модели для управления сложностью разработки ПО.
  • Вопросы о том, как сообщать заинтересованным сторонам о трех аспектах взаимодействия и о применении модели на разных уровнях программного обеспечения.
  • Ответы на вопросы о высокой степени взаимодействия между интерфейсом и серверной частью, а также о месте естественных бизнес-зависимостей в программном обеспечении.

Заключение

47:02
  • Объединение компонентов с высокой прочностью в один компонент с высокой степенью сцепления для уравновешивания.
  • Призыв задавать больше вопросов и раздавать бесплатные книги.