Розробка ПЗ з AI-агентамиДоповідь

Специфікація — це новий вихідний код

Агент пише код швидше за команду, але все, що ви не описали, він добудує на власний розсуд. Питання доповіді: який комплект документів покласти перед агентом, щоб на виході була робоча система, а не гарний прототип із неправильною логікою.

ДОК-01 Product Brief — навіщо і для кого
ДОК-02 Функціональні вимоги
ДОК-03 Нефункціональні вимоги
ДОК-04 Критерії приймання
ДОК-05 Контракти даних та API
ДОК-06 Технічний контекст і правила агента
що робити
у яких межах
чого не робити
як перевірити
КонтекстПроблема

Агент не завжди питає. Часто він здогадується.

Людина-розробник, отримавши неповне ТЗ, найчастіше прийде з питаннями. Агент теж уміє уточнювати й зупинятися, але за відсутності явної інструкції може заповнити прогалину найімовірнішим припущенням і продовжити роботу.

Прогалина в вимогах

«Користувач може скасувати замовлення» — за скільки годин? Хто платить комісію? Що зі складом? Агент вигадає три відповіді з трьох.

Немає межі «готово»

Без критеріїв приймання неможливо сказати, чи задача завершена. Приймання перетворюється на нескінченне «ще трохи не так».

Немає технічних меж

Агент додасть бібліотеку, зламає стиль коду, змінить схему БД — бо ніхто не написав, що так не можна.

Наслідок: вузьким місцем стає не швидкість написання коду, а точність опису задачі й швидкість перевірки результату.

Що змінюєтьсяМодель роботи

Команда пише наміри, агент пише реалізацію

ЕтапКласичний процесПроцес з агентом
ВимогиТекст «для людини», багато неявного контекстуЯвний, структурований, однозначний документ
ОцінкаЛюдино-дніКількість ітерацій і обсяг контексту
КодОсновні витрати часуГенерація значно швидша й дешевша; витрати зміщуються в постановку та перевірку
ПеревіркаCode review колегиАвтотести + критерії приймання + review
РизикНе встигли зробитиЗробили швидко, але не те

Головна теза: агент однаково швидко масштабує і правильну вимогу, і помилкову — зросла швидкість поширення помилки в коді.

Комплект документівКарта

П'ять шарів контексту

Product Brief → Functional Requirements → Non-Functional Requirements → Acceptance Criteria → API & Data Contracts

Кожен шар відповідає на своє питання. Пропущений шар агент добудує сам — і зазвичай не так, як ви очікували.

Шар 1

Brief / Vision
Навіщо і для кого

Шар 2

Функціональні вимоги
Що система робить

Шар 3

Нефункціональні
Наскільки добре робить

Шар 4

Критерії приймання
Як довести, що працює

Шар 5

Контракти й тех. контекст
У яких межах будувати

Правило обсягу

Документ достатній, якщо новий розробник без доступу до вашого чату зробить за ним ту саму фічу. Це ж і є вимога до агента.

Правило формату

Markdown у репозиторії поруч із кодом, а не PDF у пошті. Вимоги версіонуються разом із кодом і змінюються в тому ж pull request.

Документ 0101 / 06

Product Brief: мета, користувачі, межі

Product Brief · Vision & Scope · PRD — Product Requirements Document

Найкоротший документ і найбільший вплив: він дозволяє агенту приймати десятки дрібних рішень у правильний бік.

Що входить

  • Проблема — що болить сьогодні, з цифрами
  • Користувачі та ролі — хто, з якою метою, як часто
  • Ціль і метрики успіху — що маємо побачити після запуску
  • Межі (out of scope) — чого система свідомо не робить
  • Доменний глосарій — «замовлення», «резерв» у ваших термінах
  • Обмеження — бюджет, дедлайн, законодавство, інтеграції
