Для создания сложнейшей цифровой системы не нужно писать ни одной строчки кода, достаточно лишь дать точные имена вещам, которые еще не существуют.
Когда мы используем метод Spec-First, наша главная задача — не программировать, а проектировать. Проектирование — это процесс разделения монолитной «идеи» в вашей голове на четкие, независимые детали. Если вы скажете Claude: «Сделай мне приложение для библиотеки», ИИ может создать сотни разных вариантов. Но если вы разложите эту библиотеку на конкретные составляющие, вы получите именно то, что задумали.
Представьте, что вы строите дом из конструктора. Вы не можете просто сказать «хочу дом». Вам нужны кирпичи, окна, двери и понимание того, кто в этом доме будет жить. В системном проектировании такие «детали» называются компонентами. Мы будем использовать модель UDAR (Users, Data, Actions, Representations), чтобы превратить любую абстрактную мечту в четкий чертеж.
Кто управляет системой: Акторы (Пользователи)
Первый шаг декомпозиции — определить, кто будет взаимодействовать с системой. В системной логике мы называем их «Акторами». Актор — это не обязательно человек. Это может быть другая программа, датчик или даже автоматический таймер. Главное свойство Актора — наличие прав доступа и определенных целей.
Почему это важно? Потому что логика системы меняется в зависимости от того, кто совершает действие. Например, в банковском приложении Клиент может видеть свой баланс, а Менеджер банка — балансы всех клиентов. Ошибка на этом этапе приводит к тому, что система становится небезопасной или неудобной.
Когда вы описываете Актора, думайте не о его имени, а о его роли. Какую проблему он решает внутри системы? Какие данные ему разрешено видеть? Какие действия ему запрещены? Четкое разделение ролей — это фундамент, на котором держится вся архитектура.
Что хранится внутри: Сущности (Данные)
Данные — это «память» вашей системы. Если Акторы — это живые существа, то Данные — это неодушевленные предметы, которыми они манипулируют. В методе Spec-First мы называем их Сущностями. Сущность — это описание объекта, который система должна запомнить.
Возьмем пример с кофейней. Что здесь будет данными? «Заказ», «Напиток», «Ингредиент». У каждой сущности есть свойства. У «Заказа» есть время создания, статус и цена. У «Напитка» есть название и объем.
Важно понимать: данные в системе статичны, пока на них не направлено действие. Они лежат в «хранилище» и ждут своего часа. Правильное описание данных позволяет Claude понять, какую структуру базы данных нужно создать, даже если вы не знаете, что такое база данных.