Программирование - это просто
Advertisement
Главная arrow Разное arrow Безопасное программирование и отладка arrow Конспекты из книги "Наука отладки". Часть 10.
16.06.2019 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
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 г. )
 
Пред. »
 
© 2019 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше