РЕЦЕНЗИИ
Тэллес М., Хсих Ю. Наука отладки. М.: КУДИЦ-ОБРАЗ, 2003. - 560 с.
Кто прошел через многочасовые поиски очередной ошибки в разрабатываемой системе, тот совершенно иначе относится к процессу написания исходного кода. Я провел за этим занятием многие месяцы, и потому, когда в редакцию пришла пачка книг из издательства КУДИЦ, выбрал эту, чтобы посмотреть, что пишут про отладку американские коллеги.
Книга состоит из 15 глав и двух приложений. Тематически она разделена на три части: главы со второй по пятую посвящены диагностике и систематике программных ошибок, затем (с шестой по десятую) описывается стратегия обращения с ошибками и инструментарий для борьбы с ними, и в последней части (главы с 11-й по 15-ю) рассказывается о профессии отладчика ПО. В конце каждой главы приведены задачи с описанием ситуации, вызванной ошибками в ПО. Читателю предлагается найти ошибки. В конце книги дается ключ к решению задач.
Первая глава вводная, в ней один из авторов поет песнь о важности исправления ошибок. Стоит привести мысль, высказанную Станиславом Лемом, о том, что с развитием технологий разного рода техногенные катастрофы будут обходиться человечеству все дороже и дороже. И одна из причин грядущих бед - ошибки в ПО.
Во второй главе рассказывается о тех ошибках в ПО, которые уже были широко описаны в прессе в силу их общественной значимости и серьезности последствий. Авторы исходят из тезиса, что ошибки в программах неизбежны, а потому, исследуя процесс отладки, дают практические советы, как уменьшить их количество, знакомят с методиками отслеживания и устранения ошибок. Впрочем, перечисление содержания всех глав займет немало места.
Авторы, разумеется, правы, гиперболизированно утверждая, что написано множество книг по управлению разработкой ПО, а вот "...устранение ошибок было маленьким грязным секретом, который игнорировали и держали в дальней подвальной комнате". Они предлагают превратить эту работу программиста из рутинной, каковой она является сейчас, в самостоятельную сферу деятельности, такую, как, например, разработка и постановка требований. Отмечу, что по всей книге авторы проводят мысль о том, что отладка программ - это наука, хотя, на мой взгляд, любое программистское ремесло состоит в равной мере из науки, искусства и мифологии. Что до отдельной профессии отладчика, то, честно говоря, - может быть, это звучит и ортодоксально, - я не вижу для такой профессии места в технологической цепочке разработки, но думаю, что еще есть большой резерв в улучшении инструментария разработки и отладки программ.
К сожалению, книгу переводили и редактировали явно не программисты. Режет слух и вызывает протест постоянное использование в качестве синонимов слов "отладка" и "наладка". Так, переводчик изобрел новую профессию наладчика программ, т. е. человека, ищущего в ней ошибки. Термин "наладка" чаще всего применяется к механическим устройствам и пришел в ВТ из машиностроения, а из радиотехники туда попал термин "настройка". Не говорят "налаживать" и "настраивать программу" - но: отлаживать и конфигурировать. Однако для нынешних времен это очень тонко. Программист не скажет "модуль был неисправен", как часто встречается в рецензируемой книге. Термин "программный дефект" также представляется мне не совсем удачным. Вот типичный пример недопонимания переводчиком существа дела: "во многие программы-отладчики были добавлены условные точки останова". Тогда как конечно же в них была добавлена возможность работы с условными точками останова. Таких мелочей в изобилии: "инженеры компании избрали в качестве алгоритма деления процессора SRT-алгоритм" и т. д. Понять, о чем речь, можно, но ощущение как от царапания железом по стеклу.
Из книги можно сделать множество выводов, среди которых хочу выделить следующие: 1. В современных сетевых и многопоточных средах необходимо уделять самое пристальное внимание протоколированию (журналированию) работы приложения и средствам мониторинга производительности.
2. Не следует отказываться от аппаратных средств обеспечения безопасности системы в пользу чисто программных. Например, отсутствие на многих ПК кнопки Reset и встроенного отладочного монитора, который в нормальных системах может быть запущен в случае зависания приложения, существенно уменьшает возможность определения причины зависания.
3. Сбои, появляющиеся в конечном продукте, - как правило, результат целой серии ошибок.
Книга дает массу материала для разного рода размышлений, а потому ее весьма полезно прочитать разработчикам ПО, тестировщикам и руководителям групп разработчиков.