Рецензии на книгу
"Быстрая разработка программ на Java и C++: принципы, примеры, практика"
06.10.2004
Открытые системы (портал)
Г.И. Рузайкин
http://www.osp.ru/os/2004/08/076.htm
Тот, кто знаком с книгой Мартина Designing, Object-Oriented C++ Applications Using the Booch Method, должен рассматривать данную книгу как попытку ее второго, существенно переработанного издания. По своей сути программирование — деятельность писательская, и в ней непременно присутствуют разработчики, а также заказчики, желающие употребить и продать-купить текст. Всех их связывает время: скорость создания программ является важным фактором в отношениях между разработчиками и пользователями программ. Разработка идеологии программирования на скорость сопутствует большинству попыток создания собственно технологий программирования. Соответственно, появляются книги по организации процесса программирования. Одна из них — книга Роберта Мартина «Быстрая разработка программ», в написании которой приняли участие Джеймс Ньюкирк и Роберт Косс.
Как отмечается в предисловии к данной книге, «в процессе быстрой разработки программ отсутствуют какие-либо формальные приемы, а также не требуется обширная документация, но сам процесс подробной разработки весьма насыщен и предусматривает интенсивное использование современных методов программирования».
Предваряя книгу, авторы делают весьма важное замечание: «Быстрая разработка предусматривает способность к скоростному созданию программ в условиях непрерывно изменяющихся требований, в связи с чем приходится использовать методы, гарантирующие необходимую организацию работы и обратную связь с разработчиком». В целом книга посвящена принципам, примерам и практике быстрой разработки; как полагают авторы, ключевым моментом в ней является «внимательное прочтение» читателем большого объема кода на языках Java и C++, включенного в текст книги.
Тот, кто знаком с книгой Мартина Designing, Object-Oriented C++ Applications Using the Booch Method, должен рассматривать данную книгу как попытку ее второго, существенно переработанного издания. Содержание, концепция и большая часть практических занятий оставлены без изменений, но в материалы по проектированию и разработке программ внесено много нового.
Среди своих читателей авторы видят разработчиков, менеджеров и бизнес-аналитиков, изучающих UML-язык, шаблоны проектирования (design pattern), принципы объектно-ориентированного программирования и методы быстрой разработки, а также всех тех, кому интересна история идей программирования, даже если она обличена в юмористическую форму в виде Приложения В.
В качестве важнейшего принципа быстрой разработки выдвигается первостепенная роль исполнителей, а всего предлагается 12 принципов, выполнение которых гарантирует успех — начиная с достижения соответствия требованиям заказчика, непрерывной поставки ему в оптимальные сроки качественного программного обеспечения, и заканчивая периодическими выводами команды относительно эффективности собственной работы, модифицируя и адаптируя свою линию поведения. Системный взгляд на программный проект в методологии быстрой разработки выглядит как «процесс, разбитый на множество мелких шагов»; при этом совершенствование потребительских качеств проекта производится на каждом шаге.
В качестве основной методологии в книге рассматривается экстремальное программирование. Также рассматривается исключающее недостатки проектирования объектно-ориентированное программирование, среди принципов которого выделены Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Dependency Inversion Principle и Interface Segregation Principle. Практические занятия в книге построены на рассмотрении вопросов проектирования и реализации системы пакетов, выполняющей расчет зарплаты. В книге показано, как получить первую итерацию программы, используя шаблоны и объекты, а также представлено ее место в проекте в целом.
Отдельная часть книги посвящена рассмотрению принципов проектирования пакетов программ, а завершают книгу части, содержащие описание практических занятий по программированию конкретных систем, общих системных моделей (конечные автоматы, компиляторы и др.) и образовательных проектов. Особый интерес вызывает последняя часть книги, составленная из четырех приложений. В двух из них представлены запись UML в контексте примера и динамические методы моделирования UML-языка для случаев машины состояний и ряда диаграмм. Третье приложение содержит сатиру на тему книги, которая помогает усвоению идей книги. Наиболее важным является последнее приложение под названием «Исходный код — это уже проект», содержащее статью Джека Ривза «Определение программного проекта», пафос которой направлен на доказательство достаточно спорного тезиса, утверждающего, что исходный код — это и есть конечная цель деятельности программиста, участвующего в проекте.
Еще лет тридцать тому назад государственный стандарт в нашей стране требовал, чтобы в системном (или проектном) комплекте наряду с текстами программ присутствовали и другие документы (например, описание алгоритма задачи и руководства пользователя), без которых не только трудно понять сколько-нибудь сложную программу, но и невозможно сформулировать какие-либо претензии к ее разработчику.
Думаю, книга будет встречена читателями с интересом