Весь код системы можно условно разделить на три концептуальные группы:

  1. Ядро содержит всю бизнес-логику приложения. Эта часть кода уникальна для каждого приложения, обладает наибольшей ценностью, и это именно тот код, который должны писать программисты. Обычно код ядра распределен по классам и модулям и доступен посредством интерфейсов.
  2. Инфраструктурный код представляет набор объектов, отвечающих за “сквозные” (как правило, сугубо технические) аспекты: транзакции, безопасность и т.п. Компоненты этой части кода часто можно повторно использовать практически без модификаций.
  3. Интеграционный код отвечает за доставку данных от одной точки воздействия до другой. Как правило, это включает в себя диспетчеризацию в том или ином виде - трансляцию объектов и запросов между слоями приложения. Этот слой дорого тестировать, поскольку требуется воссоздание большой части системы в тестовой среде.

Программист должен быть максимально сосредоточен на коде ядра. Необходимо писать мало, но очень важного кода, не отвлекаясь на технические и интеграционные аспекты.