- А не замахнуться ли нам на святое,- подумал я. 
- Опять все будут ругаться на материал про искусственный интеллект,- сразу пришла вторая мысль.

Так примерно и возникла идея посмотреть, насколько хорошо генеративный ИИ может помочь с оценкой проекта. Допустим, мы хотим выполнить оценку трудоемкости проекта по методике “снизу вверх”, т.е. за счет декомпозиции проекта на задачи. В результате должно появится дерево задач, каждая из которых состоит из названия и трудоемкости в днях. Вроде все понятно.

Пробуем

Для примера я решил взять весьма лаконичный проект, который состоит из а) входа в систему и б) простого личного кабинета. Описание проекта приведено ниже.

Необходимо разработать механизм входа в систему, состоящий из
1. формы регистрации; 
2. формы входа;
3. формы для восстановления пароля. 

При регистрации необходимо запросить следующие данные: имя, фамилия, email адрес и пароль. Восстановление пароля выполняется в два этапа: на первом система запрашивает email адрес и высылает на него уникальную токенизированную ссылку. При переходе по этой ссылке должна открываться форма для ввода нового пароля.

После входа в систему пользователь попадает в личный кабинет, для которого необходимо разработать следующий функционал:

1. смена персональных данных;
2. смена пароля;
3. смена email адреса;
4. удаление аккаунта. 

Общие требования:
1. при создании или смене пароля необходимо предусмотреть проверку на достаточную сложность (например, длину и состав);
2. при создании или смене пароля пароль вводится дважды,
3. при вводе email адреса необходимо предусмотреть его валидацию;
4. при регистрации и смене email адреса необходимы проверки, которые позволят избежать дублирование email адресов.

В качестве ответа от ИИ мы хотим получить дерево задач в JSON формате с оценкой трудоемкости по каждой задаче. Пишем следующий промпт:

Твоя роль - руководитель проекта с опытом разработки программного обеспечения. 

На основании предоставленного тебе ниже описания проекта выполни его декомпозицию в виде дерева задач. Результат декомпозиции должен быть в JSON формате. Каждая задача должна иметь наименование и оценку трудоемкости в человеко-днях.

Дай общую оценку проекта в человеко-днях

Берем ChatGPT, версия 4.1. Запускаем, работает! Вот результат.

{
  "project": "Механизм входа в систему и личный кабинет",
  "total_estimate_days": 24,
  "tasks": [
    {
      "name": "Регистрация пользователя",
      "estimate_days": 4,
      "subtasks": [
        { "name": "Форма регистрации (frontend)", "estimate_days": 1 },
        { "name": "Валидация email и пароля (frontend + backend)", "estimate_days": 1 },
        { "name": "Проверка уникальности email (backend)", "estimate_days": 0.5 },
        { "name": "Сохранение пользователя в БД (backend)", "estimate_days": 0.5 },
        { "name": "Интеграционное и ручное тестирование", "estimate_days": 1 }
      ]
    },
    {
      "name": "Форма входа",
      "estimate_days": 2,
      "subtasks": [
        { "name": "Форма входа (frontend)", "estimate_days": 0.5 },
        { "name": "Проверка учётных данных и генерация сессии/токена (backend)", "estimate_days": 1 },
        { "name": "Тестирование", "estimate_days": 0.5 }
      ]
    },
    {
      "name": "Восстановление пароля",
      "estimate_days": 4,
      "subtasks": [
        { "name": "Форма запроса на восстановление пароля (frontend)", "estimate_days": 0.5 },
        { "name": "Генерация токена и отправка email со ссылкой (backend)", "estimate_days": 1 },
        { "name": "Форма для ввода нового пароля по ссылке (frontend)", "estimate_days": 0.5 },
        { "name": "Обработка нового пароля и его сохранение (backend)", "estimate_days": 1 },
        { "name": "Проверка безопасности токена, валидация пароля", "estimate_days": 0.5 },
        { "name": "Тестирование", "estimate_days": 0.5 }
      ]
    },
    {
      "name": "Личный кабинет",
      "estimate_days": 10,
      "subtasks": [
        { "name": "Интерфейс личного кабинета (навигация, шаблон)", "estimate_days": 1 },
        { "name": "Смена персональных данных (имя, фамилия)", "estimate_days": 1 },
        { "name": "Смена пароля (с валидацией)", "estimate_days": 2 },
        { "name": "Смена email (с валидацией и проверкой уникальности)", "estimate_days": 2 },
        { "name": "Удаление аккаунта (с подтверждением)", "estimate_days": 1.5 },
        { "name": "Frontend для всех функций", "estimate_days": 1.5 },
        { "name": "Тестирование", "estimate_days": 1 }
      ]
    },
    {
      "name": "Общие механизмы валидации и безопасности",
      "estimate_days": 4,
      "subtasks": [
        { "name": "Проверка сложности пароля", "estimate_days": 1 },
        { "name": "Валидация email", "estimate_days": 0.5 },
        { "name": "Проверка уникальности email (reuse)", "estimate_days": 0.5 },
        { "name": "Общий механизм уведомлений (например, email)", "estimate_days": 1 },
        { "name": "Документация и тех. тесты", "estimate_days": 1 }
      ]
    }
  ]
}

