Що таке розробка на основі специфікацій (Spec-Driven Development)?
Більшість процесів написання коду за допомогою ШІ починаються однаково. Ви даєте агенту короткий промпт. Ви спостерігаєте, як він пише код. Це виглядає швидко. Потім ви усвідомлюєте, що агент створив не те, що потрібно. Ви витрачаєте годину на виправлення.
Агент не мав труднощів із написанням коду. Він мав труднощі з розумінням вашого наміру.
Розробка на основі специфікацій (Spec-driven development) вирішує цю проблему. Замість того, щоб просити написати код, ви спочатку створюєте специфікацію. Ця специфікація — це письмовий план. Ви коригуєте план, доки він не стане правильним. Тільки після цього ви дозволяєте агенту виконувати розробку.
Нові інструменти, такі як AWS Kiro та GitHub spec-kit, полегшують цей процес. Але сама ідея стара. Це просто якісна інженерія.
Хороша специфікація має три частини:
• Requirements: Що саме робить функція та як виміряти успіх. Це описує поведінку, а не код. • Design: Технічний план. Він включає архітектуру, моделі даних та обмеження. • Tasks: Малі, тестовані одиниці. Вони достатньо прості, щоб агент міг виконати їх за один раз.
Кожна частина живить наступну. Вимоги визначають дизайн. Дизайн створює завдання. Завдання спрямовують агента.
Раніше написання коду було повільним. Написання специфікацій здавалося марною тратою часу. Тепер ШІ пише код за лічені хвилини. «Вузьким місцем» більше не є друкування. «Вузьким місцем» є прийняття рішення про те, що саме потрібно будувати.
Специфікація переносить ваші помилки у «дешеву» зону. Неправильне речення в документі легко виправити. Неправильну реалізацію в кодовій базі виправити дорого.
Рев'ю коду — це важко. Вам доводиться проводити реверс-інжиніринг того, що мав на увазі автор. Рев'ю специфікації — це легко. Ви узгоджуєте намір ще до того, як з'явиться будь-який код.
Цей метод також допомагає масштабуватися. Ви можете давати різні завдання різним агентам. Специфікація виступає контрактом, який допомагає тримати їх узгодженими.
Цей підхід не завжди є ідеальним рішенням.
- Це надмірне рішення для дрібних виправлень. Не пишіть специфікацію для зміни одного рядка.
- Специфікації можуть застарівати. Якщо код змінюється, а специфікація — ні, вона стає неправдивою.
- Агенти не завжди підкоряються. Специфікація зменшує плутанину, але ви все одно маєте перевіряти результат.
Використовуйте специфікацію, щоб чітко сформулювати свій намір. Використовуйте її, щоб ловити помилки, поки вони є лише словами.
Source: https://dev.to/jcamarate/what-is-spec-driven-development-with-ai-coding-agents-56mc
Optional learning community: https://t.me/GyaanSetuAi