Про важность качественного тестирования.
Про важность понимания типов данных, внимательность и качественное тестирование.
В 1996 году французская ракета взорвалась в воздухе из-за проблемы преобразования типов.
Возникшая ошибка в программном модуле ИСО произошла во время конвертации 64-битного вещественного числа в 16-битное знаковое целое, и при этом случилось арифметическое переполнение последней. Эта переменная (E_BH, англ. Bias Horizontal, горизонтальное смещение) показывала горизонтальное смещение инерционной платформы и была связана с горизонтальной скоростью ракеты. В программном модуле, вызвавшем ошибку, было семь переменных, из которых четыре были защищены. Строка программного кода, при выполнении которого произошла ошибка, выглядит следующим образом:
P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS( TDB.T_ENTIER_16S( (1.0 / C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH) ) );