Top.Mail.Ru
О применении языков программирования, софта и пр.
В целях обеспечения принципов открытости и прозрачности деятельности, а также в соответствии с требованиями законодательства в сфере информационных технологий организации (п. 4 Приказа Минцифры России от 02.06.2025 № 511), осуществляющие деятельность в сфере информационных технологий, описана информация о применяемом технологическом стеке. Данное положение распространяется на используемые языки программирования, инструментальные средства, составляющие основу процессов разработки и управления.

Построение процесса разработки
Процесс разработки выстроен как целостная система взаимосвязанных этапов и практик, направленная на создание высококачественного, надежного и безопасного программного обеспечения.
1.  Методология управления проектами
·  Гибкая методология (Agile): Разработка ведется итеративными циклами (спринтами) продолжительностью от 1 до 4 недель. Это позволяет оперативно реагировать на изменения требований и регулярно поставлять ценность продукта.
2.  Контроль версий и качество кода
·  Система контроля версий (Git): для управления исходным кодом используется стратегия ветвления, при которой новая функциональность разрабатывается в отдельных ветках.
· Статический анализ кода: Все изменения кода в обязательном порядке проходят проверку линтерами для обеспечения соответствия стандартам кодстайла.
· Code Review: Каждое изменение кода попадает в продукт только после прохождения процедуры проверки (Pull Request) и получения согласование (апрувы) от разработчиков.
· Управление задачами: Внесение любых изменений в код строго привязано к задачам в системе Jira. Неразрешенные задачи не принимаются к реализации.
3. Архитектура и функциональность
Комитет по архитектуре: ключевые решения по архитектуре и функциональности продукта принимаются согласованно архитекторами по информационной безопасности и архитекторами продукта.
4. Непрерывная интеграция и доставка (CI/CD)
· Автоматизация сборки и развертывания: Внедрена практика непрерывной интеграции и непрерывного развертывания (CI/CD). Это обеспечивает автоматизированную сборку, тестирование и развертывание кода, что позволяет быстро выявлять и исправлять ошибки.
5. Тестирование и безопасность
· Многоуровневое тестирование: для обеспечения качества продукта применяется комплексный подход, включающий:
· Модульное тестирование (Unit-тесты).
· Ручное тестирование.
· Автоматизированное тестирование с использованием специализированных сканеров.
· Анализ защищенности: Код проходит статический (SAST) и динамический (DAST) анализ безопасности для выявления и устранения уязвимостей на ранних стадиях.
· Мониторинг уязвимостей: Используемые библиотеки и пакеты проходят регулярную проверку на наличие известных уязвимостей по актуальным базам данных. Это позволяет устранять риски до выпуска релиза.

Применение языков программирования в ПО
ПО представляет собой комплекс программных компонентов, собираемых в ОС Linux, написанных с использованием языков программирования:
· язык программирования C (clang 19.1.5 и gcc 14.2.1) (файлы с расширениями .c, .h и др.);
· язык программирования JavaScript (Typescript) 5.7.2 (файлы с расширением .js и др.);
· язык программирования Python 3.13 (файлы с расширением .py);
· языки программирования Go 1.23.4.

Инструменты используемые при разработке
Средства сборки продуктов (Сборочные скрипты Ideco; DroneCI; clang; gcc; Пакетный менеджер DNF); средства разработки (Node.js; Python; C; Typescript; Go; Vim; Visual Studio Code); Средства разработки документации (Latex; MikTex; Visual Studio Code; TexMaker); Средства тестирования (Flake8; Mypy; Pylint; AFLplusplus; Svace; Облако Yandex Cloud).