Схема описания жизненного цикла программ
Оценка продуктивности инженеров
Есть много научных публикаций и масштабных исследований, которые помогают разобраться с оценкой продуктивности. Осталось еще много нерешенных вопросов, но мы продолжим рассказывать о своих наработках в сфере оценки продуктивности инженеров.
Жизненный цикл программ
Мы планируем рассказывать о проектах R&
Пожалуй, ключевое понятие — жизненный цикл ПО или системы (SDLC,
Сопровождение
Начнем разбираться с завершающей стадии системы — сопровождения, или maintenance. На этой стадии
Типичные банковские системы — десятки и сотни взаимодействующих модулей, поэтому локализовать причину сбоя не всегда легко. Чтобы упростить задачу, разработчики предлагают разные инструменты телеметрии: сборщики логов, взаимодействие модулей и технических метрик с удобными дашбордами. Один из таких инструментов — платформа мониторинга и
Несмотря на
Тестирование и
Чтобы снизить риски сбоя, ПО проходит стадию тестирования. В нее входят автоматические
На стадии тестирования ИИ тоже может помогать: есть умные анализаторы логов падения пайплайнов, выборщики подмножества запускаемых автотестов, кодогенераторы автотестов, которые могут повысить покрытие всех возможных сценариев исполнения кода. Например, Quality Gate — система контроля качества кода, она помогает улучшать качество вносимых изменений с помощью измерения метрик на каждом этапе жизненного цикла. Это тоже разработка
Еще один способ повысить качество ПО —
Написание кода
Одно из первых применений генеративных нейросетей в области программной инженерии — автодополнение кода в интегрированной среде разработки. В
Помимо подсказок по дополнению текущей строки и генерации многострочных сниппетов кода — функций, докстрингов, методов, классов — Nestor учится генерировать автотесты. Правда, требования к работе плагина для IDE в реальном времени ограничивают качество результата и количество сценариев генерации таких тестов в сравнении с генерацией в облачном асинхронном пайплайне.
Безопасность
Неважно, кто написал код: человек, ИИ или человек с помощью ИИ. Никто не застрахован от уязвимостей безопасности, которыми может воспользоваться злоумышленник. Для их предотвращения или быстрого исправления департамент информационной безопасности реализует разные меры, и часть из них требуют продвинутой разработки с добавлением методов машинного обучения.
Если у уязвимости есть четкий паттерн, который можно описать
Мало просто предложить исправление кода, важно еще объяснить разработчику потенциальную проблему, чтобы он смог сам разобраться с оптимальным решением. В этом случае полезно, что генеративная нейросеть может работать не только с текстом или кодом по отдельности, но и в комбинации.
Есть еще немало уязвимостей, которые не
Отдельная тема в поиске уязвимостей — фаззинг или тестирование ПО путем передачи разных неожиданных данных на вход. Большие генеративные нейросети хорошо справляются с направленной генерацией наборов входных данных, повышая вероятность обнаружения проблемных комбинаций и уменьшая количество ресурсов, необходимых для обеспечения определенного уровня качества.
Разработка базовых технологий
Для решения почти всех прикладных задач программной инженерии с применением ИИ можно использовать одну универсальную базовую предобученную большую генеративную нейросетевую модель вроде закрытой GPT-4 или открытой Llama 3.
На зиму 2024 года
С помощью значительного дообучения наши коллеги из
Полезные ссылки о разработках
AI-центр - Новость на Хабре об открытии библиотеки инструментов для разработки приложений на базе ИИ
- Статья на Хабре о двух больших языковых моделях —
T-Lite иT-Pro .
Коллеги из
Новые идеи и планы на будущее
Если заглядывать в конец 2025 года и еще дальше, можно выделить несколько перспективных направлений исследований и разработки, которые лежат в области интересов и компетенций нашей команды.
Индустрия не останавливается на разработке помощников в режиме «второго пилота», а уверенно двигается в сторону создания полноценных программных агентов и даже мультиагентных систем. Их цель — более полноценно заменять определенные роли в командах или даже целые небольшие команды.
С технической точки зрения движение может означать рост значимости интеграции разных модулей через программные API c помощью генерации структурированных сообщений — например, JSON — между интеллектуальными компонентами. Еще один вариант — через графические интерфейсы, на которые «смотрят» компоненты с большими мультимодальными генеративными моделями под капотом
Растут потребности в мощностях для работы решений на базе больших генеративных моделей, поэтому
С технической точки зрения могут быть полезны алгоритмические подходы для вычислений на гетерогенной инфраструктуре. Вряд ли обойтись без низкоуровневой разработки и системного программирования, с которыми определенно помогут наши
Возможно, весь интеллектуальный функционал, который мы разрабатываем, может в ближайшем будущем стать частью Spirit — централизованной