Экстремальное программирование - практика поддержки

Практики экстремального программирования, если они реализованы в изоляции, могут быть слабыми и, следовательно, могут не сработать. В экстремальном программировании все практики должны рассматриваться как единое целое, чтобы они поддерживали друг друга. Слабость одного покрыта сильными сторонами других.

В этой главе мы сконцентрируемся на возможной слабости каждой практики, если она реализуется изолированно. Мы увидим, как Экстремальное Программирование может поддержать эту практику, чтобы преодолеть слабость при ее реализации в сочетании с другими практиками.

Поддерживающие практики

The Planning Game - Поддержка других практик XP

В этом разделе мы увидим слабые стороны игры планирования и то, как другие практики XP поддерживают ее.

Игра в планирование - недостатки

Недостатки Игры Планирования состоят в том, что вы не можете начать разработку только с грубого плана, и вы не можете постоянно обновлять план, так как это займет слишком много времени и расстроит клиентов.

Игра в планирование с другими практиками XP

Другие практики XP поддерживают игру планирования следующим образом -

  • В планировании игры заказчик также участвует в обновлении плана, основываясь на оценках, предоставленных разработчиками.

  • Вы делаете короткие выпуски, чтобы любая ошибка в плане имела влияние не более, чем на несколько недель или месяцев.

  • Ваш клиент сидит в команде, чтобы он мог быстро определить потенциальные изменения и возможности для улучшения (онлайн-клиент).

  • Непрерывное тестирование помогает разработчикам и заказчикам решить, что требуется немедленно.

Таким образом, вы можете начать разработку с простого плана и постоянно совершенствовать его по мере продвижения.

Короткие релизы - Поддержка других практик XP

Короткие Релизы - Недостатки

Вы не можете начать производство через несколько месяцев. Вы, конечно, не можете делать новые выпуски системы по циклам, начиная от ежедневного до каждой пары месяцев. Это потому, что вам нужно время, чтобы воспринять новые требования, изменения в текущем коде.

Короткие релизы с другими практиками XP.

Другие практики XP поддерживают короткие версии следующим образом:

  • Игра в планирование помогает вам работать над наиболее ценными историями, поэтому даже небольшая система будет иметь деловую ценность.

  • Непрерывная интеграция делает стоимость упаковки релиза минимальной.

  • Тестирование достаточно снижает частоту появления дефектов, поэтому длительный цикл тестирования не требуется перед выпуском.

  • Вы можете сделать простой дизайн, достаточный для этого релиза, не на все времена.

Таким образом, вы можете делать короткие релизы вскоре после начала разработки.

Метафора - поддержка из других практик XP

Вы не можете начать разработку только с метафоры. Там может быть недостаточно подробностей, и вы можете ошибаться.

Метафора с другими практиками XP

Другие практики XP поддерживают Metaphor следующим образом -

  • С парным программированием вы получите быструю конкретную обратную связь от реализованного кода и тесты о том, работает ли метафора нормально.

  • Вашему клиенту на месте удобно говорить о системе с точки зрения метафоры.

  • Непрерывный рефакторинг позволяет вам лучше понять, что означает метафора в реализации.

  • Простой дизайн поможет вам составить карту с метафорой.

Таким образом, вы можете начать разработку только с метафоры.

Простой дизайн - поддержка из других практик XP

Простой дизайн - недостатки

Вы не можете иметь достаточно дизайна для сегодняшнего кода, и ваш дизайн может не продолжать развивать систему.

Простой дизайн с другими практиками XP.

Другие практики XP поддерживают Simple Design следующим образом -

  • Рефакторинг позволяет вносить изменения.

  • С общей метафорой вы уверены, что будущие изменения дизайна будут иметь тенденцию следовать сходящемуся пути.

  • Парное программирование помогает вам быть уверенным, что вы делаете простой дизайн, который работает.

  • 40-часовая неделя поможет вам сосредоточиться на правильном дизайне.

  • Непрерывное модульное тестирование и клиентское тестирование гарантируют, что ваш простой дизайн будет на ходу.

Таким образом, вы можете сделать лучший дизайн на сегодняшний день, без спекуляций.

Тестирование - поддержка из других практик XP

Тестирование - недостатки

