Развитие разговорного искусственного интеллекта (ИИ) подняло насущные вопросы о будущем направлении многих аспектов общества, включая компьютерное образование. Первые реакции на быстрое развитие разговорных агентов были разными: некоторые объявили «конец программирования», в то время как другие посчитали это «преждевременным некрологом». Некоторые приняли оборонительный подход к использованию разговорного ИИ и избеганию роста плагиата, в то время как другие задавались вопросом: «Ну и что, если ChatGPT написал это?» Тем не менее, возникают вопросы о том, будет ли компьютерное образование в его нынешнем виде по-прежнему актуальным и соответствовать своему назначению в эпоху развития нейросетей, машинного обучения и других инновационных технологий. С развитием больших языковых моделей (LLM — Large Language Models), генеративного искусственного интеллекта (Generative AI) и разговорных агентов (CA — Conversational Agents) среди учёных и педагогов началась более широкая дискуссия. Некоторые из них настаивают на необходимости «крупного переворота» в этой области, так как идея написания компьютерных программ и, следовательно, обучения людей для этой цели «движется к исчезновению».
Разговорный ИИ (CAI — Conversational AI) включает в себя чат-ботов, виртуальных помощников и инструменты интернета, которые понимают/распознают человеческую речь или отвечают на письменные запросы, предоставляют рекомендации, любо помогают с задачами не только пользователям, но и разработчикам.
Важно отметить, что эта область все ещё развивается, и точная роль ИИ в будущей разработке программного обеспечения остаётся темой продолжающихся дискуссий и исследований.
Разговорные агенты, или чат-боты, традиционно используют обработку естественного языка (NLP) для ответа на запросы пользователей в диалоге, сопоставляя их с наилучшими возможными ответами, запрограммированными в системе. Следуя за достижениями в области ИИ, чат-боты все чаще используют языковые модели и глубокое обучение, пытаясь предсказать вероятность последовательности слов в типичном человеческом взаимодействии. Запуск ChatGPT от OpenAI в 2022 году продемонстрировал значительное расширение возможностей чат-ботов на основе генеративного искусственного интеллекта. Одной из самых ярких особенностей платформы и её использования является скорость принятия людьми этой новой технологии за короткий период времени, а также появление новых способов применения. С тех пор развитие LLM значительно ускорилось, особенно с выпуском коммерческих продуктов от крупных технологических компаний. Появилось много других специализированных моделей, разработанных для конкретных задач, демонстрирующих разнообразие архитектур и функций в различных областях и сферах деятельности.
Использование разговорных моделей в высшем образовании в основном фокусируется на общем образовании, а не на конкретных приложениях в области разработки ПО. Хотя потихоньку раскрывается его потенциал для персонализированного обучения и сложной преподавательской деятельности. Но существуют ещё такие важные проблемы, как плагиат и необходимость гарантий для защиты академической честности. Ведь ChatGPT предлагает обширные преимущества, улучшенное взаимодействие и персонализированный опыт обучения, он также требует тщательного рассмотрения этических стандартов, вопросов конфиденциальности и потенциальных предубеждений в машинном обучении. Ещё не до конца изучена (а потому условно сомнительна) роль и влияние потенциала больших языковых моделей на революцию виртуальных помощников для преподавателей и интеллектуальных систем обучения. К тому же, есть необходимость для самих педагогов понимать последствия этой технологии и соответствующим образом адаптировать свою практику преподавания.
Напротив, растёт число исследований, оценивающих возможности и ограничения LLM для различных задач на протяжении жизненного цикла разработки ПО в программной инженерии, так как, при таком использовании, генерируется очень много ошибок и уязвимостей системы. Технология разговорного ИИ все ещё находится в зачаточном состоянии, но её широкое применение в программной инженерии очевидно. В то время как многие исследования сосредоточены на генерации и исправлении кода, где LLM превзошли начинающих разработчиков и ускорили выполнение рутинных задач для экспертов, исследования теперь распространяются на менее изученные области, такие как обучение команды, рекомендации экспертов, документирование и обслуживание. Преимущества применения LLM различаются в разных областях SDLC, но преобладающая тенденция заключается в интеграции ИИ на разных уровнях при сохранении человеческого контроля для устранения ограничений.
Инженерия требований охватывает выявление, анализ, спецификацию и проверку требований к программному обеспечению, а также управление этими требованиями в течение жизненного цикла программного продукта. Диалоговые агенты могут эффективно помогать в выявлении требований, охватывая разнообразные потребности заинтересованных сторон — LLM демонстрируют потенциал для автоматического извлечения моделей предметной области из документов с требованиями на естественном языке.
Проектирование программного обеспечения относится к созданию подробных спецификаций и чертежей для программной системы, определяющих её архитектуру, компоненты, интерфейсы и поток данных, которые служат руководством для этапов разработки и внедрения. ИИ демонстрирует значительный потенциал в создании проектов программного обеспечения на основе требований. Интерактивные диалоги с LLM помогают разрабатывать цели и ограничения проектирования, предлагая артефакты проектирования, начиная от моделей UML (Unified Modeling Language) и заканчивая макетами пользовательского интерфейса, что повышает как производительность, так и качество проектирования. Однако обеспечение согласованности и полноты этих машинно-сгенерированных проектов остаётся проблемой, особенно при интеграции проектной информации в различные нотации и уровни абстракции. Помощники по проектированию на основе ИИ предлагают многообещающие достижения, но и они также требуют от дизайнеров глубокого понимания своих возможностей и ограничений. Человеческий вклад остаётся решающим для оценки и улучшения созданных проектов. Новая тенденция — важность оперативных методов проектирования, которые становятся необходимыми для направления ИИ к более релевантным и согласованным результатам, улучшая интеграцию и удобство использования инструментов ИИ в процессах проектирования.
Разработка программного обеспечения испытала наиболее быстрое внедрение помощников по кодированию. Такие модели, как Codex и Copilot, могут генерировать код из описаний на естественном языке, автоматически дополнять частичные программы и даже объяснять и переводить код. Помощники на основе ИИ помогают разработчикам справляться с рутинными задачами по кодированию и предлагают соответствующие предложения по запросу. Эти инструменты могут значительно повысить производительность разработчиков, особенно для менее опытных программистов. Однако сгенерированный код по-прежнему не дотягивает до экспертного кода, написанного человеком, с точки зрения лучших практик кодирования, надёжности и удобства обслуживания.
Профессионалы IT-отрасли выявили и выделили несколько проблем в интеграции генеративного ИИ для разработки программного обеспечения. К ним относятся необходимость настройки моделей ИИ, в соответствии со знаниями отдельных разработчиков и контекстами проекта для получения более релевантных предложений, важность приобретения самими разработчиками навыков оперативной проверки кода, а также постоянная проблема интеграции помощников ИИ в существующие рабочие процессы и среды разработки. Иногда на такие вмешательства даже реагируют файервол крупных надёжных дата-центров, обрубая канал доступа для вмешательства ИИ. Эти проблемы подчёркивают сложное взаимодействие между возможностями ИИ и человеческим опытом в меняющемся ландшафте современного программирования.
Обеспечение качества ПО относится к систематическим процессам и действиям, направленным на обеспечение соответствия кода указанным требованиям и стандартам качества. Это включает в себя реализацию различных практик, таких, как анализ кода, тестирование и аудиты, для выявления дефектов и обеспечения надёжности, эффективности, безопасности. В этой парадигме ИИ применяется для создания тестовых случаев сбоев/атак, воспроизведения отчетов об ошибках, локализации неисправностей и предложения исправлений кода. Большие языковые модели могут использовать спецификации требований и контекст кода для создания соответствующих тестовых сценариев. Анализируя отчёты об ошибках и сравнивая версии кода, они часто могут определить основную причину ошибок и даже предложить исправления. Статические анализаторы кода на основе ИИ также совершенствуют свою способность определять проблемы стиля и выявлять потенциальные ошибки и недостатки безопасности — но пока успехи в этом направлении не так очевидны.
Несмотря на многообещающие результаты, надёжность и эффективность машинно-сгенерированных тестов, а также стратегий отладки требуют дальнейшего значительного улучшения. Создание тестов, которые выявляют пограничные случаи и сложные сценарии, является открытой задачей, и разработчикам понадобятся методы для проверки и уточнения сгенерированных тестов и исправлений.