1. В классической системной инженерии чрезвычайно мощным инструментом является иерархическое разбиение системы по отношению "часть-целое". Для материальных систем такое деление "естественно" за счет 3D-природы материала.
2. В программных системах нет такого "естественного" деления и в результате мы теряем мощнейшее средство организации мышления и управления сложностью.
3. Современные ООЯП по историческим причинам загоняют нас в программную "флатландию", не давая выразительных средств для качественного структурирования программных систем.
4. Заметный всем глубокий "разрыв" между разработчиками и архитекторами обусловлен не только разными целями и задачами, но и разницей в мышлении, вызванной ограничениями ЯП. Архитекторы должны переучиваться думать, чтобы выбраться из "флатландии".
5. Все прежние меры, призванные преодолеть этот разрыв (тесты архитектуры, архитектура/диаграмма "как код", etc) не решают глубинную причину и поэтому паллиативны
6. Нужны широкие, масштабные, разнообразные эксперименты и исследования следующей парадигмы в ЯП, которая бы устраняла этот недостаток и добавляла бы в ЯП надежные средства иерархической функциональной декомпозиции. Тогда многие важные архитектурные решения будут воплощены в исполняемом коде (не в диаграммах-как-код и не в "тестах архитектуры" которые легко игнорировать).
Покажу пример такого эксперимента в виде DSL на Rust.