Вы можете думать, что -

  • Вы не можете написать все эти тесты.

  • Написание тестов может занять слишком много времени.

  • Разработчики не будут писать тесты.

Тестирование с другими практиками XP

Другие практики XP поддерживают Тестирование следующим образом -

  • Простой дизайн облегчает написание тестов.

  • Рефакторинг позволяет вам решить, какие тесты необходимы.

  • С парным программированием, даже если вы не можете думать о другом тесте, ваш партнер может. Вы можете позволить своему партнеру запускать тесты, передавая клавиатуру, и вы чувствуете себя уверенно, когда видите, что все тесты запущены.

  • Коллективное владение гарантирует, что разработчик с необходимыми навыками работает над любой сложной частью для кодирования и тестирования.

  • Непрерывная интеграция и немедленное выполнение тестов для каждого набора изменений, сделанных парой, обеспечивает -

    • Что новый код работает, если 100% тестов пройден, или

    • Что если какой-либо тест не пройден, то код этой пары не работает в системе, так что изменения могут быть немедленно отменены, и пара может начать заново с кодирования с ясностью в отношении функции, которую они реализуют.

  • Короткие выпуски гарантируют, что работающая система доступна для клиента, чтобы выполнить тесты и дать обратную связь.

  • Он-лайн заказчик успеет выполнить все тесты и сразу же дать отзыв о работающей системе.

  • Планирование игры гарантирует получение обратной связи от клиента после тестирования для планирования следующего релиза.

Таким образом, разработчики и заказчики будут писать тесты. Далее, тесты автоматизированы, чтобы обеспечить работу остальной части Extreme Programming.

Рефакторинг - Поддержка других практик XP

Рефакторинг - недостатки

Вы не можете реорганизовать дизайн системы все время. Было бы -

  • Слишком долго

  • Быть слишком трудно контролировать, и

  • Скорее всего сломать систему.

Рефакторинг с другими практиками XP

Другие практики XP поддерживают рефакторинг следующим образом:

  • С коллективной собственностью вы можете вносить изменения везде, где они необходимы.

  • Со стандартами кодирования вам не нужно переформатировать перед рефакторингом.

  • С парным программированием у вас хватит смелости заняться сложным рефакторингом.

  • Благодаря простой конструкции рефакторинг становится проще.

  • С метафорой вы можете легко общаться.

  • С тестированием вы вряд ли что-то сломаете, не зная об этом.

  • Благодаря постоянной интеграции, если вы случайно что-то сломаете или ваш рефакторинг вступит в конфликт с чужой работой, вы узнаете об этом через несколько часов.

  • Благодаря 40-часовой неделе вы отдохнете, и у вас будет больше смелости и меньше шансов совершить ошибки.

Таким образом, вы можете рефакторинг всякий раз, когда вы видите возможность -

  • Сделать систему проще

  • Уменьшить дублирование

  • Общаться более четко

Парное программирование - поддержка других практик XP

Парное программирование - слабость

Вы не можете написать весь код попарно. Это будет слишком медленно. Ситуация осложняется, если два человека не ладят.

Парное программирование с другими практиками XP.

Другие практики XP поддерживают парное программирование следующим образом:

  • Стандарты кодирования уменьшают конфликты.

  • Благодаря 40-часовой работе все свежи и сосредоточены, что еще больше снижает вероятность ненужных дискуссий.

  • Пары пишут тесты вместе, давая им возможность согласовать свое понимание, прежде чем приступить к реализации.

  • Метафора помогает парам обосновывать свои решения о наименовании и базовом дизайне

  • Простой дизайн позволяет паре иметь общее понимание.

  • Рефакторинг помогает паре обсуждать и принимать совместные решения для упрощения системы.

  • Непрерывная интеграция дает пару возможность исправить в случае каких-либо ошибок, и, следовательно, партнер не будет возражать, когда другой делает некоторые эксперименты.

  • Коллективное владение позволяет команде смешивать и сочетать и позволяет им поддерживать сердечные отношения.

Таким образом, вы можете написать весь код в парах. С другой стороны, если команда работает в одиночку, она с большей вероятностью допускает ошибки, переоценивает и игнорирует другие практики.

Коллективное владение - поддержка от других практик XP

