Программирование - это просто
Advertisement
Главная arrow Статьи arrow Безопасное программирование и отладка arrow Конспекты из книги "Наука отладки". Часть 10.
18.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Конспекты из книги "Наука отладки". Часть 10. Печать E-mail
Автор megabax   
27.06.2011 г.
Проблема

Конспекты из книги "Наука отладки". Часть 10.

 

Это продолжение предыдущей статьи.

Проблема

Иногда ошибка может миновать этап тестирования. Ошибка может быть и не в программе, а где то рядом.

 

Фактографические данные

  • В апреле 2000 года секретный документ НАТО хакерских атак попал в одну лондонскую издательскую фирму. В целях разработки защиты от вирусных атак были разработаны вирусы, что бы смоделировать ситуацию. Но эксперимент был поставлен неправильно, в результате он вышел из под контроля. Таким образом секретные документы были разосланы. В данном случае ошибка была не в вирусе, он как раз дела то, на что был запрограммирован.  Ошибка содержалась в настройках сетевого окружения.

  • В 1993 году корпорация Intel представила новый процессор PentiumTM. Через год профессор Томас Найсели обнаружил в нем сообщил о ней в Intel. Популярная пресса заставила поверить, что эта ошибка вызвана глупостью инженера, разве трудно проверить каждое значение по справочной таблице. На самом деле реальность оказалась куда более сложней, чем кажется. Ошибка заключалась в том, что процессор вычислял ошибочное значение при некоторых операциях деления. Некорректно вычислялись последние цифры после восьмой значащей цифры. Intel пыталась сгладить важной этой ошибки.  Согласно официальному заявлению Intel, вероятность возникновения такой ошибки у среднего пользователя кране мала.

  • 28 ноября 1994 года Тим Коу из комании Vitess Semiconductor оспорил точку зрения Intel. Он продемонстрировал возможность активации ошибки один раз в 3 миллисекунды.  А так же показал, что достаточно безобидно выглядевшее деление 4.999999/14.999999 дает погрешность 0.00000407.

  • Главная причина ошибки деления была в том, что SRT-алгоритм, используемый в процессоре, использовал справочную таблицу для определения частного. Значения таблицы генерируется и загружается в массив. Но ошибка в скрипте привела к тому, что некоторые элементы таблицы оказались пропущены. И это привело к снижению точности вычислений. При чем, ошибочные значения получались только в том случае, когда в исходных данных была определенная последовательность бит, с 5-ого по 10-ое. Поэтому данная ошибка не была выявлена тестами, основанными на случайных данных.

Особенности излагаемого материала, критика

 

Ошибка в процессоре Pentium, описанная в данной статье, это ошибка, которую легко совершить но трудно найти. Данная ошибка была найдена только потому, что Нейсли заметил небольшие несоответствия. А заметил он их потому, что в его программе был заложен алгоритм проверки правильности вычислений. Если бы такого алгоритма в его программе не было, то, возможно, ошибка до сих пор была бы не обнаружена.

 

Новизна, как можно применить в жизни (выводы)

 

Из описанных в статье событий мы можем извлечь следующие уроки:

  • Тестирование должно не только следовать спецификации, но еще и учитывать используемые алгоритмы.

  • В программах нужно использовать средства для контроля над правильностью программы.

  • Все неожиданные результаты надо ставить под сомнения и проверять до тех пор, пока не найдем причину.

 

 

Источник: Мэтт Тэллес, Юань Хсих, "Наука отладки".

Продолжение следует.

 

Последнее обновление ( 18.02.2013 г. )
 
Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги