Различные языки, использующиеся в ходе разработки ПО и исполнения программного кода, можно представить в виде точек в некотором континууме, расположив их по мере движения от бизнес-идеи к исполняемому коду:
- Бизнес-идея
- Жаргон специалистов
- Варианты использования
- Сценарии
- Требования
- Тесты
- Архитектура (разделение на модули и компоненты)
- Код на высокоуровневых языках программирования
- Машинный код
Поскольку языки определяют мышление, каждый из этих языков накладывает свои ограничения (см. Ограничивать концепты моделирования концептами реализации неэффективно). Реальность бизнеса и ментальные модели экспертов в предметной области лучше всего отражают языки, используемые в верхней части спектра.
В идеале необходимо стремиться к однозначной трассировке от более низкоуровневых языковых конструкций к более высокоуровневым. В этом, по идее, должен помочь Единый язык, единая философия), а также точная и актуальная документация.
Идея берет начало из Object thinking - West, David и доклада, ссылка на который приведена в заметке по ссылке.
Если точнее, там акцент на том, что влияние объектного подхода наиболее заметно на более абстрактных уровнях, в активностях, приближенных к бизнесу и источнику идей / требований к приложению.
На уровне реализации разница между объектным и необъектным подходами может быть незаметна. Исполняемый код - это всего лишь ноли и единицы. Разница заключается в том, как мы думаем о проблемах и решениях, и сильнее всего проявляется в декомпозиции и распределении обязанностей по “сообществу объектов”. Сообщение и вызов функции могут быть идентичными по синтаксису и их реализации в машинном коде. Но то, кто и кому шлет сообщение, как это сообщение интерпретируется и какой код необходим для ответа на сообщение - все это будет значительно отличаться.