На мой взгляд, оценка в 24 человеко-дня для такого состава работ - это перебор. Однако я не указал никаких вводных данных, чтобы можно было критиковать такую трудоемкость. При этом декомпозиция выполнена достаточно хорошо. Можно придираться к тому, как сгруппированы задачи, но в целом результат буквально требует продолжения. 

Если отнести нашу спецификацию и полученную декомпозицию опытному руководителю проектов, разумеется, он засыплет нас вопросами: О какой архитектуре идет речь? Это вообще в браузере работает? Что на backend-е? Учтены ли требования 152-ФЗ? 

Ну а мы попробуем использовать наш ChatGPT в роли опытного PM-а и попросим его задать нам эти вопросы сразу, еще до анализа проекта.

Твоя роль - руководитель проекта с опытом разработки программного обеспечения. 

На основании предоставленного тебе ниже описания проекта выполни его анализ и сформулируй вопросы, которые помогут:
1. выполнить декомпозицию проекта;
2. сделать оценку трудоемкости проекта.

Вопросы должны быть сформулированы в виде JSON объекта. На каждый вопрос предоставь список вариантов ответов. При необходимости следует предусмотреть ответ Другое.

Получаем результат.

{
  "questions": [
    {
      "id": "auth_storage",
      "question": "Какую систему хранения данных для пользователей предполагается использовать?",
      "options": ["СУБД (PostgreSQL, MySQL и т.п.)", "NoSQL (MongoDB, Firebase)", "Файловая система", "Другое"]
    },
    {
      "id": "backend_language",
      "question": "На каком языке программирования будет реализована серверная логика?",
      "options": ["PHP", "Python", "Node.js", "Java", "Go", "Другое"]
    },
    {
      "id": "frontend_stack",
      "question": "На каком стеке технологий будет реализован фронтенд?",
      "options": ["HTML/CSS/JavaScript (без фреймворков)", "React", "Vue.js", "Angular", "Другое"]
    },
    {
      "id": "email_service",
      "question": "Какой сервис будет использоваться для отправки email (подтверждение, восстановление)?",
      "options": ["SMTP сервер", "SendGrid", "Mailgun", "Amazon SES", "Другое"]
    },
    {
      "id": "token_expiry",
      "question": "Какой срок действия должен быть у ссылки для восстановления пароля?",
      "options": ["15 минут", "1 час", "24 часа", "Настраиваемый", "Другое"]
    },
    {
      "id": "password_policy",
      "question": "Какие требования должны предъявляться к сложности пароля?",
      "options": [ "Минимальная длина (указать отдельно)", "Символы разных регистров", "Цифры и специальные символы", "Не требуется проверка сложности", "Другое"
      ]
    },
    {
      "id": "personal_data_editing",
      "question": "Какие ограничения или процедуры валидации должны быть при смене персональных данных?",
      "options": ["Валидация формата имени/фамилии", "Подтверждение email при смене", "Без ограничений", "Другое"]
    },
    {
      "id": "auth_session_method",
      "question": "Каким образом будет реализована авторизация и хранение сессии пользователя?",
      "options": ["JWT (JSON Web Token)", "Сессионные куки", "OAuth 2.0", "Другое"]
    },
    {
      "id": "email_verification",
      "question": "Требуется ли подтверждение email при регистрации?",
      "options": ["Да", "Нет"]
    },
    {
      "id": "delete_account_process",
      "question": "Нужно ли предусмотреть подтверждение действия при удалении аккаунта?",
      "options": ["Подтверждение через email", "Подтверждение паролем", "Без подтверждения", "Другое"]
    },
    {
      "id": "security_measures",
      "question": "Какие меры безопасности дополнительно необходимо реализовать?",
      "options": [ "Ограничение количества попыток входа", "Captcha на формах", "2FA (двухфакторная аутентификация)", "Шифрование данных в базе", "Ничего из вышеперечисленного", "Другое"
      ]
    },
    {
      "id": "user_roles",
      "question": "Предусматриваются ли разные типы пользователей (роли)?",
      "options": ["Нет, только обычные пользователи", "Да, роли с разными правами", "Другое"]
    },
    {
      "id": "integration_requirements",
      "question": "Нужно ли интегрироваться с внешними системами (например, CRM, SSO и т.п.)?",
      "options": ["Нет", "Да (указать какие)", "Другое"]
    }
  ]
}

