Здравствуйте, Gaperton, Вы писали:
G>Здравствуйте, t_o_l, Вы писали:
__>>Как говорилось в пункте 3, надежность ПО нужно доказать, иначе веры в вероятность декларируемой отказоустойчивости — нет. Для доказательства нужно использовать какой-то подход. В гражданской авиации — нужно доказать что ПО соответствует всем требованиям стандарта DO-178B/C в зависимости от выбранного уровня критичности этого ПО. Уровень критичности определяется в зависимости от того какой вред может причинить ПО человеку, в диапазоне от смертельного и кончая никаким. А что используют "телефонисты" для такого доказательства?
G>Ничего. ПО телефонных свитчей не может причинить вреда человеку. Что не мешает ему быть достаточно надежным by design и по практике эксплуатации — пять девяток аптайма все приличные продукты на практике обеспечивают. Некоторые, как например, AXD301, фактически обеспечивают девять девяток.
G>При этом, практическая надежность "телефонного" многократно перекрывает все разумные требования к надежности обычного ПО, не говоря уже о современных веб-сервисах, где в процессе разработки вполне сознательно жертвуют надежностью в пользу скорости внесения изменений.
G>У слова "надежность" очень много граней, это не бинарный признак. Есть разные подходы к обеспечению надежности, и все они стоят денег.
G>Например, при разработке системы автоматической посадки Бурана отдельная команда занималась восстановлением исходников на Фортране из машинного кода, и сравнением исходников с оригиналом. В результате было найдено две ошибки в компиляторе, из-за которых Буран непременно упал бы. Я лично знаком с руководителем этой команды.
G>Дает ли этот опыт нам что-то полезное? Нет. Надо быть сумасшедшим, чтобы использовать эту практику в коммерческой разработке.
Спасибо за ответ. Очень интересная информация про Буран. Я хоть сам когда-то имел отношение к космосу, но про это не знал. Что касается, того, что такой опыт не является полезным для коммерческих разработок, то тут я с вами не согласен. Сертификация ПО на уровень "А" и "В" стандарта DO-178B/C, как раз и идет каким-то похожим путем. И даже если компилятора сам сертифицирован на уровень "А" в нем могут быть ошибки, поэтому могут потребоваться какие-то сложные пути обеспечения надежности. Так что если вы разрабатываете, например, автопилот для самолета, который и по железу и по программному обеспечению должен иметь уровень критичности "А" или "В", такой опыт может очень сильно пригодиться.