# brief.md — Онлайн-запис до майстра Проблема: адміністратор витрачає ~3 год/день на телефонні записи; 18% слотів простоюють. Ролі: Клієнт, Майстер, Адміністратор. Ціль: 60% записів — самообслуговування за 3 міс. Метрики: частка онлайн-записів, % простою слотів. Поза межами (v1): онлайн-оплата, програма лояльності, мобільний застосунок. Глосарій: Слот — інтервал 30 хв у графіку майстра. Резерв — слот, утримуваний 10 хв до підтвердження.

Розділ «Поза межами» економить найбільше часу: без нього агент регулярно робить більше, ніж треба.

Документ 0202 / 06

Функціональні вимоги: що система робить

Functional Requirements (FR) — розділ SRS, Software Requirements Specification (ISO/IEC/IEEE 29148:2018) · User Stories & Use Cases

Структура одного пункту

  • Ідентифікатор — FR-014, щоб посилатися з тестів і задач
  • Актор і дія — хто ініціює, що відбувається
  • Передумови — стан системи до дії
  • Основний сценарій — крок за кроком
  • Альтернативи й помилки — що робити, коли пішло не так
  • Правила даних — валідації, формати, межі значень
  • Пріоритет — MUST / SHOULD / COULD / WON'T (MoSCoW)
  • Рівень обов'язковості у тексті вимоги — MUST / SHOULD / MAY (BCP 14: RFC 2119 + RFC 8174)
FR-014 · Скасування запису клієнтом [MUST] Передумова: запис у статусі «підтверджено», до початку більше ніж 2 години. Основний сценарій: 1. Клієнт відкриває запис і тисне «Скасувати». 2. Система запитує підтвердження. 3. Статус → «скасовано», слот звільняється. 4. Майстру йде сповіщення протягом 1 хв. Альтернативи: A1. Менше 2 год до початку → кнопка неактивна, показати телефон адміністратора. A2. Запис уже скасовано → повторна дія ігнорується (ідемпотентність), помилки немає. Правила: скасування необоротне; історія статусів зберігається 24 міс.

Перевірка якості пункту: чи можна з нього написати тест, не ставлячи жодного питання? Якщо ні — пункт недописаний.

Документ 0303 / 06

Нефункціональні вимоги: наскільки добре

Non-Functional Requirements (NFR) · Quality Attributes · SLO — Service Level Objective · SLA — Service Level Agreement

Це те, що агент ніколи не вгадає правильно. Формулювання має містити число й спосіб вимірювання.

КатегоріяПоганоПридатно для агента
ПродуктивністьШвидко працює95-й перцентиль (p95) відповіді API ≤ 300 мс при 200 запитах/с (rps)
МасштабБагато користувачів50 тис. записів/міс, пік ×5 у понеділок зранку
ДоступністьНадійна система99,5% на місяць; деградація без втрати даних
БезпекаЗахищені даніАвтентифікація через OpenID Connect (OIDC); персональні дані шифруються; журнал доступу 12 міс
Доступність
accessibility, a11y
Зручний інтерфейсWCAG 2.2 рівень AA (Web Content Accessibility Guidelines); повна робота з клавіатури
СумісністьПрацює скрізьChrome / Safari / Firefox −2 версії; мобільний від 360 px
СупровідЧистий кодПокриття тестами ≥ 70%; структуровані логи; трасування запиту

Кожну НФВ треба вміти перевірити командою або скриптом. Невимірювана вимога — це побажання, і агент може зробити не те, що очікували.

Документ 0404 / 06

Критерії приймання: контракт «готово»

Acceptance Criteria (AC) · Gherkin: Given / When / Then · BDD — Behaviour-Driven Development

Найцінніший документ у роботі з агентом: він одночасно є завданням, тестом і актом приймання.

AC-014.1 Успішне скасування Дано запис на 15:00 завтра, статус «підтверджено» Коли клієнт натискає «Скасувати» й підтверджує Тоді статус стає «скасовано» І слот 15:00 знову доступний для запису І майстер отримує сповіщення ≤ 60 с AC-014.2 Пізнє скасування Дано запис починається через 40 хвилин Коли клієнт відкриває запис Тоді кнопка «Скасувати» неактивна І показано телефон адміністратора AC-014.3 Повторний запит Дано запис уже скасовано Коли надходить повторний DELETE того ж запису Тоді відповідь 204, стан не змінюється

Що робить критерій робочим

  • Формат Дано / Коли / Тоді прямо перекладається в автотест
  • Конкретні дані замість «коректних значень»
  • Окремий критерій на помилку, межу й повтор, не лише на успіх
  • Прив'язка до FR за ідентифікатором
  • Спостережуваний результат: статус, екран, подія, код відповіді

Практика

Дайте агенту критерії до написання коду й попросіть спершу перетворити їх на тести, що падають. Далі — реалізація до зеленого стану. Значна частина технічного приймання зводиться до запуску відтворюваних тестів; ризикові зміни все одно дивиться людина.

Документ 0505 / 06

Контракти даних та API

API — Application Programming Interface Contract · OpenAPI Specification · Data Model & State Machine · ADR — Architecture Decision Record

Схема — одна з найточніших форм вимоги: вона різко зменшує двозначність у структурі даних та інтерфейсах і дозволяє генерувати код, тести й документацію. Семантику — права доступу, побічні ефекти, гроші — все одно описують окремо.

Що описати

  • Модель домену — сутності, поля, типи, обов'язковість, зв'язки. Це майбутня схема бази даних: саме тут рішення коштують найдорожче
  • Життєвий цикл станів — які переходи дозволені, які заборонені
  • API-специфікація — OpenAPI / GraphQL: шляхи, коди відповідей, помилки
  • Формат помилок — єдина структура для всієї системи
  • Зовнішні інтеграції — SMS, пошта, платежі: ліміти й поведінка при збої
  • Міграції даних — що робити з наявними записами при зміні схеми
  • Вибір стеку й архітектури — фреймворк, бібліотеки, спосіб розділення системи; фіксується в ADR разом із причиною вибору
# states.md — переходи статусів запису чернетка → підтверджено → завершено ↓ скасовано (кінцевий) Заборонено: скасовано → підтверджено Заборонено: завершено → будь-що # openapi.yaml (фрагмент) DELETE /bookings/{id} 204 — скасовано або вже було скасовано 403 — до початку менше 2 годин 404 — запис не знайдено помилка: { code, message, details[] }

Дані переживають код

Код агент перепише за хвилини. Базу з реальними записами — ні: зміна схеми означає міграцію, сумісність зі старими даними, простій і ризик втрати. Вимоги бізнесу змінюються постійно, тому модель даних проєктують під зміну: додавати поле й статус має бути дешево, а перейменовувати сутність і переносити зв'язки не має бути потрібно щоспринту.

Вибір стеку — теж контракт

Фреймворк, бібліотеки й спосіб розділення системи розробник обирає під очікувану зміну вимог, а не під сьогоднішній список фіч. Рішення й альтернативи фіксують в ADR, інакше агент через місяць приведе паралельне рішення тієї ж задачі.

Схема в репозиторії — єдине джерело правди. Якщо код і документ розійшлися, виправляють обидва в одному pull request.

Документ 0606 / 06

Технічний контекст і правила агента

AGENTS.md / CLAUDE.md · Contributing & Coding Guidelines · Constraints

Файли інструкцій агента (наприклад, AGENTS.md або CLAUDE.md) і пов'язані проєктні правила, які агент отримує в контексті роботи. Конкретний механізм завантаження залежить від інструмента.