Отличные вопросы! Про архитектуру спросил, про время действия ссылки спросил. Даже есть вопрос про механизм подтверждения при удалении аккаунта.

Нужно дать ответы и посмотреть на результат. Но делать это в ChatGPT не очень удобно. Давайте реализуем это все в виде отдельного модуля в Project Calc - системе для оценки трудоемкости и стоимости проектов. Так как в системе есть механизм для визуализации дерева задач, работать с результатом будет гораздо проще.

Сказано-сделано!

Работа с искусственным интеллектом в системе Project Calc

Создаем в системе новый проект, заходим в закладку Задачи и запускаем пошаговую форму.

Так как система Project Calc умеет работать с документами проекта, на втором шаге можно загрузить, например, документ с функциональными требованиями, документ с техническими требованиями, другие документы - все они будут использованы искусственным интеллектом для оценки и анализа.

В нашем примере документов нет, есть просто текст, поэтому вставляем его в поле Дополнительное описание проекта на следующем шаге.

Нажимаем Продолжить и ждем пару минут, пока ChatGPT поймет наши требования и создаст список уточняющих вопросов.

Готово!

Список вопросов, подготовленных GPT, начинается с краткого описание проекта (1), как его понимает ИИ. Это нужно, чтобы мы могли убедиться, что наши вводные были прочитаны и поняты.

Каждый вопрос содержит описание (2), почему он важен с точки зрения оценки трудоемкости и величину от 1 до 10, которая показывает его влияние (3) на оценку. Для того чтобы увидеть эту информацию, следует кликнуть по лампочке (5) справа от вопроса.

Кроме того, каждый ответ содержит подсказку (4), насколько он сложен с точки зрения реализации (например, +2 ч.д.). К этому числу следует относиться скептически. Оно в большей степени нужно, чтобы понять, какая из опций будет дороже в разработке, а какая дешевле.

Следующий шаг - мы задаем группы рисков, с помощью которых ИИ будет оценивать задачи. Система по умолчанию предлагает три группы риска, но их можно расширить или изменить.

Ждем еще немного и наконец-то получаем наш результат - текстовое описание проекта с учетом ответов на вопросы, оценку в человеко-днях и декомпозицию задач с оценкой трудоемкости и рисков.

Интересно отменить, что по сравнению с нашим первым запросом, трудоемкость проекта получилась схожей, однако теперь задачи разнесены на frontend и backend ветки, появилось проектирование архитектуры, есть тестирование, есть работы по развертыванию системы. Я бы сказал, теперь это стало больше похоже на правду - для такого краткого описания мы получили очень хорошее дерево задач и неплохую оценку по трудоемкости.

Что в результате?

В результате анализа проекта, выполненного с помощью генеративного искусственного интеллекта, в системе Project Calc появились данных в трех закладах:

Закладка Задачи - Дерево задач с оценкой трудоемкости и оценкой риска. Так как это стандартное с точки зрения системы дерево задач, над ним можно выполнять любые операции - дополнять, редактировать, менять структуру, привязывать модификаторы и т.д. и т.п.

Закладка Документы - появились два документа: один с нашим дополнительным описанием, второй - с вопросами и ответами.

Закладка Настройки - группы риска.

