Я попросил ChatGPT написать требования, и вот что получилось
IT-архитектор, менеджер продукта, эксперт в системном и бизнес-анализе.
Ведущий тренер в школе системного анализа Systems.Education.
Ведет telegram-канал Системный сдвиг
Весь Интернет охватила эпидемия chatGPT — она поддерживает беседу, пишет стихи, придумывает сказки, составляет юридические претензии и ищет ошибки в коде. Я подумал —, а сможет ли она составить бэклог или спроектировать API?
Так как я последние 7 лет занимаюсь проектами в области edTech, я начал с бэклога для школьной LMS — системы управления обучением. Вот такой бэклог сгенерировала мне модель (здесь и далее я привожу текст так, как мне выдала модель, без правок):
chatGPT:
Бэклог продукта — это приоритетный список функций и требований к продукту. Вот пример бэклога продукта для школьной LMS:
Учетные записи пользователей:
Как пользователь, я хочу иметь возможность создать учетную запись, чтобы иметь доступ к LMS.
Как администратор я хочу иметь возможность создавать учетные записи пользователей и управлять ими, чтобы контролировать доступ к LMS.
Управление курсом:
Как администратор я хочу иметь возможность создавать, обновлять и удалять курсы, чтобы иметь возможность управлять каталогом курсов.
Регистрация:
Как пользователь, я хочу иметь возможность записываться на курсы, чтобы иметь доступ к материалам курса и сдавать экзамены.
Как администратор я хочу иметь возможность управлять регистрацией, чтобы контролировать, кто имеет доступ к каждому курсу.
Материалы курса:
Как администратор я хочу иметь возможность загружать материалы курса, такие как конспекты лекций, задания и экзамены, и управлять ими.
Как пользователь, я хочу иметь возможность просматривать и загружать материалы курса.
Оценка:
Как администратор я хочу иметь возможность оценивать задания и экзамены, чтобы я мог оставлять отзывы учащимся.
Как пользователь, я хочу иметь возможность просматривать свои оценки и получать уведомления о новых оценках.
Уведомления:
Как администратор я хочу иметь возможность отправлять уведомления пользователям, такие как объявления и напоминания.
Как пользователь, я хочу иметь возможность просматривать свои уведомления и управлять ими.
Дискуссионные форумы:
Как пользователь, я хочу иметь возможность участвовать в дискуссионных форумах по каждому курсу, чтобы задавать вопросы и сотрудничать со своими одноклассниками.
Как администратор, я хочу иметь возможность модерировать дискуссионные форумы, чтобы они оставались уважительными и соответствовали теме.
Профили пользователей:
Как пользователь, я хочу иметь возможность обновлять информацию своего профиля, такую как мое имя и изображение профиля.
Как пользователь, я хочу иметь возможность просматривать профили других пользователей и просматривать их историю регистрации и достижения.
Достижения:
Как администратор я хочу иметь возможность создавать и управлять достижениями, которые могут заработать пользователи, например значками и сертификатами.
Как пользователь, я хочу иметь возможность просматривать свои достижения и делиться ими с другими.
Аналитика:
Как администратор я хочу иметь возможность просматривать аналитику LMS, например статистику использования и показатели вовлеченности пользователей.
Как администратор я хочу иметь возможность создавать отчеты на основе данных аналитики.
(Я начал общаться с моделью на английском, тут я привожу гугл-перевод её ответов, чтобы было понятнее русскоязычным читателям. Потом я перешел на русский; на русском ответы модели короче, и её приходится часто просить продолжать словами «продолжай» или «дальше»).
Бэклог показался мне интересным, но в нём не было историй для родителей школьников. Я попросил их добавить:
chatGPT:
Вот несколько дополнительных пользовательских историй, которые можно добавить в бэклог продукта, чтобы поддержать родителей учащихся:
Родительские аккаунты:
Как родитель, я хочу иметь возможность создать учетную запись, чтобы иметь доступ к LMS и просматривать информацию о курсах и оценках моего ребенка.
Как администратор, я хочу иметь возможность связать родительскую учетную запись с учетной записью учащегося, чтобы родители могли получать доступ к LMS от имени своих детей.
Уведомления для родителей:
Как родитель, я хочу иметь возможность получать уведомления об успехах моего ребенка в LMS, например, когда он получает новые оценки или записывается на новые курсы.
Как администратор, я хочу иметь возможность настраивать типы уведомлений, которые могут получать родители.
Участие родителей:
Как родитель, я хочу иметь возможность просматривать материалы курса и задания моего ребенка, чтобы поддерживать его обучение.
Как родитель, я хочу иметь возможность общаться с учителями моего ребенка через LMS, чтобы быть в курсе их успехов и оказывать поддержку.
Родительский контроль:
Как родитель, я хочу иметь возможность устанавливать ограничения на использование LMS моим ребенком, например, количество времени, которое они могут проводить на платформе каждый день.
Как администратор, я хочу предоставить родителям инструменты, которые помогут им отслеживать и управлять использованием LMS их детьми.
Отчеты для родителя:
Как родитель, я хочу иметь возможность просматривать отчеты об успеваемости моего ребенка в системе управления обучением, такие как его оценки и процент завершения курса.
Как администратор, я хочу иметь возможность создавать и настраивать отчеты для просмотра родителями.
Результат меня, честно сказать, впечатлил. Однако смутило, что сеть не задает уточняющих вопросов. Впрочем, можно её об этом попросить:
chatGPT:
Можете ли вы предоставить больше информации о целевой аудитории LMS (учащиеся, учителя, администраторы, родители)?
Каковы основные цели и задачи LMS?
Какие функции, по вашему мнению, должна иметь LMS для поддержки учащихся, учителей, администраторов и родителей?
Как LMS будет интегрироваться с другими системами или инструментами, которые в настоящее время используются в школе?
Какие ключевые показатели эффективности будут использоваться для измерения успеха LMS?
Можете ли вы привести какие-либо примеры подобных систем или платформ, по образцу которых можно было бы смоделировать LMS?
Каковы основные проблемы или препятствия, которые LMS необходимо будет решить?
Как LMS будет развиваться и поддерживаться с течением времени?
Каковы сроки разработки и внедрения LMS?
Действительно, а какие у системы цели и задачи? Допустим, мы хотим не просто выдавать задания и следить за отметками, а развивать в детях самостоятельность. Сможет ли нейросеть понять эту идею?
chatGPT:
Конечно, я могу настроить бэклог продукта для поддержки цели развития навыков саморегуляции, мотивации и проявления свободного выбора у учащихся. Вот пересмотренный бэклог продукта:
Будучи учащимся, я хочу иметь возможность просматривать и отслеживать свой прогресс, чтобы развивать навыки саморегуляции и сохранять мотивацию.
Будучи учащимся, я хочу иметь доступ к различным учебным ресурсам и занятиям, чтобы я мог выбирать, как мне учиться и развивать свои интересы.
Как учитель, я хочу иметь возможность предоставлять индивидуальную обратную связь и поддержку ученикам, чтобы они могли развивать свои навыки саморегуляции и мотивацию.
Как учитель, я хочу иметь возможность создавать и управлять различными учебными мероприятиями и ресурсами, чтобы у учащихся был широкий выбор вариантов обучения.
Как администратор, я хочу иметь возможность контролировать и отслеживать успеваемость учащихся и взаимодействие с LMS, чтобы я мог определить области для улучшения и поддержки.
Как родитель, я хочу иметь возможность наблюдать за прогрессом моего ребенка и его взаимодействием с LMS, чтобы я мог поддерживать его обучение и развитие.
Будучи учащимся, я хочу иметь возможность сотрудничать со своими сверстниками и учителями в групповых проектах и мероприятиях, чтобы развивать навыки командной работы и общения.
Как учитель, я хочу иметь возможность легко создавать и управлять групповыми проектами и мероприятиями, чтобы я мог поддерживать развитие у учащихся командной работы и коммуникативных навыков.
Будучи учащимся, я хочу иметь доступ к LMS с любого устройства и из любого места, чтобы я мог учиться и оставаться вовлеченным в любое время и в любом месте, где это удобно для меня.
Дальше я решил пойти в более технические детали, и попросил составить список объектов предметной области:
chatGPT:
Пользователь: Объект пользователя представляет человека, имеющего учетную запись в LMS. Пользовательский объект будет иметь такие свойства, как имя пользователя, пароль, имя и изображение профиля.
Курс: Объект курса представляет собой курс, доступный в LMS. Объект курса будет иметь такие свойства, как имя, описание, дата начала и дата окончания.
Зачисление: объект зачисления представляет зачисление пользователя на курс. Объект регистрации будет иметь ссылку на объект пользователя и объект курса.
Материал курса: Объект материала курса представляет часть содержимого, связанного с курсом, например конспект лекции или задание. Объект материала курса будет иметь такие свойства, как имя, тип и файл.
Оценка: объект оценки представляет оценку пользователя за курс. Объект оценки будет иметь такие свойства, как оценка и обратная связь.
Уведомление. Объект уведомления представляет собой сообщение, отправляемое пользователю. Объект уведомления будет иметь такие свойства, как тип, сообщение и дата.
Дискуссионный форум. Объект дискуссионного форума представляет собой форум для курса, где пользователи могут публиковать сообщения и отвечать друг другу. Объект дискуссионного форума будет иметь ссылку на объект курса и список сообщений.
Сообщение: Объект сообщения представляет собой сообщение, опубликованное на дискуссионном форуме. Объект сообщения будет иметь такие свойства, как текст, дата и пользователь.
Достижение: объект достижения представляет собой значок или сертификат, который может получить пользователь. Объект достижения будет иметь такие свойства, как имя, описание и изображение.
Объекты данных будут иметь следующие отношения:
Пользователь имеет много зачислений.
Курс имеет много зачислений.
В курсе много учебных материалов.
Зачисление имеет одну оценку.
У пользователя много уведомлений.
Курс имеет один дискуссионный форум.
Дискуссионный форум имеет много сообщений.
У пользователя много достижений.
Также я попросил составить список нефункциональных требований:
chatGPT:
Вот некоторые дополнительные нефункциональные требования к LMS:
1. LMS должна быть доступна для пользователей с ограниченными возможностями, включая тех, кто использует вспомогательные технологии, такие как программы для чтения с экрана и программное обеспечение для преобразования речи в текст.
2. LMS должна быть удобной для мобильных устройств, с адаптивным дизайном, который хорошо работает на различных устройствах и размерах экрана.
3. LMS должен иметь удобный интерфейс, с интуитивно понятной навигацией и четкими инструкциями для всех действий.
4. LMS должна поддерживать интернационализацию с возможностью отображения контента на разных языках.
5. LMS должна поддерживать настройку с возможностью администраторов настраивать внешний вид и поведение платформы.
6. LMS должна иметь надежные меры безопасности, включая шифрование паролей и защиту от распространенных атак, таких как внедрение SQL и межсайтовые сценарии.
7. LMS должна иметь масштабируемую архитектуру, способную справляться с растущим трафиком и объемами данных по мере роста платформы.
8. LMS должна иметь прочную и надежную инфраструктуру с резервными серверами и хранилищем данных для обеспечения высокой доступности.
9. LMS должен иметь план аварийного восстановления с процедурами восстановления платформы в случае сбоя или простоя.
10. LMS должна иметь специальную группу для обслуживания и поддержки, способную своевременно реагировать на проблемы и запросы.
Ого! Требования к доступности людей с ограниченными возможностями, резервированию и даже плану аварийного восстановления! Очень многие человеческие умы про них часто забывают. Также мне очень понравилось, что сеть думает про администраторов — эта роль тоже часто остается за кадром при продумывании функций.
С другой стороны, это всё общие слова, а хотелось бы конкретики. Что там про доступность людей с ограниченными возможностями, например?
chatGPT:
Требования доступности гарантируют, что системой могут пользоваться люди с ограниченными возможностями. Эти требования обычно основаны на стандартах и рекомендациях по доступности, таких как Рекомендации по доступности веб-контента (WCAG) 2.0 или 2.1.
Вот несколько примеров подробных требований доступности, которые можно применить к школьной LMS:
Все компоненты пользовательского интерфейса, такие как кнопки, ссылки и элементы управления формы, должны быть доступны с клавиатуры и поддерживать навигацию только с помощью клавиатуры.
Весь текстовый контент должен быть удобочитаемым и понятным для программ чтения с экрана и должен включать соответствующие текстовые альтернативы нетекстовому контенту, например изображениям и видео.
Вся цветовая информация, такая как сообщения об ошибках и обязательные поля, должна быть четко передана без цвета, с использованием шаблонов, символов или других визуальных подсказок.
Весь аудио- и видеоконтент должен содержать титры, стенограммы или аудиоописания, чтобы сделать контент доступным для глухих или слабослышащих пользователей.
LMS должна поддерживать масштабирование и изменение размера текста, чтобы контент был доступен для пользователей с нарушениями зрения.
LMS должна быть совместима со вспомогательными технологиями, такими как программы чтения с экрана, лупы и программное обеспечение для распознавания речи, чтобы пользователи с ограниченными возможностями могли получить доступ к системе и использовать ее.
LMS должна соответствовать критериям успеха уровня AA WCAG 2.0 или 2.1, чтобы обеспечить доступность системы для максимально широкого круга пользователей.
LMS должна быть протестирована на доступность для пользователей с ограниченными возможностями, а любые выявленные проблемы должны быть рассмотрены и устранены своевременно.
LMS должна обеспечивать доступный пользовательский интерфейс для пользователей с временными нарушениями, такими как сломанная рука или временная слепота, и должна быть легко доступна для пользователей с когнитивными нарушениями или нарушениями обучения.
LMS должна предоставлять пользователям четкие и краткие инструкции и обратную связь, чтобы поддерживать независимое и успешное использование системы людьми с ограниченными возможностями.
Ладно, давайте вернемся к функциональным требованиям. Что если попросить описать их в формате юскейсов?
chatGPT:
Вот несколько возможных пользовательских сценариев для родителя учащегося, использующего LMS:
Как родитель, я хочу иметь возможность входить в LMS и просматривать каталог курсов, оценки и достижения моего ребенка.
Как родитель, я хочу иметь возможность получать уведомления об успехах моего ребенка в LMS, например, когда он получает новые оценки или записывается на новые курсы.
Как родитель, я хочу иметь возможность просматривать материалы курса и задания моего ребенка, чтобы поддерживать его обучение.
Как родитель, я хочу иметь возможность общаться с учителями моего ребенка через LMS, чтобы быть в курсе их успехов и оказывать поддержку.
Как родитель, я хочу иметь возможность устанавливать ограничения на использование LMS моим ребенком, например, количество времени, которое они могут проводить на платформе каждый день.
Как родитель, я хочу иметь возможность просматривать отчеты об успеваемости моего ребенка в системе управления обучением, такие как его оценки и процент завершения курса.
Как родитель, я хочу иметь возможность связаться со службой поддержки LMS, если у меня возникнут какие-либо вопросы или проблемы с платформой.
Как родитель, я хочу иметь доступ к LMS со своего мобильного устройства, чтобы я мог оставаться на связи с обучением моего ребенка, даже когда я в пути.
Так, ну это опять что-то типа историй, а дай мне сценарий какого-нибудь юскейса?
chatGPT:
Вот пошаговое описание действий, которые должен предпринять родитель, чтобы просмотреть отчеты о прогрессе своего ребенка в LMS:
Родитель входит в LMS, используя свое имя пользователя и пароль.
Родитель переходит в раздел «Отчеты» LMS, который обычно доступен из главного меню.
Родитель выбирает отчет «Успеваемость учащегося» из списка доступных отчетов.
LMS отображает список всех учащихся в учетной записи родителя вместе с их текущими оценками и показателями завершения курса.
Родитель выбирает имя своего ребенка из списка учеников, чтобы просмотреть подробный отчет для этого ученика.
LMS отображает отчет об успеваемости учащегося, который включает такую информацию, как общий средний балл учащегося, его оценки по каждому курсу и процент завершения курса.
Родитель просматривает отчет и использует информацию, чтобы понять прогресс своего ребенка и определить области, в которых ему может понадобиться поддержка.
Родитель может использовать отчет для обсуждения успеваемости ребенка со своим учителем или другим школьным персоналом.
Родитель может повторить процесс в любое время, чтобы просмотреть обновленные отчеты или просмотреть отчеты для нескольких учащихся.
Или вот как учитель проставляет отметку:
Вот пример использования, когда учитель ставит оценку домашнему заданию ученика:
Преподаватель входит в LMS и переходит на страницу курса класса, в котором он преподает.
Преподаватель выбирает задание, отправленное учащимся, из списка заданий.
Преподаватель просматривает работу учащегося и просматривает ее содержимое, чтобы определить оценку учащегося.
Учитель вводит оценку в соответствующее поле и добавляет отзывы или комментарии для ученика.
Учитель выставляет оценку, и она автоматически сохраняется в LMS.
Учащийся получает уведомление о том, что он получил новую оценку за задание.
Учащийся входит в LMS и переходит на страницу своих оценок, чтобы просмотреть новую оценку.
Учащийся анализирует отзывы и комментарии, предоставленные учителем, и думает, как они могут улучшить свою работу в будущем.
Этот вариант использования демонстрирует, как можно использовать LMS для поддержки процесса оценивания и своевременного предоставления учащимся отзывов о своей работе.
Ладно, а обработку исключительных ситуаций?
chatGPT:
Вот несколько альтернативных путей и исключений, которые можно добавить к варианту использования, когда учитель ставит оценку домашнему заданию учащегося:
Альтернативный вариант: если учитель не может оценить задание из-за технической проблемы, он может обратиться в службу поддержки LMS для решения проблемы.
Альтернативный вариант: если учитель не может оценить задание из-за того, что оно неполное или не соответствует требованиям к заданию, он может вернуть задание учащемуся на доработку.
Исключение: если учащийся не сдал задание, учитель не сможет его оценить. В этом случае учитель может связаться со студентом, чтобы напомнить ему о необходимости представить свою работу.
Исключение: если материалы, отправленные учащимся, содержат неприемлемый или оскорбительный контент, учителю может потребоваться принять меры по удалению такого контента и уведомить об этом соответствующие органы.
Исключение: если LMS перестает работать или возникает другая техническая проблема, учитель может не получить доступ к заданию или отправить оценку. В этом случае учителю, возможно, придется подождать, пока проблема не будет решена, прежде чем продолжить.
Неприемлемый контент! Кому бы это пришло в голову! (А ситуация, на самом деле, часто встречающаяся, уж поверьте моему опыту работы со школьными системами).
Ну хорошо, а что, если мы зароемся в совсем технические детали, и попросим сеть придумать REST API для нашей системы? (Извините, тут будет всё на английском)
chatGPT:
POST /users
Create a new user account.
Request body:
- username: string
- password: string
Response:
- 201: Successfully created user.
- 400: Invalid request body.
GET /users/{id}
Get information about a user.
Request parameters:
- id: integerResponse:
- 200: Success. Returns user information.
- 404: User not found.
PUT /users/{id}
Update a user's information.
Request parameters:
- id: integer
Request body:
- username: string (optional)
- password: string (optional)
Response:
- 200: Successfully updated user.
- 400: Invalid request body.
- 404: User not found.
DELETE /users/{id}
Delete a user's account.
Request parameters:
- id: integerResponse:
- 200: Successfully deleted user.
- 404: User not found.
POST /courses
Create a new course.
Request body:
- name: string
- description: string (optional)
- start_date: date (optional)
- end_date: date (optional)
Response:
- 201: Successfully created course.
- 400: Invalid request body.
GET /courses/{id}
Get information about a course.
Request parameters:
- id: integer
Response:
- 200: Success. Returns course information.
- 404: Course not found.
PUT /courses/{id}
Update a course's information.
Request parameters:
- id: integer
Request body:
- name: string (optional)
- description: string (optional)
- start_date: date (optional)
- end_date: date (optional)
Response:
- 200: Successfully updated course.
- 400: Invalid request body.
- 404: Course not found.
DELETE /courses/{id}
Delete a course.
Request parameters:
- id: integer
Response:
- 200: Successfully deleted course.
- 404: Course not found.
POST /courses/{id}/enrollments
Enroll a user in a course.
Request parameters:
- id: integer
Request body:
- user_id: integer
Response:
- 201: Successfully enrolled user in course.
- 400: Invalid request body.
- 404: Course or user not found.
DELETE /courses/{id}/enrollments/{user_id}
Unenroll a user from a course.
Request parameters:
- id: integer
- user_id: integer
Response:
- 200: Successfully unenrolled user from course.
- 404: Course, user, or enrollment not found
А если не REST, а, например, GraphQL? И не запись на курс, а, например, выдача домашнего задания?
chatGPT:
type Student {
id: ID!
name: String!
email: String!
classes: [Class]
}
type Class {
id: ID!
name: String!
students: [Student]
assignments: [Assignment]
}
type Assignment {
id: ID!
title: String!
description: String
dueDate: Date
submission: Submission
grades: [Grade]
}
type Submission {
id: ID!
student: Student
submittedAt: Date
content: String
}
type Grade {
id: ID!
student: Student
teacher: Teacher
score: Int
comments: String
}
type Teacher {
id: ID!
name: String!
email: String!
classes: [Class]
}
type Query {
student(id: ID!): Student
class(id: ID!): Class
assignment(id: ID!): Assignment
submission(id: ID!): Submission
grade(id: ID!): Grade
teacher(id: ID!): Teacher
}
type Mutation {
submitAssignment(assignmentId: ID!, content: String!): Submission
gradeAssignment(assignmentId: ID!, studentId: ID!, score: Int, comments: String): Grade
createClass(name: String!): Class
addStudentToClass(classId: ID!, studentId: ID!): Class
createAssignment(classId: ID!, title: String!, description: String, dueDate: Date): Assignment
}
(IDL и WSDL она тоже умеет генерить. И очень легко переделывает одно в другое).
Даже не знаю, что ещё попросить её сделать. А продуктовые метрики можешь предложить?
chatGPT:
Вот некоторые возможные метрики продукта, которые можно использовать для измерения производительности и успеха LMS:
Активные пользователи: количество пользователей, которые активно используют LMS на регулярной основе.
Коэффициент завершения курса: процент пользователей, завершивших каждый курс, на который они записались.
Вовлеченность пользователей: среднее количество времени, которое пользователи проводят в LMS за сеанс, и количество действий, которые они совершают при использовании платформы.
Рейтинги курсов: средняя оценка, которую пользователи ставят пройденным курсам, а также количество полученных оценок.
Уведомления: количество отправленных уведомлений и процент ответов на эти уведомления.
Дискуссионные форумы: количество сообщений, размещенных на дискуссионных форумах, и уровень участия в этих форумах.
Уровень завершения достижений: процент пользователей, которые выполнили все достижения, доступные в LMS.
Технические характеристики: Время безотказной работы и время отклика LMS, а также количество ошибок и исключений.
Удовлетворенность пользователей: средняя оценка, которую пользователи ставят LMS, а также количество полученных оценок.
Уровень рефералов: процент пользователей, которые направляют других в LMS.
Так, подождите, у нас же была цель развивать в детях самостоятельность? А как мы это измерим?
chatGPT:
Для измерения навыков саморегуляции, мотивации и свободного выбора учащихся некоторые потенциальные показатели могут включать:
Время, проведенное в LMS: отслеживание количества времени, которое учащиеся проводят в LMS, может дать представление об их вовлеченности и мотивации.
Показатели завершения: отслеживание процента заданий и действий, выполненных учащимися, может дать представление об их навыках саморегуляции и мотивации.
Выбор учебных ресурсов и занятий: отслеживание ряда учебных ресурсов и занятий, к которым учащиеся получают доступ и в которых участвуют, может дать представление об их свободном выборе поведения.
Сотрудничество со сверстниками: отслеживание частоты и качества совместной работы над групповыми проектами и мероприятиями может дать представление о командной работе и коммуникативных навыках учащихся.
Обратная связь и поддержка: отслеживание частоты и качества обратной связи и поддержки, предоставляемой учащимся учителями, может дать представление об их индивидуальном опыте обучения.
Удовлетворенность студентов: сбор отзывов студентов об их опыте работы с LMS может дать представление об их общей удовлетворенности и вовлеченности.
Последнее, что мне пришло в голову спросить, была оценка стоимости реализации такого проекта. Но тут нейросеть ответила уклончиво:
chatGPT:
Трудно предоставить точную финансовую оценку разработки школьной LMS без дополнительной информации о конкретных требованиях и масштабах проекта. Однако, исходя из предоставленной информации, разработка LMS с указанными функциями и возможностями потенциально может стоить от 100 000 до 250 000 долларов и более.
Стоимость разработки LMS может варьироваться в зависимости от ряда факторов, таких как сложность и количество функций, опыт и знания команды разработчиков, а также используемые технологии и платформы.
Кроме того, на стоимость проекта потенциально могут повлиять любые проблемы или препятствия, которые могут возникнуть в процессе разработки, такие как потребность в пользовательских функциях или интеграции с внешними системами. Для создания более точной финансовой оценки было бы полезно собрать более подробную информацию о конкретных требованиях и целях LMS, а также о любых потенциальных ограничениях, которые могут повлиять на процесс разработки.
Обалдев от такого результата, я решил сделать перерыв, и попробовать с другой предметной областью и на русском. В этот раз я взял систему для обработки заявок на выдачу кредитов, и кроме функциональных требований сгенерировал ещё схему навигации по экранам, описание каждого отдельного экрана, а также диаграмму последовательности, описывающую основной сценарий системы.
Такие диаграммы рисуют участники у нас на курсе по проектированию интеграций, и рисуют они их в PlantUML.
Рисовать ChatGPT не умеет, но умеет генерировать код для PlantUML, а уже оттуда можно взять картинку:
chatGPT:
Состав экранов выглядит так (модель в этот раз всё генерировала сразу на русском):
Экран входа/регистрации
Экран выбора кредитного продукта
Экран заполнения заявки на кредит
Экран ожидания решения по заявке
Экран решения по заявке
Экран личного кабинета (просмотр информации о кредите и статусе платежей)
Экран помощи и поддержки (запрос на помощь или связь с службой поддержки)
А описание отдельных экранов так:
Описание экрана «Ожидание решения по заявке»
На экране ожидания решения по заявке отображается сообщение о том, что заявка находится в процессе обработки и пользователю необходимо подождать. Этот экран может также содержать информацию о прогнозируемом времени обработки заявки и предоставлять возможность проверить статус заявки в личном кабинете. На этом экране может также быть предложение ознакомиться с другими кредитными продуктами или услугами компании.
Описание экрана «Решение по заявке»
На экране решения по заявке отображается результат обработки заявки клиента. Этот экран может содержать информацию о принятом решении по заявке (например, одобрение или отказ в кредите), а также информацию о выбранном кредитном продукте (например, сумма кредита, ставка, срок). В зависимости от принятого решения на этом экране может быть предложена возможность принять или отклонить предложенное решение. Этот экран может также содержать информацию о способах получения кредита (например, в банковском отделении или через интернет-банкинг) и предоставлять возможность связаться с контактным центром компании для уточнения деталей.
Также система описывает переходы между экранами:
Экран входа/регистрации:
Переход на экран выбора кредитного продукта (после входа в систему)
Переход на экран личного кабинета (после регистрации и входа в систему)
Переход на экран помощи и поддержки (ссылка на этот экран из формы входа/регистрации)
Экран выбора кредитного продукта:
Переход на экран заполнения заявки на кредит (после выбора кредитного продукта)
Переход на экран входа/регистрации (после нажатия на ссылку «Войти» или «Зарегистрироваться» в шапке сайта)
Переход на экран личного кабинета (после нажатия на ссылку «Личный кабинет» в шапке сайта)
Переход на экран помощи и поддержки (ссылка на этот экран из футера сайта)
Экран заполнения заявки на кредит:
Переход на экран ожидания решения по заявке (после отправки заявки)
Переход на экран входа/регистрации (после нажатия на ссылку «Войти» или «Зарегистрироваться» в шапке сайта)
Переход на экран личного кабинета (после нажатия на ссылку «Личный кабинет» в шапке сайта)
Переход на экран помощи и поддержки (ссылка на этот экран из футера сайта)
Экран ожидания решения по заявке:
Переход на экран решения по заявке (после получения решения по заявке)
Переход на экран входа/регистрации (после нажатия на ссылку «Войти» или «Зарегистрироваться» в шапке сайта)
Переход на экран личного кабинета (после нажатия на ссылку «Личный кабинет» в шапке сайта)
Переход на экран помощи и поддержки (ссылка на этот экран из футера сайта)
Экран решения по заявке:
Переход на экран выбора кредитного продукта (после нажатия на ссылку «Подать новую заявку»)
Переход на экран входа/регистрации (после нажатия на ссылку «Войти» или «Зарегистрироваться» в шапке сайта)
Переход на экран личного кабинета (после нажатия на ссылку «Личный кабинет» в шапке сайта)
Переход на экран помощи и поддержки (ссылка на этот экран из футера сайта)
Экран личного кабинета:
Переход на экран выбора кредитного продукта (после нажатия на ссылку «Подать новую заявку»)
Переход на экран истории заявок (после нажатия на ссылку «История заявок» в меню личного кабинета)
Переход на экран реквизитов (после нажатия на ссылку «Реквизиты» в меню личного кабинета)
Переход на экран помощи и поддержки (ссылка на этот экран из футера сайта)
Экран истории заявок:
Переход на экран решения по конкретной заявке (после нажатия на ссылку конкретной заявки в таблице истории заявок)
Переход на экран личного кабинета (после нажатия на ссылку «Личный кабинет» в шапке сайта)
Думаю, эту схему также можно отрисовать в PlantUML.
Напоследок я сгенерировал для кредитной системы состав работ:
chatGPT:
Анализ текущей бизнес-модели: 2–4 недели
Разработка спецификации требований: 2–4 недели
Разработка архитектуры и выбор технологий: 1–2 недели
- © Habrahabr.ru