Кодирование высокой надежности/доступности/безопасности - какие стандарты я читаю?

Я слышал, что в автомобильной промышленности есть что-то, называемое MISRA C.

Каковы соответствующие стандарты для других отраслей с высокой надежностью/доступностью/безопасностью, например

  • Space
  • Aircraft
  • Банки/финансовые
  • Автомобили
  • Медицина
  • Защита /Military
  • ???

-Adam

Ответ 1

Ознакомьтесь с Центром космических полетов Годдарда и его стандартами кодирования . Один из стандартов C, который я принял в моем собственном коде, заключается в том, что заголовки должны быть автономными, и они обеспечивают простой способ обеспечить это: заголовок модуля должен быть первым файлом, включенным в модуль, поэтому если файл не является автономным, он не будет компилироваться.

Ответ 2

если вы спрашиваете конкретно о кодировании, MISRA представляет некоторые рекомендации по предотвращению распространенных ошибок в C.

однако, есть гораздо больше хорошего программного обеспечения, чем кодирование. "Библией" авиационной промышленности для развития является DO-178B. В нем рассказывается, какие вопросы необходимо решать на разных этапах проектирования и как должны быть документированы ответы. Это нормальное количество документов, но если вы пытаетесь держать самолеты в воздухе, вы хотите, чтобы самой слабой точкой был человек (пилот), а не программное обеспечение.

Ответ 3

Для программирования систем с высокой степенью надежности в Ada есть: ISO/IEC TR 15942: "Информационные технологии - Языки программирования - Руководство по использованию языка программирования Ada в системах с высокой степенью целостности" :

Введение

Как общество, мы все чаще опираясь на системы высокой целостности: для систем безопасности (таких как полетный самолет), для обеспечения безопасности систем (для защиты цифровых информации) или для финансовых систем (например, банкоматы). Поскольку сложность этих систем растет, поэтому предъявлять требования к усовершенствованным методам для производства программного обеспечения компонентов системы. Эти высокие системы целостности должны быть показаны как полностью предсказуемы в работе и иметь все необходимые свойства их. Этого можно достичь только путем анализ программного обеспечения, в дополнение к использование обычных динамических тестирование. В настоящее время нет основной язык высокого уровня, где все программы на этом языке гарантировано быть предсказуемым и поддающийся анализу. Поэтому для любого выбора языка реализации необходимо контролировать способы язык используется приложением. Язык Ada [ARM] разработан с конкретными механизмами контроль использования определенных аспектов языка. Кроме того,

  • Семантика программ Ada хорошо определена, даже по ошибке ситуации. В частности, эффект программы можно предсказать из определение языка несколькими реализации или взаимодействия между языком особенности.

  • Сильная типизация внутри языка может быть использована для объем (и стоимость) анализа для проверки ключевые свойства.

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

  • Руководство может быть предоставлено для облегчения использования языка и поощрять разработку инструментов для дальнейшей проверки.

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

Ответ 4

Вы можете поучительно посмотреть на некоторые из требований Carrier Grade Linux. Хотя они (как следует из названия!) Указывают требования к Linux, они делают это для использования в сегменте высокой доступности телекоммуникационного оборудования.

Ответ 5

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

Ответ 6

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

Кроме того, Carnegie Mellon в значительной степени является окончательным, когда дело доходит до процессов разработки для надежности, достаточно легко найти их стандарты, но также довольно многословно.

Кроме того, отдельные отрасли часто имеют свои собственные стандарты, в зависимости от страны. Например, индустрия кредитных карт - PCI-DSS; Банковская индустрия в ЕС - Базель II; Медицина - HIPAA (хотя это довольно высокий уровень); все, что связано с правительством США, различные документы NIST; и т.д.