BadCats
@BadCats

Где можно почитать/посмотреть про принципы проектирования и написания ПО для стратегически важных объектов?

Интересует, существуют ли некие принципы/стандарты и техники написания крайне устойчивого к сбоям ПО.
Например, как правильно разрабатывать и тестировать панель управления АЭС? Или же, например, искусственный спутник, с которым в дальнейшем не будет связи для корректировки кода и он должен максимально четко придерживаться инструкций, при этом имея, как можно меньший код?
Т.е , по сути, меня интересует, как можно разрабатывать отказоустойчивое ПО на примере стратегических объектов?
UPD:
Вот, решил еще добавить пример в виде видео:
(видео длинное - 12 мин)
https://www.youtube.com/watch?v=d3ENbjUTv0I&t=7s
- вот о таких ситуациях я говорю - как их избежать?
  • Вопрос задан
  • 318 просмотров
Решения вопроса 4
Vamp
@Vamp
Такие стандарты существуют. Наиболее известные - MISRA C и MISRA C++. Как можно догадаться, для языков С и С++, соответственно. Изначально созданы для автомобильной промышленности, но распространились и на аэрокосмическую отрасль, медицинскую технику, военных и прочие критичные к надёжности области. В том числе и АЭС.

Из MISRA C выросли SEI CERT C/C++, AUTOSAR General Software Specification, JPL Institutional Coding Standard for the C (стандарт NASA) и ещё куча других.

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

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

Если вы интересуетесь вопросом чтобы применять подобные техники в повседневном программировании, то не стоит - никакого удовольствия и конкурентного преимущества вы от этого не получите. Если конечно ваше повседневное программирование не включает в себя разработку панели управления АЭС.

Update 2019-12-30:
На хабре появилась интересная статья с кратким обзором MISRA.
Ответ написан
Комментировать
Griboks
@Griboks
1) Теория надёжности.
2) Создание документации, инструкции, руководства пользователя.
3) Защита от дурака.
Ответ написан
Комментировать
myjcom
@myjcom
Интересует, существуют ли некие принципы/стандарты и техники написания крайне устойчивого к сбоям ПО. Например, как правильно разрабатывать и тестировать панель управления АЭС?

ГОСТ Р МЭК 60880-2010
Атомные электростанции. Системы контроля и управления, важные для безопасности. Программное обеспечение компьютерных систем, выполняющих функции категории А

ГОСТ Р МЭК 62138-2010
Атомные электростанции. Системы контроля и управления, важные для безопасности. Программное обеспечение компьютерных систем, выполняющих функции категорий В и С
Ответ написан
Комментировать
@forspamonly2
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы