История 221 бага в Robot Operating System
Коллективная работа учёных из США, Дании, Нидерландов, Германии и Португалии в рамках проекта ROSIN посвящена качеству и безопасности кода для приложений робототехники. Она содержит подробный анализ обнаруженных и впоследствии исправленных ошибках в репозиториях пакетов ROS. В выборку попала 221 уязвимость, собранная по полной истории изменений; с помощью системы BugZoo для каждого бага был подготовлен отдельный Docker-контейнер, чтобы у других исследователей была возможность его воспроизвести. Датасет размещён в публичном репозитории на Github.
Было обнаружено, что ошибки довольно типовые и не являются специфичными для отрасли робототехники, а связаны с стандартными для программирования практиками (а точнее их отсутствием) - проверка типов, фаззинг, непрерывная интеграция, автотесты. Проблемы, связанные с робототехникой, не являются доминирующими.
Специфичными для робототехники являются скорее методы обнаружения этих багов, связанные с необходимостью участия человека и его интерпретации событий в процессе тестирования в условиях эксплуатации робота в физической среде. Такие ошибки сложно вылавливать автоматически (например, с помощью традиционных CI/CD практик разработки ПО) и к ним относятся 115 из 221 рассматриваемых случаев.
Также есть трудности с покрытием тестами - менее 10% фиксов (15 из 156) сопровождаются соответствующими тестами. По одному из профильных социологических исследований отмечается, что сообщество ROS ценит создание новых функций, тогда как задачи контроля качества воспринимаются как сложные и отнимающие много времени, они часто недооцениваются и игнорируются.
Цитата со ссылками на исследования
"Учитывая важность и сложность написания тестов для ПО робототехники, существует острая и растущая потребность в новых инструментах, методах и инфраструктуре, которые позволят разработчикам легко и эффективно тестировать свое программное обеспечение для робототехники. С этой целью исследователи предложили методы генерации тестовых входных данных для отдельных компонентов (Santos et al., 2022) и целых систем (Kim et al., 2019), методы определения и мониторинга предполагаемого поведения робота (например, Aliabadi et al., 2017; He et al., 2019; Inoue и др., 2017; Афзал и др. 2021b), а также языки, специфичные для предметной области, для описания имитируемых сред тестирования (например, Fremont et al., 2019; Majumdar et al., 2019; Klück et al., 2018; Afzal et al., 2021a)."
В качестве средств для повышения качества кода предлагается рассмотреть такие инструменты раннего обнаружения ошибок как HAROS (увы, поддерживается только ROS1).
Мысли... Робототехника двояка - с одной стороны она тесно связана с железом и реальными миром, а потому объективно и обоснованно консервативна (это вам не байты туда-сюда гонять, а килограмы); в тоже время, роботы - это software intensive кибер-физические системы, а потому всё то, что происходит так стремительно в мире программного обеспечения, находит своё отражение и в подходах к разработке робототехники. Именно поэтому она является достаточно удобным мостиком для проникновения практик разработки ПО в материальное творчество и в скором будущем мы увидим робототехнические CI/CD пайплайны из испытательных полигонов для сокращения времени выхода в свет и повышения надёжности "железных" мозгов.
#ros #bugs #research
Коллективная работа учёных из США, Дании, Нидерландов, Германии и Португалии в рамках проекта ROSIN посвящена качеству и безопасности кода для приложений робототехники. Она содержит подробный анализ обнаруженных и впоследствии исправленных ошибках в репозиториях пакетов ROS. В выборку попала 221 уязвимость, собранная по полной истории изменений; с помощью системы BugZoo для каждого бага был подготовлен отдельный Docker-контейнер, чтобы у других исследователей была возможность его воспроизвести. Датасет размещён в публичном репозитории на Github.
Было обнаружено, что ошибки довольно типовые и не являются специфичными для отрасли робототехники, а связаны с стандартными для программирования практиками (а точнее их отсутствием) - проверка типов, фаззинг, непрерывная интеграция, автотесты. Проблемы, связанные с робототехникой, не являются доминирующими.
Специфичными для робототехники являются скорее методы обнаружения этих багов, связанные с необходимостью участия человека и его интерпретации событий в процессе тестирования в условиях эксплуатации робота в физической среде. Такие ошибки сложно вылавливать автоматически (например, с помощью традиционных CI/CD практик разработки ПО) и к ним относятся 115 из 221 рассматриваемых случаев.
Также есть трудности с покрытием тестами - менее 10% фиксов (15 из 156) сопровождаются соответствующими тестами. По одному из профильных социологических исследований отмечается, что сообщество ROS ценит создание новых функций, тогда как задачи контроля качества воспринимаются как сложные и отнимающие много времени, они часто недооцениваются и игнорируются.
Цитата со ссылками на исследования
"Учитывая важность и сложность написания тестов для ПО робототехники, существует острая и растущая потребность в новых инструментах, методах и инфраструктуре, которые позволят разработчикам легко и эффективно тестировать свое программное обеспечение для робототехники. С этой целью исследователи предложили методы генерации тестовых входных данных для отдельных компонентов (Santos et al., 2022) и целых систем (Kim et al., 2019), методы определения и мониторинга предполагаемого поведения робота (например, Aliabadi et al., 2017; He et al., 2019; Inoue и др., 2017; Афзал и др. 2021b), а также языки, специфичные для предметной области, для описания имитируемых сред тестирования (например, Fremont et al., 2019; Majumdar et al., 2019; Klück et al., 2018; Afzal et al., 2021a)."
В качестве средств для повышения качества кода предлагается рассмотреть такие инструменты раннего обнаружения ошибок как HAROS (увы, поддерживается только ROS1).
Мысли... Робототехника двояка - с одной стороны она тесно связана с железом и реальными миром, а потому объективно и обоснованно консервативна (это вам не байты туда-сюда гонять, а килограмы); в тоже время, роботы - это software intensive кибер-физические системы, а потому всё то, что происходит так стремительно в мире программного обеспечения, находит своё отражение и в подходах к разработке робототехники. Именно поэтому она является достаточно удобным мостиком для проникновения практик разработки ПО в материальное творчество и в скором будущем мы увидим робототехнические CI/CD пайплайны из испытательных полигонов для сокращения времени выхода в свет и повышения надёжности "железных" мозгов.
#ros #bugs #research
👍8🤔3