История о том, что главная задача разработчиков/аналитиков/архитекторов - это управление сложностью. И тут становится критически важно договориться о том, что же такое сложность в этом контексте.

Такое ощущение, что можно определить “статическую” и “динамическую” сложность, или “дизайн-тайм” vs. “ран-тайм” сложность.

Статическая сложность - количество кружочков и стрелочек, чем больше - тем сложнее система. Динамическая сложность - количество степеней свободы, то есть, сколько кружочков нужно изменить, чтобы изменить состояние всей системы. Чем больше - тем сложнее система.

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

Может быть, принцип сокрытия информации как-то косвенно связан со сложностью, не напрямую? Например, через количество и направление зависимостей между компонентами системы, то есть, относится к статической сложности.

А может ли сокрытие информации приводить к уменьшению энтропии?

Ландшафт

Входит в

Включает в себя

Связана с

Источники знаний

Внутренние

Внешние

  1. McConnell S. Code complete / S. McConnell, 2-е изд., Redmond, Washington: Microsoft Press, 2004. 914 c.
  2. Brooks F. P. No Silver Bullet Essence and Accidents of Software Engineering // Computer. 1987. № 4 (20). C. 10–19.
  3. Normand E. Grokking simplicity: taming complex software with functional thinking / E. Normand, Shelter Island, NY: Manning Publications Company, 2021. 562 c.