.
Оборонительное (безопасное) программирование. Часть 2.
Автор megabax   
23.08.2009 г.
Оборонительное программирование

Оборонительное (безопасное) программирование. Часть 2.

  "Те, кто не помнят прошлого, обречены повторять его".

 Джордж Сантаяна

Что такое программные ошибки?

 

Программные ошибки так же называются дефектами, багами, и даже «свойствами программы». Ошибка – это тот случай, когда программ не делает того, что от нее ожидают или наоборот, делает то, что от нее не ожидают. Если плохо сформулированы задачи и плохо написан план, система в конце концов будет плохой. Если хотите, что бы покупатели были довольны, будьте готовы соблюдать баланс между необходимостью применять средства диагностики и наилучшего обнаружения ошибок в приложении и более агрессивным графиком.

 

Что есть ошибка, а что - нет?

 

То, что обычно называют ошибкой тестировщики и пользователи, часто является вовсе не ошибкой, а симптомом, который маскирует главную причину.

 

Разделы науки отладки:

 

·        Диагностика и систематика типов программных ошибок и их симптомов.

·        Стратегии обращения с ошибками.

·        Профессия наладчика.

 

 

Резюме:

Как только удастся определить, какова действительная причина симптомов, которые наблюдаются в программе, разрешение проблемы становится делом того, что мы хотим получить от приложения.

Допустим, происходит сбой при загрузке модулей A, B, C в порядке, описанном в инструкции. Может показаться, что сбой происходит из-за взаимодействия между этими модулями. Однако дальнейшее тестирование может показать, что выполнение A и C в любом порядке может вызывать сбой.   Это может указывать на необрабатываемое состояние ошибки между двумя процедурами, на искажение данных в памяти, или, возможно, на неинициализируемый адрес в памяти, используемый процессором. Проблемы такого часто легко обнаружить, но трудно исправить, поскольку главная причина часто не имеет ничего общего с явными симптомами.

 

 

 

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

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

 

 

Последнее обновление ( 18.02.2013 г. )