bash.im ithappens.me zadolba.li
7290

Бензобак для троллейбуса

18 сентября 2011, 10:00

Пишем СПО для сложного аппаратного комплекса, состоящего из нескольких вычислительных модулей, оптимизированных под выполнение узкоспециализированных задач. Модули общаются между собой по общей шине, протокол обмена описывает 256 управляющих слов, с каждым из которых до 12 параметров, которые зависят от режима работы комплекса (их 15). Итого — порядка 10 тысяч уникальных параметров, жёстко привязанных к железу.

СПО для каждого модуля в силу специфичности делает своя лаборатория. Когда комплекс собрали, он оказался более-менее работоспособным — за исключением одного модуля.

Причину нашли почти сразу. Как формируют параметры перед отсылкой? Программист обнуляет все биты управляющего слова и формирует набор параметров с соответствии с режимом работы. Что должен сделать программист на том конце? Правильно: определить режим работы и прочитать нужные параметры.

Их программист сделал иначе. Он считывал из шины все управляющие параметры во всех режимах, проводил над ними сложные вычисления, а потом определял режим работы и выбирал нужные. В результате 75% его процедур вычисляли формулы типа sqrt(−1)/0.

Гениальным было и предложение по устранению проблемы. «А вы не могли бы формировать неиспользуемые параметры такими, какими они были бы, если бы они использовались?» Угу, только параметры к железу привязаны. Рассчитайте-ка нам объём бензобака для троллейбуса, чтобы на нём можно было проехать 200 км по горному серпантину, а?