$name = trim(implode(DIRECTORY_SEPARATOR, $arr), DIRECTORY_SEPARATOR); return $name;
}
Мы нашли конкретное место в
коде приложения, которое яв-
ляется первопричиной обна-
руженного дефекта. Информа-
цию об имени файла, номере
строки и выдержку самого
кода с пояснениями, что в нём
неверно, можно приложить в
комментарии к отчёту о де-
фекте. Теперь программисту
намного проще устранить про-
блему.
Задание 2.7.f: представьте, что программист исправил проблему сменой
удаления краевых «/» и «\» на концевые (т.е. теперь они удаляются только
в конце имени, но не в начале). Хорошее ли это решение?
Обобщённый алгоритм поиска первопричин можно сформулировать следую-
щим образом (см. рисунок 2.7.j):
•
Определить проявление проблемы
o
Что именно происходит?
o
Почему это плохо?
•
Собрать необходимую информацию
o
Происходит ли то же самое в других ситуациях?
o
Всегда ли оно происходит одинаковым образом?
o
От чего зависит возникновение или исчезновение проблемы?
•
Выдвинуть гипотезу о причине проблемы
o
Что может являться причиной?
o
Какие действия или условия могут приводить к проявлению про-
блемы?
o
Какие другие проблемы могут быть причинами наблюдаемой про-
блемы?
•
Проверить гипотезу
o
Провести дополнительное исследование.
o
Если гипотеза не подтвердилась, проработать другие гипотезы.
•
Убедиться, что обнаружена именно первопричина, а не очередная причина в
длинной цепи событий
o
Если обнаружена первопричина — сформировать рекомендации по её
устранению.
o
Если обнаружена промежуточная причина, повторить алгоритм для
неё.
Здесь мы рассмотрели очень узкое применение поиска первопричин. Но
представленный алгоритм универсален: он работает и в разных предмет-
ных областях, и в управлении проектами, и в работе программистов (как