Коллективная собственность - недостатки

Нельзя, чтобы кто-то что-либо менял в Системе. Ведь можно сломать Систему неосознанно, и стоимость интеграции резко возрастет.

Коллективное владение другими практиками XP

Другие практики XP поддерживают коллективное владение следующим образом:

  • Непрерывная интеграция снижает вероятность конфликтов.

  • Тестирование снижает вероятность случайного поломки.

  • С парным программированием вы с меньшей вероятностью нарушите код, и разработчики быстрее узнают, что они могут выгодно изменить.

  • Со стандартами кодирования у вас не будет конфликтов в коде.

  • С помощью рефакторинга вы поддерживаете систему простой, чтобы все ее понимали.

Таким образом, вы можете попросить кого-либо изменить код в любом месте системы, когда он увидит возможность улучшить его. С другой стороны, без коллективной собственности скорость развития дизайна резко замедляется.

Непрерывная интеграция - поддержка других практик XP

Непрерывная интеграция - недостатки

Вы не сможете интегрироваться после нескольких часов работы, так как интеграция занимает много времени и слишком много конфликтов и шансов случайно что-то сломать.

Непрерывная интеграция с другими практиками XP

Другие практики XP поддерживают непрерывную интеграцию следующим образом:

  • Тестирование быстро поможет вам узнать, что вы ничего не сломали.

  • При парном программировании можно интегрировать вдвое меньше потоков изменений.

  • С рефакторингом есть меньшие части, уменьшающие вероятность конфликтов.

  • Со стандартами кодирования код будет согласован.

  • Короткие релизы обеспечивают немедленную обратную связь с системой.

  • Коллективное владение гарантирует, что тот, кто изменяет код и интегрируется, будет иметь полное представление о системе.

Таким образом, вы можете интегрироваться через несколько часов. С другой стороны, если вы не интегрируетесь быстро, вероятность конфликтов возрастает, а стоимость интеграции резко возрастает.

40-часовая неделя - поддержка от других практик XP

40-часовая неделя - недостатки

Вы не можете работать 40 часов в неделю. Вы не можете создать достаточно деловой ценности за 40 часов.

40-часовая неделя с другими практиками XP

Другие практики XP поддерживают 40-часовую неделю следующим образом -

  • Игра в планирование дает вам более ценную работу.

  • Сочетание планирования игры и тестирования гарантирует, что вам придется работать только над тем, что вы думали.

  • Простой дизайн и рефакторинг позволяет вам оставаться сосредоточенным и полным вовремя.

  • Парное программирование помогает вам работать над тем, что вы можете сделать, делясь другой работой с вашим партнером.

  • Практика в целом помогает вам развиваться на максимальной скорости, и, следовательно, вы не можете двигаться быстрее.

Таким образом, вы можете получить достаточную ценность для бизнеса за 40 часов. С другой стороны, если команда не остаётся свежей и энергичной, она не сможет выполнить остальные практики.

Клиент на месте - поддержка из других практик XP

Клиент на месте - недостатки

Вы не можете иметь реального клиента в команде, не приносящего никакой пользы. Они могут принести гораздо большую ценность для бизнеса в другом месте.

Клиент на месте с другими практиками XP

Другие практики XP поддерживают клиента на месте следующим образом.

Они могут создавать ценность для проекта -

  • В Planning Game, принимая решения о приоритетах и масштабах для разработчиков.

  • С Metaphor, чтобы внести ясность для разработчиков в области.

  • При тестировании, написании приемочных испытаний и проведении приемочных испытаний после каждого короткого выпуска.

Таким образом, они могут повысить ценность организации, внеся свой вклад в проект.

Стандарты кодирования - Поддержка других практик XP

Стандарты кодирования - недостатки

Вы не можете попросить команду написать общий стандарт, поскольку разработчики обычно индивидуальны.

Стандарты кодирования с другими практиками XP

Другие практики XP поддерживают стандарты кодирования следующим образом:

  • Парное программирование позволяет им легко адаптироваться к необходимым стандартам кодирования.

  • Непрерывная интеграция заставляет их следовать стандарту, чтобы код был согласованным.

  • Коллективная собственность побуждает их соответствовать стандарту и вносить изменения, когда и где это необходимо.