А в закладе Анализ, как и всегда, можно выполнить анализ проекта с помощью потоковой диаграммы. Например как на скриншоте ниже, можно посмотреть источники и состав выявленных рисков проекта.

Резюме

Не могу сказать, что стал бы использовать такую оценку для подготовки предложения заказчику или для защиты проекта. Однако такой подход имеет право на жизнь. Стив МаКконнелл в своей книге “Сколько стоит программный проект” говорит, что для того чтобы убедиться, что расчет проекта выполнена верно, следует оперировать двумя оценками, выполненными по разным методикам (например, “снизу вверх” и “по аналогии”). Если оценки сходятся, можно сказать, что скорее всего проект оценен верно. Если нет - это повод тщательно проверить, откуда взялось расхождение. Анализ проекта с помощью искусственного интеллекта может выступать именно в качестве второй, долняющей оценки.

Более того, подход, реализованный в системе Project Calc, позволяет сформулировать вопросы, которые подсвечивают упущенные при разработке спецификаций моменты. Например, для этого проекта система задала вопрос о том, нужна ли защита от ботов при регистрации. А еще мне понравился вопрос о том, нужна ли тут админка для просмотра списка пользователей и выполнения каких-то базовых операций.

Система неплохо справляется с идентификаций рисков, иногда подсказывая кейсы, которые действительно могут привести к росту трудоемкости (например, ChatGPT может указать на высокую сложность реализации задачи).

Можно констатировать, что получился интересный рабочий инструмент. 

В новой версии системы Project Calc описанная функциональность уже работает, но доступна только при in premise инсталляции (на локальной инфраструктуре). Сейчас поддерживается ChatGPT версии gpt 4.1 и DeepSeek, в планах добавить поддержку GigaChat и Claude.

Если хотите посмотреть, протестировать online - напишите мне, пожалуйста, в личку или (что лучше) на email (info@projectcalc.ru). Расскажите немного, почему вам это интересно и на чем планируете тестировать. Дадим доступ на месяц совершенно бесплатно. 

Традиционно, регистрация в системе и работа в рамках разумных ограничений- бесплатны, начать работу можно тут app.projectcalc.ru

Комментарии (7)


  1. Ejentos
    06.06.2025 12:30

    Продукт кажется весьма полезным. Любопытно, почему нет комментариев? Какие альтернативы есть?


    1. FifthLeg
      06.06.2025 12:30

      Потому что начал за здравие, а кончил за упокой.

      Притворился что проводит эксперимент, а оказывается рекламирует и впихивает свой говнопродукт, который нахрен никому не впёрся.


      1. WFF Автор
        06.06.2025 12:30

        Да, я автор Project Calc, и это был не просто эксперимент ради эксперимента- мне было важно проверить, как ИИ работает вживую внутри системы. Но эта статья в первую очередь про то, как GPT справляется с задачей оценки проекта. Если кому-то интересен сам инструмент, есть контакты, но основная цель- поделиться опытом.


        1. FifthLeg
          06.06.2025 12:30

          Эксперимент, это когда взяли реальную задачу и попробовали её сделать.

          Когда из носа выковарили нечто и на основе этого пытаются прорекламировать продукт, ну это такое себе.

          Сразу написали бы что вот, желаю свой продукт представить, вопросов нету.

          А так ни слухом ни духом, а потом как чёрт из табакерки выпрыгнул продукт и вот - любите меня.


          1. WFF Автор
            06.06.2025 12:30

            Действительно, задача в статье упрощенная, чтобы нагляднее показать подход. Идея как раз в том, чтобы на простом примере сразу увидеть результат плюс сильные и слабые стороны.

            Если у вас есть пример реальной задачи (не очень большой, чтобы результаты были очевидными), буду только рад попробовать ее пропустить через тот же процесс. Есть шанс сразу поймать, где подход лажает- интересно.

            Если скинете описание- сделаю и выложу результат в ответе. Думаю, многим будет полезно посмотреть, где ИИ прокалывается.


      1. Ejentos
        06.06.2025 12:30

        Автор действительно поступает некрасиво и даже в комментариях старается использовать аудиторию как тестевую среду.

        Благодарю!


        1. WFF Автор
          06.06.2025 12:30

          Вам не угодишь, очевидно. Но я вам тоже благодарен!