Re[9]: А С++ то схлопывается...
От: landerhigh Пират  
Дата: 02.11.19 08:21
Оценка: +1
Здравствуйте, Masterspline, Вы писали:

BFE>>>Например, в авионике это 100% покрытие кода тестами.


L>>А вне авионики давно поняли, что 100% покрытие сценариев исполнения != 100% покрытия кода. См. 737 MAX.

M>Хотелось бы разъяснения столь глубокой мысли про 100% != 100%.

Глупый пример:

int calculateDistance(int a, int b) {
    return a - b;
}


Тупой единственный тест обеспечит 100% покрытие кода... но все ли сценарии покрыты?

M>Насколько я знаю, в случае 737 MAX код отработал как ему полагается.


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

M>Там изначально было рассчитано, что код полагается на показания одного датчика из двух и код делал именно то, что и нужно, если бы датчик давал такие показания, какие получал код.

M>Неприятность только была в том, что данные были неверными.

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

Покрытие кода могло было 100%, но это не имеет абсолютно никакого значения.
Каким бы черезжопным не было сама идея MCAS, ее можно и нужно было реализовывать так, чтобы отказ был безопасным. Даже с одним датчиком.

M>Причем в одном случае датчик совсем отвалился и на вход шел мусор (который можно было распознать программно), а в другом случае датчик заклинило и программно никак нельзя было распознать, что данные не верные (потому что датчик заклинило в вертикальном положении и он выдавал это положение).


А это уже детали.
Кстати, использование двух датчиков в лучшем случае позволяет лишь реализовать режим отказа: если датчики не могут договориться, MCAS обязан деактивироваться. Только это не панацея, вероятность одновременного похожего отказа двух датчиков вовсе не такая маленькая, поэтому реализация MCAS обязана была учитывать и такой сценарий.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.