~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 6410C91B67FBA134D7CE9A397CDD9601__1710107520 ✰
Заголовок документа оригинал.:
✰ MISRA C - Wikipedia ✰
Заголовок документа перевод.:
✰ МИСРА C — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/MISRA_C ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/64/01/6410c91b67fba134d7ce9a397cdd9601.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/64/01/6410c91b67fba134d7ce9a397cdd9601__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 02:22:43 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 11 March 2024, at 00:52 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

МИСРА C — Википедия Jump to content

МИСРА С

Из Википедии, бесплатной энциклопедии

MISRA C — это набор руководств по разработке программного обеспечения для C языка программирования , разработанный Консорциумом MISRA . Его целью является обеспечение безопасности , защиты , переносимости и надежности кода в контексте встроенных систем , особенно систем, запрограммированных в ISO C /C90/ C99 . [1]

Существует также набор рекомендаций по MISRA C++, не рассмотренный в этой статье.

История [ править ]

  • Драфт: 1997 г. [2]
  • Первое издание: 1998 г. (правила, обязательные/рекомендательные).
  • Второе издание: 2004 г. (правила, обязательные/рекомендательные)
  • Третье издание: 2012 г. (директивы; правила, разрешимое/неразрешимое)
  • Соответствие MISRA: 2016 г., обновлено в 2020 г.
  • MISRA C:2023 (MISRA C Третье издание, Вторая редакция)

В первых двух изданиях MISRA-C (1998 и 2004 гг.) все Рекомендации считались Правилами. С публикацией MISRA C:2012 была введена новая категория Руководящих принципов – Директива , соблюдение которой более открыто для интерпретации или относится к процессуальным или процедурным вопросам.

Принятие [ править ]

Хотя изначально MISRA C был специально ориентирован на автомобильную промышленность, он превратился в широко принятую модель передового опыта ведущих разработчиков в таких секторах, как автомобилестроение, аэрокосмическая промышленность, телекоммуникации, медицинское оборудование, оборона, железная дорога и другие. Например:

  • Joint Strike Fighter Стандарты кодирования C++ проекта [3] основаны на MISRA-C:1998.
  • Лаборатории НАСА реактивного движения Стандарты кодирования C [4] основаны на MISRA-C:2004.
  • В стандарте IEC 81001-5-1:2021 «Программное обеспечение для здравоохранения и ИТ-системы здравоохранения, безопасность, эффективность и защищенность. Часть 5-1: Безопасность. Действия в жизненном цикле продукта» MISRA C приводится в качестве примера передового опыта безопасного кодирования.
  • В стандарте ISO 26262 «Функциональная безопасность — дорожные транспортные средства» MISRA C упоминается как соответствующий подмножество языка C:
    • ISO 26262-6:2011 Часть 6. Разработка продукции на уровне программного обеспечения. [5] цитирует MISRA-C:2004 и MISRA AC AGC.
    • ISO 26262-6:2018 Часть 6. Разработка продукции на уровне программного обеспечения. [6] цитирует MISRA C:2012.
  • ( В общей спецификации программного обеспечения AUTOSAR SRS_BSW_00007) также упоминается MISRA C:
    • Общая спецификация программного обеспечения AUTOSAR 4.2 [7] требует, чтобы: Если реализация модуля BSW написана на языке C, она должна соответствовать стандарту MISRA C:2004.
    • Общая спецификация программного обеспечения AUTOSAR 4.3 [8] требует, чтобы: Если реализация модуля BSW написана на языке C, она должна соответствовать стандарту MISRA C:2012.

Классификация и категоризация руководящих принципов [ править ]

При запуске нового программного проекта следует использовать новейший стандарт MISRA. Предыдущие стандарты по-прежнему доступны для использования с устаревшими программными проектами, которые должны ссылаться на них. [9]

Классификация [ править ]

Каждое Руководство классифицируется [10] как обязательный (новое для MISRA C:2012), обязательное или рекомендательное . Более того, документ о соответствии MISRA разрешает консультативные рекомендации отменять .

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

Категоризация [ править ]

