у моего прошлого работодателя был целый отдел, который занимался формальной верификацией, ПО было сертифицировано по SIL 4, но внутри был лютый говнокод
при этом софт управлял железнодорожными поездами до скоростей 500 км/ч
так что да, красиво на бумаге
Расскажите, а что из себя представляет процесс формальной верификации на SIL4? Какие инструменты используются? Требуются сертифицированные/проприетарные тулзы, одобренные каким-нибудь TUV, или допустимо использование FOSS (пруверы, какой-нибудь FramaC)?
Я не очень представляю, как вообще возможно формально верифицировать ПО для управляющих систем. Наверняка большая часть данных поступает извне (ioctl'и из ядра, по каналам связи из модулей УСО или других компонентов системы, etc.). Как же можно доказать корректность такой программы, если на её данные могут повлиять отказы оборудования или каналов связи?