Що входить

  • Стек і версії — мова, фреймворк, БД, менеджер пакетів
  • Структура проєкту — де що лежить і чому
  • Команди — як зібрати, запустити, прогнати тести й лінтер
  • Стиль коду — іменування, обробка помилок, логування
  • Заборони — не додавати залежності, не чіпати міграції, не змінювати публічний API
  • Правила git — гілки, формат коміту, розмір pull request (PR)
  • Секрети — де беруться змінні оточення; у код не потрапляють ніколи
# AGENTS.md ## Стек Node 22, TypeScript strict, Fastify, PostgreSQL 16, Prisma, Vitest. Пакети — pnpm. ## Команди pnpm install · pnpm dev · pnpm test · pnpm lint Перед комітом обов'язково: pnpm test && pnpm lint ## Правила - Бізнес-логіка в src/domain, без імпорту Fastify. - Помилки — через AppError, ніяких throw string. - Нові залежності — тільки з дозволу в задачі. - Схему БД змінювати лише міграцією, не вручну. - Тест на кожен критерій приймання. ## Definition of Done (DoD) тести зелені · лінтер чистий · README оновлено · критерії приймання із задачі відмічені
Додатковий шарПеревірка

Як ви дізнаєтесь, що агент зробив правильно

Test Plan · Test Strategy · Verification & Validation

Автоматична перевірка

Тести, типізація, лінтер, збірка. Агент має змогу запускати їх сам і виправлятися без вас — це головний цикл зворотного зв'язку.

Перевірка за критеріями

Проходимо критерії приймання (Acceptance Criteria, AC) із задачі по одному. Кожен має або тест, або відтворюваний ручний сценарій із конкретними даними.

Людське рев'ю

Дивимось на межі та ризики: доступ до даних, гроші, необоротні дії, продуктивність запитів. Саме тут людське рішення найцінніше.

Що покласти в документ

  • Тестові дані — фікстури, набір типових і граничних значень
  • Сценарії помилок — недоступна зовнішня служба, таймаут, конфлікт паралельних змін
  • Ризикові зони — де помилка коштує найдорожче; там перевірка ретельніша
  • Стан «не зроблено» — що свідомо залишено на наступну ітерацію

Правило: агент не може бути єдиним, хто підтверджує власну роботу. Перевірку робить незалежний механізм — тести й людина.

ПрактикаПроцес

Розмір задачі під агента

Task Specification · Work Item · Ticket & Scope Boundaries

Великий документ добре описує систему, але задача для одного запуску має бути вузькою: один зрозумілий результат, який можна перевірити швидко. Нижче — практичні орієнтири, а не галузевий стандарт.

Орієнтири для задачі

  • Практичний орієнтир: 1–5 файлів або один модуль
  • Зазвичай 2–5 критеріїв приймання
  • Має явну точку входу: «почни з src/domain/booking.ts»
  • Містить посилання на функціональну вимогу (FR), критерії приймання (AC) і схему
  • Результат — pull request, який можна прочитати за раз

Ознаки задачі, що піде не так

  • «Зроби модуль записів» — без меж і критеріїв
  • Кілька непов'язаних змін в одному запуску
  • Рефакторинг разом із новою функціональністю
  • Вимоги живуть у чаті, а не в репозиторії
  • Немає способу запустити тести локально

Шаблон постановки

Мета (одне речення) → Контекст (посилання на функціональну вимогу, критерії приймання і схему) → Межі (що не чіпати) → Критерії прийманняЯк перевірити (команда запуску тестів).

Складаємо разомПриклад

Пакет документів на одну фічу

repo/ ├── AGENTS.md стек, команди, стиль, заборони, Definition of Done ├── docs/ │ ├── brief.md проблема, ролі, метрики, межі, глосарій │ ├── requirements/ │ │ ├── functional.md FR-001 … FR-042, з пріоритетами │ │ └── nfr.md числа: p95, rps, доступність, безпека │ ├── acceptance/ │ │ └── FR-014.md AC-014.1 … AC-014.3 — Дано / Коли / Тоді │ ├── api/openapi.yaml контракт: шляхи, коди, формат помилок │ ├── data/model.md сутності, поля, переходи станів │ └── decisions/ ADR — Architecture Decision Record └── tasks/ └── TASK-118.md мета · контекст · межі · критерії приймання · перевірка Запуск агента: «Прочитай AGENTS.md і tasks/TASK-118.md. Спочатку напиши тести за критеріями приймання, потім реалізацію. Не змінюй openapi.yaml без окремої згадки в описі змін.»

