Job: Embedded / Flight Software Engineer (Ada/SPARK інженер)

  • Location:

    Ukraine, Ivano-Frankivsk

Ви станете основою команди розробки бортового програмного забезпечення (Flight Software), відповідальним за створення flight-critical коду (DAL A/B за DO-178C). Ваша роль — розробка ядра безпеки системи: контурів автоматичного керування, систем обробки критичних відмов та драйверів для високонадійних апаратних вузлів. 

Ключові обов'язки та задачі: 

1. Розробка Flight-Critical коду та сенсорна фузія (Ada/SPARK): 

  • Написання детермінованого коду для контурів керування (PID-регулятори, комплементарні фільтри, фільтри Калмана) мовою Ada. 
  • Математичне моделювання та реалізація обчислень просторової орієнтації об'єкта (лінійна алгебра, кватерніони) з використанням фіксованої крапки (fixed-point) або строго типізованої плаваючої крапки. 
  • Обробка та сенсорна фузія даних з критичної бортової периферії: IMU, GPS, барометрів, магнітометрів. 
  • Розробка логіки ізоляції та обробки критичних апаратних відмов (Fail-Safe / Fail-Operational режими). 

2. Формальна верифікація та контрактне програмування (SPARK): 

  • Застосування SPARK для формального доведення коректності коду. 
  • Проектування архітектури за принципами контрактного програмування: опис перед- та післяумов (pre/postconditions), а також інваріантів типів (type invariants). 
  • Математичне доведення відсутності помилок часу виконання (Division by zero, Buffer Overflow, Array Index out of bounds) за допомогою ста can-аналізатора GNATprove. 

3. Архітектура реального часу та обмежені профілі рантайму: 

  • Робота з детермінованими профілями рантайму (зокрема Ravenscar або light-tasking). 
  • Налаштування та оптимізація планувальників завдань, глибоке розуміння того, чому обмеження динамічної пам'яті та складності тасок необхідні для передбачуваного аналізу планувальника (WCET / worst-case execution time). 

4. Низькорівнева розробка та інструментарій (Toolchain): 

  • Розробка низькорівневих драйверів для апаратних вузлів через інтерфейси SPI, I2C, UART, CAN / CAN FD з використанням засобів специфікації представлення даних в Ada (Representation clauses) для точного мапінгу регістрів.
  • Робота з екосистемою: компилятор GNAT (arm-eabi), менеджер пакетів Alire (gnat_arm_elf), система збірки gprbuild та використання/адаптація компонентів Ada Drivers Library. 

Профіль ідеального кандидата: 

  • Досвід розробки на Ada/SPARK від 2 років АБО сильний C/C++ Embedded інженер (3+ роки) з вираженим формально-математичним мисленням, чистим кодом (розумінням MISRA) та експертною готовністю повністю перейти на Ada/SPARK. 
  • Глибоке розуміння вбудованих систем: архітектура ARM Cortex-M/R, робота з регістрами, DMA, перериваннями та таймерами. 
  • Знання вищої математики (особливо матричного числення та теорії керування). ● Буде вагомим плюсом: Знайомство зі стандартами функціональної безпеки та процесами сертифікації (DO-178C, EN 50128 або ISO 26262), досвід проходження аудитів ПЗ.


Upload resume file