Компьютерра PDA 13.02.2010-19.02.2010 | страница 30
4. Остановитесь и подумайте. Теперь ваша задача - сформулировать предположение о том, некорректная работа в какой подсистеме (или подсистемах) могла привести к тому набору симптомов и показателей, которые вы зафиксировали. Данное предположение должно быть более-менее разумным и объяснять все наблюдаемые проявления. Данный пункт - самый важный.
5. Найдите способ проверить ложность вашего предположения. Это может быть счетчик или датчик, это может быть вариант пустить работу системы в обход подозреваемой подсистемы с редуцированием некого функционала, думайте. Главное, чтобы данный показатель мог гарантированно продемонстрировать ошибочность вашего предположения, если оно действительно ошибочно. Акцентирую - задача первичной проверки не доказать правильность предположения, а гарантированно отбросить предположение в случае его ошибочности.
6. Если критерий показал ошибочность предположения, восстанавливайте исходные настройки и возвращайтесь к пункту 3. Теперь у вас есть дополнительная информация о работе системы и это должно помочь в размышлениях.
7. Если в результате проверки предположение опровергнуто не было, ищите способ проверить верность и единственность проблемного места. Вполне возможно, что система не работает из-за комплекса некорректно работающих подсистем, причем отдельные некорректные подсистемы могут друг друга компенсировать. Если возможно - поставьте "заглушку" на подозреваемую подсистему и проверьте работу остальных элементов.
8. Последовательно увеличивая детализацию предположения, локализуйте проблему. А локализованная проблема - это практически решенная проблема. Её можно уже и исправить (если хватает компетенции), и погуглить (если не хватает), и найти способ обойти (если компетенции не хватает и у гугла).
Очень важно помнить один важный момент: работающая система и правильно работающая система - не обязательно одно и то же.
Работающая система решает текущие задачи, но как она будет себя вести при изменениях - неизвестно. Для срочного решения текущей проблемы это может быть приемлемо, но на сколько либо длительной перспективе такая система куда неприятнее, чем не работающая вовсе.
Правильно работающая система позволяет планировать изменения и вносить их с ожидаемым итоговым поведением. В ней исключена ситуация, когда исправление ошибки в одном месте системы приводит к нарушению в другом, потому как до сих пор они друг друга успешно компенсировали.