Проектирование архитектуры программного обеспечения в соответствии с выбранным стилем (слоистая, MVC/MVVM, клиент-сервер, модульная), определение ключевых компонентов и их взаимодействия.
Определение внутренних и внешних интерфейсов (API, протоколы обмена, форматы данных) с учётом ограничений Astra Linux SE.
Разработка технической документации на архитектуру: UML-диаграммы (классов, компонентов, последовательности, развёртывания), описание архитектурных решений (ADR), схемы развёртывания.
Выбор технологий, библиотек и инструментов в рамках утверждённого стека (C++17, Qt5, CMake, Git).
Проведение ревью кода и архитектурных решений, контроль соблюдения принятой архитектуры и стандартов кодирования.
Требования
Опыт работы: от 6 лет
Квалификация: инеженр-программист
Образование: Высшее образование — бакалавриат
Требования: Опыт работы от 6 лет обязателен; Высшее образование (Программная инженерия, математика, системный анализ) Умение проектировать многопоточные приложения на C++17 с использованием Qt5 (QThread, сигналы/слоты, QMutex). Умение применять архитектурные и проектные паттерны (MVC, MVVM, Observer, Factory, Singleton, Dependency Injection и др.). Умение читать и анализировать чужой код на C++/Qt, выявлять архитектурные проблемы и предлагать решения. Умение настраивать и использовать системы контроля версий (Git), включая ветвление, ревью, разрешение конфликтов. Умение проводить профилирование и оптимизацию кода (valgrind, gprof, встроенные средства Qt). Умение разрабатывать и оформлять архитектурную документацию (UML, ADR, схемы). Умение обеспечивать безопасность приложения: защита от утечек памяти, переполнений буфера, гонок данных, корректная обработка исключений. Умение работать с сетевыми протоколами (TCP/IP, локальные сокеты, RS-232, RS-422, RS-485) для организации взаимодействия компонентов. Знание Astra Linux SE 1.7.3: архитектура ОС, мандатное управление доступом, дискреционный и мандатный доступ. Знание C++17: стандартная библиотека (STL), умные указатели, лямбда-выражения, move-семантика, шаблоны, многопоточность, исключения. Знание Qt5: QWidgets, QML (желательно), сигналы и слоты, модель/представление, QThread, QMutex, QReadWriteLock, QSettings, работа с ресурсами (.qrc), CMake. Знание архитектурных паттернов и стилей: слоистая архитектура, MVC, MVVM, клиент-сервер, событийно-ориентированная, микросервисы (для распределённых систем). Знание UML: диаграммы классов, компонентов, последовательности, состояний, развёртывания. Знание сетевых технологий: стек TCP/IP, сокеты, форматы обмена (JSON, XML, Protobuf).
Навыки: Навык работы с Linux, Проектирование архитектуры, Умение разбираться и работать с чужим кодом, Навык работы с Объектно-ориентированным программированием (ООП) / Object-oriented programming (OOP), Исправление, устранение ошибок, Проведение code review (ревью кода), Разработка программного обеспечения, Навыки программирования, Навык работы с STL, Рефакторинг/оптимизация программного кода, XML, STL, Docker, C++, Qt, Навык работы с Linux, Проектирование архитектуры, Умение разбираться и работать с чужим кодом, Навык работы с Объектно-ориентированным программированием (ООП) / Object-oriented programming (OOP), Исправление, устранение ошибок, Проведение code review (ревью кода), Разработка программного обеспечения, Навыки программирования, Навык работы с STL, Рефакторинг/оптимизация программного кода, XML, STL, Docker, C++, Qt
Разработка нового и переработка существующего системного ПО для промышленных контроллеров. Сопровождение разработанного ПО. Участие в code review. Отладка и про
Техническое лидерство: Декомпозиция и оценка задач, планирование разработки, управление техническим долгом. Архитектура: Проектирование, развитие и контроль арх
разрабатывать новый функционал и участвовать в проектировании архитектуры решений; поддерживать и рефакторить существующий код, повышать его читаемость и произв