РЕЦЕНЗИИ
Мартин Р. К., Ньюкирк Дж. В., Косс Р. С. Быстрая разработка программ. Принципы, примеры, практика. М.- СПб. - Киев: Вильямс, 2004. - 752 с.
За последний год заметно выросло количество публикаций, посвященных технологиям разработки программного обеспечения (ПО). Значительная их часть так или иначе связана с экстремальным программированием. Не стала исключением и рассматриваемая книга.
Первое, что бросается в глаза, это размеры увесистого тома: все прежние издания, попадавшие мне в руки, были как минимум вдвое тоньше. Разгадка, для чего потребовалось три с лишним сотни дополнительных страниц, пришла быстро: книга снабжена не просто краткими примерчиками, зачастую попросту высосанными из пальца, а тремя громадными примерищами, не считая более мелких :). Но обо всем по порядку...
Книга состоит из семи частей. Первая посвящена концепциям быстрой разработки ПО и принципам экстремального программирования. Ничего нового по сравнению с предыдущими публикациями она не содержит, но завершает ее весьма полезная глава "Пример из практики программирования", в которой авторы воспроизводят в виде диалога реально имевший место процесс разработки программы для подсчета очков при игре в боулинг.
Во второй части изложены важнейшие принципы быстрого объектно-ориентированного проектирования ПО. Каждый принцип иллюстрируется несколькими простенькими примерами, весьма облегчающими понимание материала.
В двух следующих частях описывается разработка программы расчета заработной платы. Половина третьей части - около 60 страниц в пяти главах - посвящена рассмотрению используемых при этом шаблонов; оставшиеся две главы (70 страниц) являются собственно практическим занятием. Четвертая часть начинается описанием принципов объектно-ориентированного проектирования пакетов с последующей иллюстрацией на примере инкрементной упаковки классов, разработанных в предыдущей части.
Части 5 и 6 также представляют собой практические занятия. В одной из них рассказывается о моделировании метеостанции, в другой описывается реальный проект ETS (автоматизированная система тестирования для подсчета количества баллов, набранных на экзаменах на право ведения архитектурной деятельности в США и Канаде), над которым работал и один из авторов книги. Как и в двух предыдущих частях, здесь сначала рассматриваются шаблоны проектирования, применяемые затем в ходе практической работы.
Последняя, седьмая часть включает четыре приложения и предметный указатель. Два первых приложения иллюстрируют применение UML, в третьем - в сатирическом ключе описывается деятельность двух компаний, разрабатывающих ПО, четвертым приложением является статья Джека Ривза "Определение программного проекта".
Не секрет, что хороший пример зачастую способен компенсировать недостаточно понятный теоретический материал, и именно большое количество примеров (на языках Java и Си++) стало главным достоинством рассматриваемой книги. Правда, к ней не прилагается CD-ROM и все примеры можно получить только из Интернета, что не всегда удобно.
Другое несомненное достоинство - живой язык, не закованный в тесные "академические" рамки, но и не развязно-вульгарный, чем, к сожалению, нередко страдают другие публикации. Некоторые примеры, и особенно приложение В ("Сатира на деятельность двух компаний"), меня весьма позабавили.
Аннотация утверждает, что "...книга будет полезной руководителям групп программистов". Добавлю от себя, что не меньше пользы она принесет и рядовым программистам группы, и даже небольшим неформальным коллективам и программистам-одиночкам. В то же время читатель должен хорошо разбираться в программировании как таковом и иметь неплохое представление о том, что такое разработка ПО на заказ, а не "по собственному желанию".