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

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

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

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

  • связь

  • Простота

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

  • бодрость

  • уважение

связь

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

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

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

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

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

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

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

Простота

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

бодрость

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

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

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

  • Честно говоря о прогрессе и оценках

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

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

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

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

уважение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Инкрементальное изменение

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

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

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

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

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

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

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

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

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

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

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

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

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