Усе — текст у репозиторії: версіонується, рев'ювиться, читається і людиною, і агентом.

Чого не робитиРизики

Сім типових помилок

Вимоги та постановка

  • Вимоги в чаті. Наступного дня контекст втрачено, агент починає з нуля.
  • Прикметники замість чисел. «Швидко», «безпечно», «зручно» не перевіряються.
  • Один гігантський запит. «Зроби мені систему» дає демо, а не продукт.
  • Немає заборон. Агент може вважати допустимими зміни, які ви явно не обмежили.

Приймання та супровід

  • Приймання «на око». Без критеріїв приймання перевірка залежить від настрою рев'ювера.
  • Документи розходяться з кодом. Застарілий документ гірший за відсутній: агент йому довіряє.
  • Агент перевіряє сам себе. «Тести пройшли» без незалежного запуску — не доказ.

Рекомендоване правило команди: зміни, що стосуються персональних даних, платежів та необоротних операцій, завжди проходять людське рев'ю — незалежно від того, наскільки добре написана специфікація.

Definition of ReadyЧек-ліст

Чекліст перед запуском агента

DoR — Definition of Ready · DoD — Definition of Done

ДокументПитання, на яке відповідаєОзнака готовностіХто власник
BriefНавіщо і для когоЄ метрика успіху й розділ «поза межами»Product Ownerза участі бізнес-аналітика
ФункціональніЩо система робитьКожен FR має id, сценарій помилки й пріоритетБізнес-аналітикпріоритети ставить Product Owner
НефункціональніНаскільки добреКожна вимога має число й спосіб виміруАрхітекторбізнес-обмеження — від аналітика
Критерії прийманняЯк довести, що працюєДано / Коли / Тоді, включно з межами й помилкамиБізнес-аналітик + QAпогоджує Product Owner
КонтрактиЯка форма даних і APIСхема в репозиторії, формат помилок єдинийАрхітектор, розробникмодель домену — від аналітика
Тех. контекстУ яких межах будуватиКоманди запуску, стиль, заборони, Definition of DoneКоманда розробкиtech lead як редактор
ЗадачаЩо робимо заразОдин результат, 2–5 критеріїв приймання, точка входу в кодРозробникчерга й пріоритет — Product Owner

Власник відповідає за актуальність документа, а не пише його сам-один. Суміщати ролі можна, пропускати документи — ні: кожен документ має мати того, хто відповідає за його актуальність.
Якщо на будь-який рядок відповідь «ще ні» — дешевше дописати документ, ніж переробляти код.

Хто робить документиРолі

Від ідеї бізнесу до кінцевого користувача

А · Класичний процес — без агентів ШІBusiness Owner → Project Management → Product & Analysis → Architecture → Design → Team / Tech Lead → Development → QA → Operations → Support → End User

01

Замовник, власник бізнесу

Business Owner · Sponsor
02

Проджект-менеджер

Project Manager · Delivery Manager
03

Product Owner

Product Owner · Product Manager
04

Бізнес-аналітик

Business / System Analyst
05

Архітектор

Solution Architect
06

Дизайнер

UX / UI Designer
07

Тім лід

Team Lead
08

Тех лід

Tech Lead
09

Розробники

Software Engineers
10

Тест-інженер

QA Engineer
11

Експлуатація

DevOps · SRE
12

Підтримка й користувач

Support · End User

Тім лід відповідає за людей і потік роботи, тех лід — за технічні рішення й якість коду, проджект-менеджер — за строки, бюджет і комунікацію із замовником. У великих командах це три різні люди, у малих — одна.

Б · Той самий ланцюг із агентом ШІті ж ролі; агент прискорює ділянку розробки

01

Замовник, власник бізнесу

Business Owner · Sponsor · Stakeholder

Ідея, гроші, пріоритети, рішення про запуск

02

Product Owner, менеджер продукту

Product Owner · Product Manager

Мета, метрики, межі релізу, черга задач

03

Бізнес-аналітик

Business Analyst · System Analyst

Brief, функціональні вимоги, критерії приймання

04

Архітектор

Solution / Software Architect

Нефункціональні вимоги, контракти, технічні межі

05

Дизайнер

UX / UI Designer

Сценарії, макети, стани помилок, доступність

06

Розробник з агентом

Developer · Agent Operator

Постановка задачі агенту, реалізація, code review

07

Тест-інженер

QA Engineer · Test Automation

Тест-план, автотести за критеріями, приймання

08

Інженер експлуатації

DevOps · SRE · Security

Реліз, середовища, моніторинг, інциденти

09

Підтримка й користувач

Support · Customer Success · End User

Робота з системою, звернення, зворотний зв'язок

Зворотний зв'язок замикає ланцюг: користувач → підтримка → продукт → нові вимоги.
Агент прискорює ділянку 06, але не замінює жодну з ролей: він не формулює мету, не домовляється про компроміси й не приймає роботу. Ролі тім ліда й тех ліда тут не зникають — вони переходять у постановку задач агенту та рев'ю згенерованого коду.

В · Гранична форма суміщенняусі проміжні ролі — на одній людині, що працює агентами

01

Замовник, власник бізнесу

Business Owner · Sponsor · Stakeholder

Ідея, гроші, пріоритети, рішення про запуск

02 — 08

Продуктовий інженер з агентами

AI-Native Product Engineer · Full-Cycle Product Engineer · Agent Orchestrator

Одна людина веде весь шлях від розмови із замовником до релізу, тримаючи агентів як виконавчу потужність: формулює мету й метрики (Product Owner) · пише brief, функціональні вимоги та критерії приймання (Business Analyst) · задає нефункціональні вимоги й контракти (Architect) · проєктує сценарії та інтерфейс (UX / UI) · ставить задачі агенту й рев'ювить код (Developer · Agent Operator) · складає тест-план і приймає роботу (QA) · випускає та супроводжує (DevOps · SRE).

Ціна такої компактності — зникає незалежна перевірка: той, хто написав вимогу, сам її й приймає. Робоче для MVP, внутрішніх інструментів і невеликих продуктів; для платежів, персональних даних і необоротних операцій рев'ю все одно виносять назовні.

09

Підтримка й користувач

Support · Customer Success · End User

Робота з системою, звернення, зворотний зв'язок

Головна думкаФінал

Пишіть вимоги так, ніби це код

Однозначно, версійно, з тестами й межами. Агент дає швидкість; точність опису лишається за командою — і саме вона визначає, що ви отримаєте на виході.

Що забрати з собою

Комплект із шести документів плюс постановка задачі. Почніть із критеріїв приймання — найбільший ефект за найменших витрат.

З чого почати завтра

Візьміть одну наступну фічу й опишіть за шаблоном. Порівняйте результат агента з попереднім запуском без документів.

Що лишається за людиною

Мета, межі, компроміси, ризики та приймання. Це не автоматизується разом із кодом.

І головне: вимоги змінюватимуться

Жодна специфікація не буває остаточною — бізнес уточнює правила, ринок і закон змінюються. Тому і документи, і система мають бути адаптивними: вимоги живуть у репозиторії й версіонуються разом із кодом, модель даних і архітектура проєктуються під зміну, а критерії приймання дають змогу безпечно переробити реалізацію. Специфікація — не бетон, а креслення, яке перевидають.

Дякую за увагу. Питання?