77725.fb2
9 января 2009, 09:00. рейтинг: 964
Сопровождал я как-то в компании АРМ на 16 машинах.
Сделано там все красиво и правильно – весь софт крутится на nix'ах, восемь машин рабочие, восемь в горячем резерве.
Есть полный набор документации и даже весь исходный программный код.
Ну и в один прекрасный момент падает рабочая часть АРМа – все машины вывали ваются в командную строку в которой что-то пишется по-английски. Электрики пани куют, технологи паникуют, а начальство зовет специалистов из отдела ИТ.
Мы возвращаем все на место.
Все работает.
А через полтора месяца – опять ломается!
Нашим начальством выдан приказ – разобраться! Читать документацию, звонить разработчикам, делать что угодно, но чтобы такого больше – не было. Разобрались, что уж. Перелопатили исходники.
Оказалось, что в одном месте там идет система case, причем с многократными вложениями. Проверяется состояние оборудования, запущенные задачи и все это в виде кода пишется в одну переменную. А переменная эта до момента кейса нигде не инициализируется.
Как выяснилось, все стандартные режимы – проверенные и перепроверенные раз работчиками – работали как положено, но прочие, да ещё и запущенные в нестандар тном режиме, в необычных условиях и в некорректное время вызывали у оборудования ступор. Ответ программе не возвращался в принципе и (а проверки ведь никакой не стояло, так как оборудование всегда, ну совсем всегда должно было возвращать хоть что-то!) программа шла дальше, прогоняла состояние оборудования через эту хитрую систему кейсов, ответа не получала и закономерно падала с ошибкой "пере менная не определена".