TGViewer
C# Short Posts 🔞 C# Short Posts 🔞 @dimasshortposts · 306 subscribers
Post #251 1.87K
⚖️ Закон Конвея – реально закон, а не просто остроумное наблюдение!

Знаете про такую штуку, как закон Конвея? Он формулируется примерно так: организации проектируют системы, которые копируют структуру коммуникаций в этой организации.
 
Ну то есть, если рассмотреть на практике, то архитектура IT проектов компании и связанность между, будет в напоминать структуру отделов этой компании.
 
Так вот я всегда этот закон не считал законом. Я его относил к эвристическим утверждениям, типа CAP-теоремы, закона Мура и теоремы Эскобара. То есть это конечно интересное наблюдение, но теоретической и доказательной базы у него нет – это просто удобная мыслительная модель.
 
Однако, наткнулся на вот такое исследование от парней из Гарварда, где в общем-то они придумали, как оцифровать связанность проектов и в общем подтвердили закон Мура на практике.
 
Из интересного:

1️⃣ Какие брали данные. Взяли 5 пар компаний в пяти разных областях продуктов: Финансовый менеджмент, текстовые процессоры, операционные системы, табличный редакторы, базы данных. Сравнили между собой слабосвязанные и сильносвязанные системы, к примеру MySQL и BerkleyBD. Первую разрабатывают 60 организаций-контрибуторов из 25 стран. Вторую соответственно одна организация-контрибутор из одной страны. (пояснительный дикпик 2)

2️⃣ Как определили что такое сильносвязанные и слабосвязанные оргструктуры. Связанность организационной структуры считали вот по этой таблице (пояснительный дикпик 1). К примеру, в ней есть параметр "цель", в сильносвязанных оргструктурах она была расшаренной и явной, а в слабосвязанных разнообразные, неявные.

3️⃣ Как определили связанность архитектуры кода. Связанность программной архитектуры смотрели по связанности файлов исходного кода. Связанность между файлами определяли через Function Call. (пояснительные дикпики 3 и 4)

4️⃣ Какую метрику определили как ключевую для сравнения между проектами. На основе связи между файлами строили граф, в котором учитывали длинны путей, на основе которых построили метрику Propagation Cost, которая показывала стоимость изменений в каждом файле.

5️⃣ Самые интересные цифры:
 
Стоимость распространения (propagation cost) для открытых и коммерческих продуктов:
 
Пара финаносовый менеджмент:

Открытый продукт - 7.74%
Коммерческий продукт - 47.14%
 
Пара текстовые редакторы:

Открытый продукт - 8.25%
Коммерческий продукт - 41.77%
 
Пара таблицы:

Открытый продукт - 23.62%
- самая крупная стоимость из всех слабосвязанных продуктов!

Коммерческий продукт - 54.31%
 
Пара операционные системы 1:

Linux - 7.18%
Solaris - 22.59% (потенциально может затронуть более 2,400 других файлов при изменении)
 
Пара операционные системы 2: 

Linux - 7.21%
XNU - 24.83%
 
Пара базы данных:

Открытый продукт - 11.30%
Коммерческий продукт - 43.23%

 
6️⃣ Неожиданный поворот для одного из опенсорсных проектов – оказалось, что он самый сильносвящзанный среди слабосвязанных! То есть в среднем по статистике в слабсвязанных системах стоимость изменения была на порядок ниже. Однако в случае табличного редактора разница оказалась не столь значительной! Ребята посмотрели отдельно стурктуру контрибьюторов открытого проекта и оказалось, что в ней присутствует сильная связанность! Так как основных мейнтейнеров в проекте оказалось мало и они тесно взаимодейстовали между собой!
 
🅰️ Итого: Короче, к какому выводу мы можем прийти? Закон Конвея – релаьно закон, у которого есть статистическое хорошее обоснование и эксперимент. То есть как у вас выстроена структура компании плюс-минус такая будет и структура проектов. Такие дела!
 
Тут я не все описал подробно. Про Propagation Cost хочется возможно написать отдельно, как эта штука устроена, и как она выводилась для отдельных файлов, а затем для всего проекта в целом.
  • 👍 2
  • 🤔 2
  • 💯 2
More from @dimasshortposts
  1. Sep 26, 2026🧵 Тредик для вопросов по докладу про MAF на дотнексте В докладе многие подробности опусти…
  2. Sep 23, 2026Даже самым хардкорным ребятам надо отдыхать, так что отдыхаем, мои чюваки 🕺 🧑‍💻dp🥁 #he…
  3. Sep 16, 2026🎯 Instrumented Tier0: профилирование кода В прошлый раз мы разобрали два уровня компиляци…
  4. Sep 15, 2026🔜 Готовлюсь к DOTNEXT 2026 В прошлом году за две недели до выступления я зачитывал свой д…
  5. Sep 9, 2026C# Short Posts 🔞 pinned «🐸 О чём этот канал? Кажется, я уже достаточно давно веду этот к…
  6. Sep 9, 2026🐸 О чём этот канал? Кажется, я уже достаточно давно веду этот канальчик, и пора бы описат…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →