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

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

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

  • Space
  • Самолеты
  • Банки / финансовые
  • Автомобили
  • Медицина
  • Защита / Вооруженные силы
  • ???

-Adam

Ответы [ 6 ]

6 голосов
/ 27 сентября 2008

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

4 голосов
/ 27 сентября 2008

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

однако, хорошее программное обеспечение намного больше, чем кодирование. «Библия» авиационной промышленности для развития - DO-178B. Он говорит вам, какие вопросы необходимо решать на разных этапах проектирования и как ответы должны быть задокументированы. Это ОГРОМНОЕ количество бумажной работы, но если вы пытаетесь держать самолеты в воздухе, вы хотите, чтобы самым слабым местом был человек (пилот), а не программное обеспечение.

3 голосов
/ 13 июня 2009

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

Введение 1009 * *

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

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

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

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

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

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

2 голосов
/ 27 сентября 2008

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

1 голос
/ 27 сентября 2008

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

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

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

...