Учебники

Экстремальное программирование — ценности и принципы

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

Экстремальные значения программирования

Экстремальное программирование (XP) основано на пяти значениях —

  • связь

  • Простота

  • Обратная связь

  • бодрость

  • уважение

связь

Простота

Обратная связь

бодрость

уважение

связь

Коммуникация играет важную роль в успехе проекта. Проблемы с проектами часто возникают из-за отсутствия связи. Многие обстоятельства могут привести к сбою в общении. Некоторые из общих проблем —

  • Разработчик не может сказать кому-либо еще о критических изменениях в дизайне.

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

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

  • Разработчик может игнорировать что-то важное, переданное клиентом.

Разработчик не может сказать кому-либо еще о критических изменениях в дизайне.

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

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

Разработчик может игнорировать что-то важное, переданное клиентом.

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

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

Простота

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

  • Делай то, что нужно и просишь, но не более.

    • «Делай самое простое, что могло бы сработать». Принцип DTSTTCPW.

    • Реализуйте новые возможности самым простым способом. Также известный как принцип KISS «Делай это просто, глупый!».

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

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

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

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

  • Никогда не применяйте функцию, которая вам не нужна сейчас, то есть принцип «Вы не будете нуждаться в этом» (YAGNI).

Делай то, что нужно и просишь, но не более.

«Делай самое простое, что могло бы сработать». Принцип DTSTTCPW.

Реализуйте новые возможности самым простым способом. Также известный как принцип KISS «Делай это просто, глупый!».

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

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

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

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

Никогда не применяйте функцию, которая вам не нужна сейчас, то есть принцип «Вы не будете нуждаться в этом» (YAGNI).

Общение и простота поддерживают друг друга.

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

Чем проще ваша система, тем меньше вам приходится сообщать о меньшем количестве разработчиков, которые вам требуются. Это приводит к лучшему общению.

Обратная связь

Каждое итерационное обязательство воспринимается серьезно, предоставляя работающее программное обеспечение. Программное обеспечение доставляется клиенту заблаговременно, а также принимаются отзывы, чтобы при необходимости можно было внести необходимые изменения. Конкретные отзывы о текущем состоянии системы бесценны. Ценность обратной связи — это постоянно работающая система, которая предоставляет информацию о себе надежным способом.

В экстремальном программировании обратная связь обеспечивается на всех уровнях в разных временных масштабах —

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

  • Модульные тесты сообщают разработчикам о состоянии системы.

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

  • Частые выпуски позволяют заказчику выполнять приемочные тесты и предоставлять обратную связь, а разработчики — работать на основе этих отзывов.

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

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

Модульные тесты сообщают разработчикам о состоянии системы.

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

Частые выпуски позволяют заказчику выполнять приемочные тесты и предоставлять обратную связь, а разработчики — работать на основе этих отзывов.

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

Таким образом, в Extreme Programming обратная связь —

  • Работает как катализатор перемен

  • Указывает на прогресс

  • Дает разработчикам уверенность, что они на правильном пути

Работает как катализатор перемен

Указывает на прогресс

Дает разработчикам уверенность, что они на правильном пути

бодрость

Экстремальное программирование дает смелость разработчикам следующим образом —

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

  • Чтобы общаться и принимать отзывы

  • Говорить правду о прогрессе и оценках

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

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

  • Выбросить код (прототипы)

Сосредоточиться только на том, что требуется

Чтобы общаться и принимать отзывы

Говорить правду о прогрессе и оценках

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

Чтобы адаптироваться к изменениям, когда они происходят

Выбросить код (прототипы)

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

уважение

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

  • Все уважают друг друга как ценный член команды.

  • Каждый вносит свой вклад, например, в энтузиазм.

  • Разработчики уважают опыт клиентов и наоборот.

  • Руководство уважает право разработчиков принять ответственность и получить власть над своей работой.

Все уважают друг друга как ценный член команды.

Каждый вносит свой вклад, например, в энтузиазм.

Разработчики уважают опыт клиентов и наоборот.

Руководство уважает право разработчиков принять ответственность и получить власть над своей работой.

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

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

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

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

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

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

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

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

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

Принципы экстремального программирования

Ценности важны, но они расплывчаты, в том смысле, что может быть невозможно решить, является ли что-то ценным. Например, что-то простое с чьей-то точки зрения может быть сложным с чьей-либо точки зрения.

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

Основополагающими принципами экстремального программирования являются —

  • Быстрая обратная связь

  • Примите простоту

  • Постепенное изменение

  • Принимая изменения

  • Качественная работа

Быстрая обратная связь

Примите простоту

Постепенное изменение

Принимая изменения

Качественная работа

Быстрая обратная связь

Быстрая обратная связь заключается в том, чтобы получить обратную связь, понять ее и как можно быстрее вернуть обучение в систему.

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

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

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

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

Примите простоту

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

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

«Принимайте простоту» означает «хорошо справляйтесь с решением сегодняшней работы сегодня и доверяйте своей способности добавлять сложности в будущем там, где вам это нужно». В экстремальном программировании вам говорят, что вы должны хорошо выполнять свою работу (тесты, рефакторинг и общение), сосредоточившись на том, что важно сегодня.

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

  • Следуйте за ЯГНИ (Вам это не нужно).

  • Следуйте принципу СУХОЙ (не повторяйте себя). Например,

    • Не имейте несколько копий идентичного (или очень похожего) кода.

    • Не иметь избыточных копий информации.

    • Никаких потерь времени и ресурсов на то, что может и не понадобиться.

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

Следуйте за ЯГНИ (Вам это не нужно).

Следуйте принципу СУХОЙ (не повторяйте себя). Например,

Не имейте несколько копий идентичного (или очень похожего) кода.

Не иметь избыточных копий информации.

Никаких потерь времени и ресурсов на то, что может и не понадобиться.

Постепенное изменение

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

В экстремальном программировании пошаговое изменение применяется многими способами.

  • Дизайн меняется немного за один раз.

  • План меняется немного за один раз.

  • Команда меняется немного за один раз.

Дизайн меняется немного за один раз.

План меняется немного за один раз.

Команда меняется немного за один раз.

Даже принятие экстремального программирования должно быть сделано в несколько шагов.

Охватывая изменения

Лучшая стратегия — это та, которая сохраняет большинство вариантов, в то же время фактически решая вашу самую насущную проблему.

Качественная работа

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

Работает хорошо

Наслаждается работой

Чувствует себя хорошо в производстве ценного продукта