Считается, что большинство ошибок может быть обнаружено посредством тщательного анализа, во многих случаях даже без выхода на машину. Одним из таких методов является индукция, в процессе которой осуществляется анализ от частного к целому. При этом, просматривая детали (симптомы ошибки, возможно, установленные одним или несколькими тестами) и взаимосвязи между ними, часто можно прийти к ошибке.
Определение данных об ошибке
|
Доказательство гипотезы
|
Процесс индукции показан на рис. 7.1 Он разбивается на следующие шаги:
1. Определение данных, имеющих отношение к ошибке. Основная ошибка, встречающаяся при плохо организованной отладке программы, заключается в том, что рассматриваются все имеющиеся в распоряжении данные или симптомы, относящиеся к задаче. Первым шагом должно быть перечисление всех действий, свидетельствующих о правильном выполнении программы и всех ее неправильных действий (т. е. симптомов, которые приводят к выводу о наличии ошибки). Дополнительные данные об ошибке получаются в результате выполнения подобных тестов, которые не вызывают появления указанных симптомов.
2. Организация данных Индукция подразумевает анализ от частного к общему, поэтому второй шаг заключается в структурировании данных, имеющих отношение к ошибке, с целью выявления неких закономерностей. Особую важность представляет исследование на противоречивость (например, «ошибка встречается только тогда, когда счет клиента имеет дебетовое — положительное — сальдо»).
3. Выдвижение гипотезы. Следующими шагами являются изучение взаимосвязи между признаками и выдвижение одной или нескольких гипотез о причине ошибки с учетом закономерностей, выявленных в структуре симптомов ошибки. Если нельзя выдвинуть гипотезы, то необходимы дополнительные данные, которые, возможно, будут получены путем построения и выполнения дополнительных тестов. В том случае, когда возможно несколько гипотез, первой выбирается наиболее вероятная из них.
4. Доказательство гипотезы. Пропуск этого шага и переход непосредственно к заключениям и попыткам решить проблему является серьезной ошибкой, обычно влияющей на результат проведения отладки. Необходимо доказать приемлемость гипотезы, прежде чем взять ее за основу. Отсутствие доказательства часто приводит к разрешению «только части проблемы. Гипотеза доказывается путем сравнения ее с первоначальными симптомами ошибки или данными. Она должна полностью объяснить существование этих симптомов. Если такое объяснение получить не удается, то, значит, гипотеза либо не обоснована, либо не полна, либо существуют многочисленные.ошибки.