РЕЦЕНЗИИ
Кармайкл Э., Хейвуд Д. Быстрая и качественная разработка программного обеспечения. Пер. с англ. М.: Издательский дом “Вильямс”, 2003. - 400 с.
Очередной перевод на русский язык издания из серии Питера Кода с предисловием Эда Йордона можно назвать одним из лучших трудов, посвященных проектированию крупных программных систем, столь оно продумано методологически и качественно выполнено. Впрочем, темы и авторы практически всех книг этой серии придирчиво отбираются лично Питером Кодом - руководителем компании TogetherSoft, известным компьютерным писателем и признанным экспертом в сфере моделирования сложных систем. Порадовал и перевод такого сложного материала.
В первой главе авторы описывают типичные ситуации провалов информационных проектов и сразу же открывают секрет успешного управления - стратегию предотвращения ИТ-катастроф: каждое вносимое в систему изменение должно итеративно приближать ее к желаемой функциональности. Реализация этой идеи возможна, только если компания придерживается множества формализованных правил, грамотное следование которым и отличает успешный коллектив от неуспешного. Описанию этих правил в рамках оригинальной эволюционной методологии и посвящена книга.
Все схемы разработки и примеры (на Java) основаны на среде TogetherSoft, позволяющей создавать объектно-ориентированные модели на этапах анализа требований и проектирования продукта, и синхронизировать их с кодом на С++ и Java. Эту среду авторы назвали “вдохновляющей” на работу - в отличие от “заставляющих” систем, излишне ограничивающих свободу разработчика. Вторая глава отведена быстрому созданию учебного проекта (система обслуживания автомобилей по графику) с помощью данного продукта. В последующих пяти главах подробно описываются ключевые этапы проектирования: моделирование предметной области с помощью UML-диаграмм, формулировка требований с использованием прецедентов на базе диаграмм состояний и видов деятельности, управление быстро развивающимся проектом на основе требований, представленных в виде достаточно независимых свойств, и непрерывная проверка качества.
Особо хочется остановиться на седьмой главе. Тема “программирования в малом” (programming in small, корректная реализация требований в коде) вообще очень редко раскрывается в пособиях по программной инженерии. А вот в рецензируемой книге ей уделено 50 страниц с примерами применения популярной технологии шаблонов. Сам процесс превращения одного функционального требования в работающий код определен и формализован так ясно и четко, что, несмотря на постоянную 20-летнюю программистскую практику, я изучил эту главу с огромным удовольствием.
А вот тема проектирования программной архитектуры, объединяющей все ранее рассмотренные положения, рассмотрена в восьмой главе, на мой взгляд, несколько поверхностно. Впрочем, вряд ли можно формализовать макропроцесс проектирования системы - эта область относится скорее к творческой деятельности. В следующей главе объясняются конкретные архитектурные особенности платформы J2EE и способы ее связи с TogetherSoft. Десятая глава подводит итог книги и дает несколько полезных практических советов. В приложение вошли технические способы настройки TogetherSoft, описания примеров и дополнительных возможностей модульного тестирования.
Издание будет полезно каждому разработчику, заинтересованному в повышении индивидуального мастерства, и каждой компании (независимо от размера), стремящейся повысить качество и успешность проектной работы. К сожалению, подобные книги обычно издаются небольшими тиражами (3 - 5 тыс.), что отнюдь не стимулирует их широкое распространение.