📊 Статистика дайджестов
Всего дайджестов: 34123 Добавлено сегодня: 101
Последнее обновление: сегодня
📄 Teaching Code Refactoring Using LLMs
2025-08-15Авторы:
Anshul Khairnar, Aarya Rajoju, Edward F. Gehringer
------------------------------------------------
## Контекст
Код с высоким качеством является ключевым фактором успешного программного проекта. Одн из наиболее важных задач в области обслуживания кода — **refactoring**. Это процесс улучшения структуры кода без изменения его внешних функциональных возможностей. Однако refactoring трудно научить студентов, особенно когда речь идет о сложных реальных кодовых базах. Обычно в курсах используются методы, такие как коды ревью и статический анализ, но они предоставляют ограниченный и непоследовательный фидбэк.
Наши дней много Large Language Models (LLMs), способных обрабатывать текст на высоком уровне. Мы предлагаем интегрировать LLM-помощь в процесс обучения refactoring. Такие модели могут предоставить более контекстуальную и реального времени помощь студентам. Мы хотим показать, что это подход может помочь студентам лучше понять refactoring и его важность для поддержания качества кода в реальной жизни.
------------------------------------------------
## Метод
Этот подход реализуется в рамках курса программирования, где студенты работают над реальным проектом с открытым исходным кодом. Мы используем LLM для анализа кода и поиска "code smells" — знаковых признаков неэффективной или неподдерживаемой архитектуры.
LLM предлагает студентам улучшенные версии кода с помощью структурированных подсказок. Мы структурируем задачи таким образом, чтобы студенты не только исправляли код, но и понимали причины таких изменений. Эта процедура помогает студентам усвоить теоретические принципы refactoring на практических примерах.
------------------------------------------------
## Результаты
Мы провели эксперимент, в котором студенты в ходе курса работали над задачами refactoring, получая помощь от LLM. Мы сравнивали их результаты с теми, когда студенты работали без таковой помощи.
Результаты показали, что студенты, получившие помощь от LLM, были более уверенными в своих действиях и смогли выполнить задачи refactoring более эффективно. Мы также выявили что LLM могут более точно определять "code smells" и предлагать более эффективные решения.
------------------------------------------------
## Значимость
Наш подход имеет много областей применения. Он может использоваться в обучении кода, создании инструментов для код ревью, а также в нейронных сетях для анализа и улучшения кода.
Преимущества LLM-подхода включают в себя реакцию в реальном времени, контекстуальную помощь и объективность в оценках. Это может дополнительно повысить качество обучения, обеспечить понимание refactoring и привлечь студентов к лучшим практикам в программировании.
------------------------------------------------
## Выводы
Наши эксперименты показали, что LLM могут быть эффективным инструментом для обучения refactoring. Они могут помочь студентам понять теоретические подходы и применить их на практике.
Будущи
Annotation:
This Innovative Practice full paper explores how Large Language Models (LLMs)
can enhance the teaching of code refactoring in software engineering courses
through real-time, context-aware feedback. Refactoring improves code quality
but is difficult to teach, especially with complex, real-world codebases.
Traditional methods like code reviews and static analysis tools offer limited,
inconsistent feedback. Our approach integrates LLM-assisted refactoring into a
course project using structured prom...
Авторы:
Vishal Khare, Vijay Saini, Deepak Sharma, Anand Kumar, Ankit Rana, Anshul Yadav
#### Контекст
Код ревью является критическим этапом в процессе разработки программного обеспечения, но часто становится причиной серьёзных задержек. Он требует много времени и усилий, а своевременность и качество обратной связи часто не удовлетворяют ожиданиями. Это приводит к энергозатратным интерпретациям, перерывам в работе и негативному воздействию на качество кода. Например, в TATA 1mg обнаружилось, что среднее время для выполнения кода принимается 73 часов, а ревью занимает ещё 82 часов, что составляет за весь цикл 6,2 дня. Такие задержки влияют на эффективность разработки и часто становятся причиной возникновения автоматического качества.
#### Метод
DeputyDev — это AI-powered developer assistant, разработанный для автоматизации и контекстуализации процесса код ревью. Он использует машинное обучение, чтобы предоставлять контекстуальные замечания и рекомендации во время ревью. Методология включала выбор набора данных с примерами кода, оценку модели на основе реальных контекстов разработки и адаптацию модели для оптимального процесса ревью. Технический подход включал построение модели с использованием предварительно обученных словарей, а также интеграцию с существующим CI/CD-пайплайном. Это обеспечивало реагирование на конкретные части кода и улучшение релевантности рекомендаций.
#### Результаты
В ходе экспериментов было проведено тщательное двойное A/B-исследование, в котором участвовало более 200 разработчиков. Результаты показали, что DeputyDev существенно сократил время проведения кода ревью. Средний контрольный цикл кода ревью уменьшился на 23,09%, а время редактирования на 40,13% на одной строке кода. Эти результаты были достигнуты благодаря кросс-валидации и уточнению модели, которая учитывала локальные характеристики кода и контекстуальные особенности.
#### Значимость
DeputyDev предоставляет значительные преимущества в улучшении рабочего процесса разработки. Помимо сокращения времени ревью, он повышает точность и качество комментариев, что приводит к улучшению качества кода и быстродействию. Это инструмент может быть использован в различных областях, таких как SaaS, DevOps и традиционное программирование. Его можно использовать для уменьшения задержек в разработке, повышения продуктивности разработчиков и гарантии высокого качества кода.
#### Выводы
DeputyDev доказал свою эффективность в уменьшении времени кода ревью и улучшении качества разработки. Это мощный инструмент для автоматизации и улучшения процесса кода ревью, что возможно поддерживать его в разных DevOps-процессах. Будущие исследования будут ориентированы на расширение возможностей системы, включая усовершенствование модели ма
Annotation:
This study investigates the implementation and efficacy of DeputyDev, an
AI-powered code review assistant developed to address inefficiencies in the
software development process. The process of code review is highly inefficient
for several reasons, such as it being a time-consuming process, inconsistent
feedback, and review quality not being at par most of the time. Using our
telemetry data, we observed that at TATA 1mg, pull request (PR) processing
exhibits significant inefficiencies, with aver...
Авторы:
Ali Arabat, Mohammed Sayagh, Jameleddine Hassine
## Контекст
Современные программные системы становятся все более сложными, что повышает важность точной идентификации и управления зависимостями между изменениями. Например, изменение, использующее функцию, должно быть зависимо от изменения, которое добавило эту функцию. Установление таких зависимостей позволяет CI/CD-пайплайнам эффективно создавать и оркестрировать изменения, избегая сбоев сборки и неполных развертываний функций. Зависимости часто пересекаются между несколькими компонентами и командами, что создает сложности для разработки и развертывания программного обеспечения. Они могут служить разным целям, например, вводя новые функции, управляя конфигурациями или даже изменяя документацию. Для решения этих проблем авторы основываются на эмпирическом исследовании проекта OpenStack, где обнаружили, что значительная часть изменений в нем зависит друг от друга.
## Метод
Чтобы упростить процесс управления зависимостями, авторы предлагают подход, основанный на машинном обучении (ML). Он состоит из двух моделей: первая оценивает вероятность зависимости между изменениями, а вторая определяет конкретные пары зависимых изменений. Модели используют данные из OpenStack, включающие сведения о временных отношениях между изменениями. Архитектура моделей основывается на предварительной обработке данных с использованием хэш-функций для создания эмбеддингов изменений. Эти модели обучаются с помощью техник машинного обучения для классификации и регрессии. Эксперименты проводятся на большом наборе данных, позволяющем оценить точность и надежность моделей в реальных условиях.
## Результаты
Эксперименты показали, что модели достигли высокой точности. Точность классификации (AUC) для первой модели составила 79.33%, а для второй — 91.89%. Также были измерены Brier-скоры, достигшие 0.11 и 0.014, что указывает на высокую точность прогнозирования. Модель второго типа продемонстрировала приемлемую точность в топ-k предсказаниях, но потребовала более подробного анализа для точности в предсказании конкретных пар. Эти результаты показали, что модели способны проводить анализ зависимостей с высокой точностью, что может улучшить процесс разработки в OpenStack.
## Значимость
Предлагаемый подход может быть применен в различных сферах, где управление зависимостями является критически важной задачей. Например, он может использоваться для повышения эффективности CI/CD-пайплайнов, уменьшения времени разработки и устранения ошибок в развертываниях. Одним из преимуществ является повышение производительности разработчиков, уменьшая необходимое время для поиска зависимостей. Благодаря этой технологии можно значитель
Annotation:
As software systems grow in complexity, accurately identifying and managing
dependencies among changes becomes increasingly critical. For instance, a
change that leverages a function must depend on the change that introduces it.
Establishing such dependencies allows CI/CD pipelines to build and orchestrate
changes effectively, preventing build failures and incomplete feature
deployments. In modern software systems, dependencies often span multiple
components across teams, creating challenges for...
📄 An Efficient and Adaptive Next Edit Suggestion Framework with Zero Human Instructions in IDEs
2025-08-09Авторы:
Xinfang Chen, Siyang Xiao, Xianying Zhu, Junhong Xie, Ming Liang, Dajun Chen, Wei Jiang, Yong Li, Peng Di
#### Контекст
Code editing, включая редактирование, рефакторинг и поддержание существующего кода, является наиболее частым заданием в процессе разработки программного обеспечения и привлекает серьезное внимание от AI-powered инструментов. Однако существующие решения, которые преобразуют явные естественно-языковые инструкции в код, имеют критические ограничения, такие как жесткая зависимость от ввода человека и высокая задержка, что мешает их эффективному внедрению в рабочий процесс разработчика. Мы заметили, что рутиные поведения и кодинговые цели разработчиков часто отражаются в их исторических редактированиях. Эта информация может стать ключом для устранения текущих ограничений.
#### Метод
Мы предложили NES (Next Edit Suggestion), LLM-driven фреймворк для редактирования кода, который предлагает инструментальный инструкционный принцип и низкую задержку. Фреймворк построен на двух моделях: текстовой модели и модели поведения. Модель текста обеспечивает точное понимание задачи редактирования, а модель поведения вносит контекст, отражающий шаблоны редактирования разработчиков. Наша модель была обучена на высококачественных данных SFT и DAPO, которые были созданы специально для этой задачи. Это позволило NES улучшить производительность, понимая цели разработчика, при этом оптимизируя работу модели для минимизации задержки.
#### Результаты
Мы провели эксперименты с реальными данными и показали, что NES показал 75.6% и 81.6% точность в двух задачах предсказания следующих мест редактирования. Также, NES достиг 91.36% ES и 27.7% EMR для редактирования с отсутствием инструкций, что значительно превосходит результаты современных моделей. Мы также открылли наши данные SFT и DAPO, что позволило улучшить работу других CodeLLMs. Наши результаты демонстрируют, что NES является мощным инструментом для повышения производительности разработчиков.
#### Значимость
Приложение NES может использоваться в различных сферах развития программного обеспечения, включая корпоративные IDEs и самостоятельное программирование. Оно обеспечивает быстрое и точное предсказание следующих редактирований, уменьшая время, потраченное на редактирование, и повышая качество кода. Благодаря своей уникальной архитектуре, NES может легко интегрироваться в рабочий процесс разработчиков, делая его инструментом, ориентированным на улучшение эффективности.
#### Выводы
Наша работа показала, что NES является эффективным решением для инструментария разработки программного обеспечения. Мы опирались на исторические редактирования для повышения точности и оптимизации работы инструмента. Наше решение может быть широко применено в индустрии, что подтв
Annotation:
Code editing, including modifying, refactoring, and maintaining existing
code, is the most frequent task in software development and has garnered
significant attention from AI-powered tools. However, existing solutions that
translate explicit natural language instructions into code edits face critical
limitations, such as heavy reliance on human instruction input and high
latency, which hinder their effective integration into a developer's workflow.
We observe that developers' habitual behaviors...
Авторы:
Arabat, Ali, Sayagh, Mohammed, Hassine, Jameleddine
**Резюме**
В статье предлагается ML-подход для прогнозирования зависимостей между изменениями в программных системах, основанный на данных OpenStack. Растущая сложность современных систем приводит к усложнению управления зависимостями между изменениями, которые являются ключевыми для эффективной работы CI/CD-пайплайнов. Авторы выявили, что 51,08% зависимостей обнаруживаются на этапе кодового ревью, после прохождения средней задержки 5,06 часов. В среднем, разработчики тратят 57,12 часов на поиск зависимостей среди среднего числа 463 изменений.
Предложенный подход включает две ML-модели: предсказывающую вероятность зависимости и идентифицирующую конкретные пары зависимых изменений. Эти модели показали высокую точность: AUC 79,33% и 91,89%, Brier-скорость 0,11 и 0,014, соответственно. Топ-k-рекурренция второй модели заслуживает отметки, но топ-k-прецизия требует доработки. Результаты подтверждают потенциал ML-анализа для улучшения управления зависимостями в разработке программного обеспечения.
Annotation:
As software systems grow in complexity, accurately identifying and managing
dependencies among changes becomes increasingly critical. For instance, a
change that leverages a function must depend on the change that introduces it.
Establishing such dependencies allows CI/CD pipelines to build and orchestrate
changes effectively, preventing build failures and incomplete feature
deployments. In modern software systems, dependencies often span multiple
components across teams, creating challenges for...
Показано 51 -
55
из 55 записей