О применении языков
программирования, софта и пр.

О применении языков программирования, софта и пр.

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

Построение процесса разработки

Процесс разработки выстроен как целостная система взаимосвязанных этапов и практик, направленная на создание высококачественного, надежного и безопасного программного обеспечения.

1. Методология управления проектами

Гибкая методология (Agile): Разработка ведется итеративными циклами (спринтами) продолжительностью по 2 недели. Это позволяет оперативно реагировать на изменения требований и регулярно поставлять ценность продукта.

2. Контроль версий и качество кода

  • Система контроля версий (Git): для управления исходным кодом используется стратегия ветвления, при которой новая функциональность разрабатывается в отдельных ветках.
  • Статический анализ кода: Все изменения кода в обязательном порядке проходят проверку линтерами для обеспечения соответствия стандартам кодстайла.
  • Code Review: Каждое изменение кода попадает в продукт только после прохождения процедуры проверки (Pull Request) и получения согласования (апрувы) от разработчиков.
  • Управление задачами: Внесение любых изменений в код строго привязано к задачам в системе Yandex Tracker. Неразрешенные задачи не принимаются к реализации.

3. Архитектура и функциональность

Комитет по архитектуре: ключевые решения по архитектуре и функциональности продукта принимаются согласованно архитекторами по информационной безопасности и архитекторами продукта.

4. Непрерывная интеграция и доставка (CI/CD)

Автоматизация сборки и развертывания: Внедрена практика непрерывной интеграции и непрерывного развертывания (CI/CD). Это обеспечивает автоматизированную сборку, тестирование и развертывание кода, что позволяет быстро выявлять и исправлять ошибки.

5. Тестирование и безопасность

  • Многоуровневое тестирование: для обеспечения качества продукта применяется комплексный подход, включающий:
  • Модульное тестирование (Unit-тесты).
  • Ручное тестирование.
  • Автоматизированное тестирование с использованием специализированных сканеров.
  • Анализ защищенности: Код проходит статический (SAST) и динамический (DAST) анализ безопасности для выявления и устранения уязвимостей на ранних стадиях.
  • Мониторинг уязвимостей: Используемые библиотеки и пакеты проходят регулярную проверку на наличие известных уязвимостей по актуальным базам данных. Это позволяет устранять риски до выпуска релиза.

Применение языков программирования в ПО

ПО представляет собой комплекс программных компонентов, собираемых в ОС Linux, написанных с использованием языков программирования:

  • язык программирования C (clang 19.1.5, gcc 14.2.1) (файлы с расширениями .c, .h и др.);
  • язык программирования C++ (C++ standard 17, gcc 11.2/14+, qt 5.14);
  • язык программирования JavaScript (Typescript, React) 5.7.2 (файлы с расширением .js и др.);
  • язык программирования Python 3.11/3.13 (файлы с расширением .py);
  • язык программирования Go 1.21+ (файлы с расширением .go и др.).

Инструменты используемые при разработке

Средства сборки продуктов (сборочные скрипты SkyDNS; clang; gcc; Пакетный менеджер DNF/APT); средства разработки (Node.js; Python; C; Typescript; Go; Vim; PyCharm; Visual Studio Code); средства разработки документации (Latex; PyCharm; Visual Studio Code; TexMaker); Средства тестирования (Flake8; Mypy; Pylint; Svace; Облако Selectel и TimeWeb).