Правила можно логически разделить на несколько категорий:

  • Избегание возможных различий в компиляторе, например, размера кода C. int тип может отличаться, но int16_t (стандартизовано в C99) всегда составляет 16 бит.
  • Избегайте использования функций и конструкций, которые склонны к сбоям, например: malloc может потерпеть неудачу.
  • Создавайте удобный для сопровождения и отладки код, например, используя соглашения об именах и комментируя.
  • Правила лучшей практики.
  • Пределы сложности.

Область применения [ править ]

MISRA C:2012 отдельно классифицирует каждое руководство как единую единицу перевода или систему . [10]

Разрешимость [ править ]

MISRA C:2012 классифицирует правила (но не директивы ) как разрешимые и неразрешимые .

Достижение соответствия [ править ]

Соответствие MISRA [ править ]

MISRA опубликовала документы, содержащие дополнительные рекомендации для понимания и достижения соответствия MISRA.

  • MISRA Compliance:2016 был выпущен MISRA в апреле 2016 года. [11]
  • MISRA Compliance:2020 , исправленная редакция была выпущена в феврале 2020 года. [12]

Соответствие [ править ]

Чтобы часть программного обеспечения претендовала на соответствие рекомендациям MISRA C, все обязательные должны быть соблюдены правила, а все требуемые правила и директивы должны либо соблюдаться, либо допускать формальные отклонения. Консультативные правила могут быть отменены без формального отклонения, но это все равно должно быть зафиксировано в проектной документации.

Примечание. В целях обеспечения соответствия не существует различия между правилами и директивами .

Отклонения [ править ]

MISRA C Многие правила можно охарактеризовать как рекомендации, поскольку при определенных условиях инженеры-программисты могут отклоняться от правил и по-прежнему считаться соответствующими стандарту. Отклонения должны быть задокументированы либо в коде, либо в файле. Кроме того; Должны быть предоставлены доказательства того, что инженер-программист учел безопасность системы и что отклонение от правила не будет иметь негативных последствий. Требования к отклонениям также включают:

  • Правило отклонилось от .
  • Обоснование отклонения. [13]

Опубликованные документы [ править ]

МИСРА C:1998 [ править ]

Первое издание MISRA C, «Руководство по использованию языка C в программном обеспечении для транспортных средств», опубликованное в 1998 году и официально известное как MISRA-C:1998 . [14]

MISRA-C:1998 содержит 127 правил, из них 93 обязательных и 34 рекомендательных; правила пронумерованы последовательно от 1 до 127.

МИСРА C:2004 [ править ]

В 2004 году было выпущено второе издание «Руководства по использованию языка C в критических системах », или MISRA-C:2004 , со многими существенными изменениями в руководствах, включая полное изменение нумерации правил.

MISRA-C:2004 содержит 142 правила, из которых 122 являются «обязательными» и 20 — «рекомендательными»; они разделены на 21 тематическую категорию: от «Окружающая среда» до «Ошибки во время выполнения».

МИСРА C:2012 [ править ]

Основной документ [ править ]

В 2013 году вышло третье издание MISRA C:2012. MISRA C:2012 расширяет поддержку версии языка C C99 (при сохранении рекомендаций для C90), а также включает ряд улучшений, которые могут снизить стоимость и сложность обеспечения соответствия, одновременно помогая последовательному и безопасному использованию C в критических ситуациях. системы. [15]

MISRA-C:2012 содержит 143 правила и 16 «директив» (то есть правил, соблюдение которых более открыто для интерпретации или относится к процессуальным или процедурным вопросам); каждый из которых классифицируется как обязательный , обязательный или рекомендательный . Они отдельно классифицируются как единая единица перевода или система . Кроме того, правила классифицируются как разрешимые и неразрешимые .

Поправка 1 [ править ]

В апреле 2016 года MISRA опубликовала (для бесплатного скачивания) MISRA C:2012 — Поправка 1: Дополнительные правила безопасности. [16] который добавил четырнадцать новых правил безопасности .

Поправка 2 [ править ]

В феврале 2020 года MISRA опубликовала (для бесплатной загрузки) MISRA C:2012 — Поправка 2: Обновления для ISO/IEC 9899:2011/18 Основные функции. [17] который добавляет отображение для неопределенного, неуказанного и определяемого реализацией поведения в C11/C18.

Подтверждающие документы [ править ]

MISRA опубликовала следующие дополнения для поддержки MISRA C:2012:

  • MISRA C:2012 — Приложение 1: Сопоставление правил , [18] который содержит двунаправленные сопоставления правил между MISRA C:2004 и новой версией. Он предназначен для помощи пользователям в миграции.
  • MISRA C:2012 — Приложение 2: Соответствие MISRA C:2012 стандарту ISO/IEC TS 17961:2013 «C Secure». [19]
  • MISRA C:2012 – Приложение 3. Соответствие MISRA C:2012 сертификату CERT C. [20]

МИСРА C:2023 [ править ]

В мае 2023 года MISRA опубликовало MISRA C:2023 (третье издание MISRA C, вторая редакция), которое включает поправки 2–4 (AMD2, AMD3, AMD4) и техническое исправление 2 (TC2), а также включает поддержку языковых функций C11 и C18. [21]

Пример пакета [ править ]

Пример пакета (для MISRA-C:2004 и MISRA C:2012) доступен на MISRA GitLab. [22] репозиторий (требуется вход). Это позволяет пользователям инструментов оценивать и сравнивать поддержку проверки, предоставляемую различными инструментами MISRA; кроме того, он дает разработчикам инструментов некоторые указания относительно целей Руководства MISRA.

Инструменты [ править ]

Хотя существует множество программных инструментов, которые утверждают, что проверяют код на «соответствие MISRA», процесса сертификации MISRA не существует. [23]

Большинство рекомендаций можно проверить с помощью инструментов, выполняющих статический анализ кода . Остальные рекомендации требуют использования динамического анализа кода .

Инструменты, проверяющие код на соответствие MISRA, включают:

Компиляторы C/C++, поддерживающие соответствие MISRA, включают:

Критика [ править ]

Некоторые результаты исследований ставят под сомнение эффективность MISRA C 2004.

В статье, в которой сравниваются более ранние работы над MISRA C:1998 и MISRA C:2004, Лес Хаттон приходит к выводу, что: [30]

Ввиду очевидного расширения влияния стандарта MISRA C, в данной статье делается попытка оценить, были ли удовлетворительно устранены важные недостатки исходного стандарта. К сожалению, этого не произошло, и важное соотношение реальных и ложноположительных результатов в MISRA C 2004 не намного лучше, чем в MISRA C 1998, и в обоих случаях оно неприемлемо низкое.

Далее он заявляет: [30]

В его нынешнем виде единственными людьми, которые получат выгоду от обновления MISRA C 2004, будут поставщики инструментов, и следует надеяться, что будут предприняты шаги как для упрощения формулировок, так и для уменьшения количества ложных срабатываний в будущих версиях путем принятия немного больше внимания к опубликованным экспериментальным данным и меньше соблазна изобретать правила на том основании, что они кажутся хорошей идеей.

Исследование, проведенное Каталом Бугердом и Леоном Муненом в Делфтском техническом университете , эмпирически оценивает ценность MISRA C:2004. Это приводит к аналогичным результатам: [31]

Из полученных данных мы можем сделать следующие ключевые наблюдения. Во-первых, 9 из 72 правил, для которых наблюдались нарушения, работают значительно лучше (α = 0,05), чем случайный предиктор при обнаружении линий, связанных с неисправностями. Истинные положительные показатели для этих правил варьируются от 24 до 100%. Во-вторых, мы наблюдали отрицательную корреляцию между нарушениями правил MISRA и наблюдаемыми ошибками. Кроме того, 29 из 72 правил имели нулевой истинно положительный уровень. В сочетании с наблюдением Адамса о том, что все модификации имеют ненулевую вероятность возникновения неисправности, это делает возможным, что соблюдение стандарта MISRA в целом сделало бы программное обеспечение менее надежным.

См. также [ править ]

