Предисловие
Экстремальное программирование (Extreme Programming - ХР) на сегодня стало реальностью, от которой уже невозможно отказаться. Основная цель - ХР создание высококачественных программ, одно из главных средств - отказ от всего, что не поддерживает непосредственно эту цель. В экстремальном программировании ценится каждый человек: в нем не признается общепринятая философия менеджмента, основанная на том, что люди являются легко заменяемыми компонентами в механизме разработки программного обеспечения. ХР также опирается на следующую концепцию: профессионалы-разработчики вполне могут достичь успеха, просто внедрив ряд взаимно усиливающих принципов и действий, и впоследствии точно следуя им. Такой подход отрицает парадигму предписывающего программирования, в котором применяются процедурные "поваренные книги" для создания систем. Экстремальное программирование - это совершенно другая система, которая утверждает: если вы примете все ее принципы, если будете работать вместе с вашими заказчиками, если сконцентрируетесь на том, что действительно важно, то успешно выполните задачу разработки программного обеспечения. Это звучит так хорошо, что не может быть правдой? К сожалению, так обстоит дело для многих организаций, но если вы решите достичь успеха, то не окажетесь в их числе.
Независимо от того, что скажут вам противники ХР (которые чаще всего даже не пробовали экстремальное программирование, ничего не читали по ХР), на практике ХР работает довольно успешно. Однако для этого необходимо соответствующим образом применить его принципы и идеи. Вот здесь и кроется основная трудность. Эта книга покажет вам, как применялось экстремальное программирование во всем мире. В ней подробно описана методология ХР с точки зрения людей, которые научились применять экстремальное программирование на практике, а не просто рассматривали его теоретические аспекты.
Я познакомился с авторами данного издания на конференции ХР2001, проходившей в Сардинии (Италия) весной 2001 года. Решив больше узнать об ХР, я очень стремился попасть на эту конференцию, так как в ней принимали участие все эксперты. Моя компания уже применяла экстремальное программирование, но не было твердой уверенности, что все делается правильно. Данная конференция была великолепным шансом увидеть, как работают другие. Кроме того, можно было узнать, как выполняется моделирование в экстремальных проектах: в тот момент я работал над первой версией гибкого моделирования (Agile Modeling - AM) и надеялся получить информацию от других людей, заинтересованных в этой теме.
В этом заключалась основная причина того, что мы четверо собрались вместе - Рэнди (Гранвилл), Дейв и Миро в то время работали в компании TogetherSoft и поэтому были очень заинтересованы в моделировании. Как и я, они принимали участие в конференции, чтобы узнать больше об ХР и обменяться опытом по применению ХР в реальных проектах.
Именно обмен практическими навыками является основным преимуществом данной книги. Авторы непосредственно участвовали в этом процессе, более того, они стремятся поделиться с вами своим так нелегко приобретенным опытом. Многие аспекты экстремального программирования могут быть для вас новыми - тесты до начала самого программирования, программирование в паре, истории пользователя, участие в разработке заказчиков; применить эти принципы в вашей среде может быть сложно. Однако книга призвана помочь вам понять основные моменты, необходимые для успеха экстремального программирования, так как авторы уже столкнулись со многими проблемами, возможно, волнующими и вас.
Я считаю еще одним достоинством книги то, что она выходит за рамки теории, в ней приводятся яркие примеры ХР, включающие истории пользователя, приемочные тесты, тесты модулей и исходный код. Авторы описывают, как создаются и используются на практике эти примеры, ведь одно дело говорить о тестировании перед разработкой и совсем другое - шаг за шагом демонстрировать пример с работающей программой. Данная книга дает возможность увидеть, как осуществляется экстремальное программирование.
Когда люди впервые сталкиваются с экстремальным программированием, то их первая реакция приблизительно такова: это похоже на правду и ХР действительно должно работать в надлежащей ситуации. К сожалению, затем появляются доводы вроде "наша ситуация особенная, и ХР нам не подойдет. Вероятно, мы не смогли применить это, так как:". Должен вам сказать, что вы не особенные, что у каждой организации имеются свои собственные затруднения. Идеальной ситуации просто не существует, всегда появляются преграды, которые необходимо преодолеть, и вы должны этому научиться. Решите для себя - вы будете считать, что разработка программ в вашей организации неэффективна, или все же посмотрите в лицо проблеме и сделаете все возможное, чтобы работа была сделана? Я убежден, что экстремальное программирование предлагает путь к успеху, который многие команды уже достигли с ХР. Эта книга поможет и вам сделать то же самое.
Нужно ли вам читать эту книгу? Всем, кто активно участвует в разработке программного обеспечения - разработчикам, менеджерам и даже заказчикам - необходимо серьезно задуматься над этим. Вы можете и не применять экстремальный подход в вашем следующем проекте, но все равно останетесь в выигрыше после прочтения этой книги. Отдельные принципы ХР сами по себе достаточно эффективны, и вряд ли найдется хоть одна команда, которая бы не почувствовала преимущества от внедрения одного или двух из этих принципов.
Скотт В. Амблер (Scott W. Ambler),
президент компании Rohin International,
автор книги Agile Modeling - Effective
Practices for Extreme Programming and the Unified Process
Введение
Необходимость экстремального подхода
Часто как бизнесмены, так и разработчики сталкиваются с тем, что традиционные способы разработки программного обеспечения слишком медленны. Бизнесмены рассматривают программное обеспечение как преимущество перед конкурентами, и никогда не бывает, чтобы преимущество такого рода было реализовано чересчур быстро. Разработчики же считают, что традиционные приемы разработки программного обеспечения слишком дороги для решения задачи максимально быстрого внедрения этого преимущества.
Необходимость быстрой разработки привела к тому, что Кент Бек (Kent Beck), Уорд Каннингем (Ward Cunningham) и Рон Джеффрис (Ron Jeffries) стали анализировать исключительные методы разработки. Первый проект экстремального программирования, Chrysler Comprehensive Compensation System (система контроля платежей, под кодовым названием C3), был, с одной стороны, ограничен, а с другой - максимально приближен к граничным срокам. Этот прием был назван "стремиться к максимуму". Результатом стал прорыв в сфере разработки программного обеспечения, получивший название экстремального программирования.
Несомненно, Бек был движущей силой в применении экстремальных методов в этом и многих последующих проектах, он и ныне продолжает совершенствовать ХР. Его концепция развивается, переходя к пересмотру основных принципов проектирования программного обеспечения. Естественно, многие из этих принципов были заменены лучшими и более новыми. Новые принципы, например, работа с самим заказчиком, а не со спецификацией, быстро завоевали приверженцев в сфере программного обеспечения. Идея написания тестов до непосредственного кодирования уже сейчас становится неотъемлемой частью процесса разработки любой программы.
Эта книга ставит целью осветить суть экстремального программирования. Мы проанализировали принципы и создали, надеемся, эффективные методы их применения. Написанное в результате краткое пособие должно помочь вам изучить ХР на практике.
Для написания этой книги использовались некоторые принципы экстремального программирования. Например, многочисленные вопросы, которые считал нужным осветить в этой книге один из наших заказчиков, были записаны на карточках и разделены на итерации. Настоящее издание несколько раз постоянно пересматривалось и перерабатывалось. Надеемся, что вам как еще одному нашему клиенту понравится готовый продукт.
Идем дальше
Рассматриваемый в приложении пример, а также другую информацию об этой книге и об экстремальном программировании в общем можно найти на Web-узле компании Saorsa Development Inc. по адресу: http://www.saorsa.com.
Слова благодарности
Следует особо поблагодарить Уорда Каннингема и Кента Бека за то, что они изобрели замечательный процесс разработки программного обеспечения и продолжают делиться с нами своим богатым опытом. Благодарим за помощь Скотта Амблера и Крэга Лармана (Craig Larman), а также всех, кто внес свои идеи по XP2001 и XPUniverse в учебник "Написание историй пользователя". Также хотелось поблагодарить Дитриха Каризиуса (Dietrich Charisius), Андрея Иванова (Andrei Ivanov), Александра Китаева (Alexander Kitaev), Федора Исакова (Fyodor Isakov), Владислава Протасова (Vladislav Protasov), Ярослава Пшеничку (Jaroslav Psenicka), Бориса Блаера (Boris Blajer), Алексея Зубова (Alexei Zubov), Лукаса Нетерду (Lukas Neterda), Радека Дворака (Radek Dvorak), Александра Шаталина (Alexander Shatalin), Данилу Ермакова (Danila Ermakov), Ника Шевелева (Nick Shevelev), Олега Кушникова (Oleg Kushnikov), Владимира Петко (Vladimir Petko), Томаса Пиноса (Tomas Pinos), Яна Херта (Jan Hurt), Владимира Орлова (Vladimir Orlov), "экстремалов" компании TogetherSoft. В книге были использованы статьи Тодда Хансена (Todd Hansen), Пита Макбрина (Pete McBreen), Джона Цукса (John Szucs) и Патрика Уолла (Patrick Wall). Мы также благодарим Зину Миллер (Zina Miller) и Сьюзан Видерхольд (Susan Wiederhold) за редактирование первых вариантов данной рукописи.
В работу над книгой внесли свой вклад также Кен Диери (Ken Deery), Фред Джордж (Fred George), Билл Гринхалг (Bill Greenhalgh), Пит Макбрин (Pete McBreen), Тодд Медлин (Todd Medlin), Чак Проффер (Chuck Proffer), Томас Мюлднер (Tomasz Muldner), Кен Ритчи (Ken Ritchie), Боб Розенберг (Bob Rosenberg), Айвен Томек (Ivan Tomek) и Андре Трудел (Andre Trudel).
Наконец, мы очень признательны Питеру Коду и Лизе Джулиани (Lisa Juliani) за их решительность и поддержку, благодаря чему и появилась эта книга.