Ссылки [ править ]

  1. ^ «MISRA разъясняет безопасное и надежное использование языка C» . www.misra.org.uk. Архивировано из оригинала 04 августа 2020 г. Проверено 9 октября 2019 г.
  2. ^ Весной 1997 года инженеры-программисты из Austin Rover Group (ARG) отправили на рассмотрение проект стандарта кодирования C в Programming Research Ltd (PRL). Обзор был проведен тогдашним старшим консультантом PRL Дэвидом Блитом, который предложил заменить проект значительно более строгим набором правил кодирования. Эти правила с небольшими изменениями легли в основу первого издания MISRA C.
  3. ^ «Стандарты кодирования C++ для самолетов Joint Strike Fighter» (PDF) . Проверено 16 июля 2019 г.
  4. ^ «Институциональный стандарт кодирования JPL для языка программирования C» (PDF) . Проверено 16 июля 2019 г.
  5. ^ «ISO 26262-6:2011 Транспорт дорожный. Функциональная безопасность. Часть 6. Разработка продукции на уровне программного обеспечения» . iso.org . ИСО . Проверено 16 июля 2019 г.
  6. ^ «ISO 26262-6:2018 Транспорт дорожный. Функциональная безопасность. Часть 6. Разработка продукции на уровне программного обеспечения» . iso.org . ИСО . Проверено 16 июля 2019 г.
  7. ^ «Общая спецификация программного обеспечения AUTOSAR 4.2» (PDF) . autosar.org . Проверено 16 июля 2019 г.
  8. ^ «AUTOSAR 4.3 Общая спецификация базовых программных модулей» (PDF) . autosar.org . АвтоСАР. 30 ноября 2016 г. Проверено 16 июля 2019 г.
  9. ^ Публикации MISRA
  10. ^ Перейти обратно: а б «Информационный бюллетень: MISRA C:2012 (PDF)» (PDF) . programresearch.com . Проверено 10 июня 2013 г.
  11. ^ «Соответствие MISRA: 2016 (PDF)» . МИСРА . Проверено 22 июля 2016 г.
  12. ^ «Соответствие MISRA: 2020 (PDF)» (PDF) . МИСРА . Проверено 8 апреля 2020 г.
  13. ^ «Достижение соответствия MISRA C:2012» . Парасофт . Проверено 29 мая 2017 г.
  14. ^ «Краткая история MISRA C» . МИСРА. 18 марта 2013 г. Проверено 30 июня 2014 г.
  15. ^ «Объявлена ​​дата выпуска MISRA C:2012» . МИСРА. 26 февраля 2013 года . Проверено 10 июня 2013 г.
  16. ^ «MISRA C:2012 – Поправка 1 (PDF)» . МИСРА. Апрель 2016 года . Проверено 31 октября 2019 г.
  17. ^ «MISRA C:2012 – Поправка 2 (PDF)» . МИСРА. февраль 2020 года . Проверено 6 января 2021 г.
  18. ^ «MISRA C:2012 — Приложение 1: Сопоставление правил (PDF)» .
  19. ^ «MISRA C:2012 — Приложение 2: Соответствие MISRA C:2012 стандарту ISO/IEC TS 17961:2013 «C Secure» (PDF)» .
  20. ^ «MISRA C:2012 — Приложение 3: Соответствие MISRA C:2012 и CERT C (PDF)» .
  21. ^ «МИСРА» .
  22. ^ Репозиторий MISRA GitLab.
  23. ^ «Список часто задаваемых вопросов по MISRA C». Консорциум МИСРА
  24. ^ «Helix QAC для C и C++ | Perforce» .
  25. ^ «Программное обеспечение Perforce с поддержкой Clearlake Capital приобретает программное обеспечение Rogue Wave | Perforce» .
  26. ^ «Klocwork для C, C++, C#, Java и JavaScript | Perforce» .
  27. ^ «Встроенные тестовые конфигурации C/C++» . Парасофт. 17 октября 2022 г. Проверено 9 марта 2023 г.
  28. ^ Проверка соответствия MISRA, PC-lint/FlexeLint, Gimpel Software.
  29. ^ Языки и стандарты; iar.com
  30. ^ Перейти обратно: а б Подмножество языков в промышленном контексте: сравнение MISRA C 1998 и MISRA C; Лес Хаттон; Университет Кингстона; 2004.
  31. ^ Оценка ценности стандартов кодирования: эмпирическое исследование; Си Джей Бугерд и Л. Мунен; Делфтский технологический университет; 2008.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 6410C91B67FBA134D7CE9A397CDD9601__1710107520
URL1:https://en.wikipedia.org/wiki/MISRA_C
Заголовок, (Title) документа по адресу, URL1:
MISRA C - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)