Учебники

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

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

Что такое Agile?

Слово «проворный» означает —

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

  • Умеет думать быстро и четко.

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

Умеет думать быстро и четко.

В бизнесе «гибкая» используется для описания способов планирования и выполнения работы, при которой понимается, что внесение изменений по мере необходимости является важной частью работы. Бизнес-способность означает, что компания всегда в состоянии учитывать изменения на рынке.

Ссылка: кембриджские словари онлайн.

В разработке программного обеспечения термин «гибкий» адаптирован для обозначения «способности реагировать на изменения — изменения в требованиях, технологиях и людях».

Agile Manifesto

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

Agile Manifesto утверждает, что —

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

  • Люди и взаимодействия по процессам и инструментам.

  • Рабочая программа над исчерпывающей документацией.

  • Сотрудничество с заказчиком по договору.

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

Люди и взаимодействия по процессам и инструментам.

Рабочая программа над исчерпывающей документацией.

Сотрудничество с заказчиком по договору.

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

То есть, хотя в элементах справа есть ценность, мы слева оцениваем элементы больше.

Характеристики ловкости

Ниже приведены характеристики ловкости —

  • Гибкость в Agile Software Development ориентирована на культуру всей команды с многопрофильными, многофункциональными командами, которые наделены полномочиями и самоорганизуются.

  • Это способствует совместной ответственности и подотчетности.

  • Облегчает эффективное общение и постоянное сотрудничество.

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

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

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

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

Гибкость в Agile Software Development ориентирована на культуру всей команды с многопрофильными, многофункциональными командами, которые наделены полномочиями и самоорганизуются.

Это способствует совместной ответственности и подотчетности.

Облегчает эффективное общение и постоянное сотрудничество.

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

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

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

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

Тенденции разработки программного обеспечения

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

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

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

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

    • Доставка товара с устаревшими требованиями, не отвечающими ожиданиям клиента.

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

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

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

    • Измеряйте и отслеживайте сам процесс. Это становится дорогим из-за —

    • Мониторинг и отслеживание на уровне задач и на уровне ресурсов.

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

    • Управленческое вмешательство.

  • Разрабатывайте, анализируйте и проверяйте модели перед разработкой.

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

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

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

    • Кодирование рассматривается как перевод дизайна, и эффективная реализация кода практически никогда не возвращается в дизайн.

  • Тестирование считается шлюзом для проверки дефектов перед доставкой.

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

    • Это приводит к перерасходу средств на устранение дефектов после доставки.

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

  • Ограничение ресурсов (в основном команды) для размещения бюджета приводит к —

    • Ресурс перераспределен

    • Командное выгорание.

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

    • Истощение.

Соберите требования до начала разработки. Однако, если требования будут изменены позже, обычно отмечается следующее:

Сопротивление изменениям на более поздней стадии развития.

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

Доставка товара с устаревшими требованиями, не отвечающими ожиданиям клиента.

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

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

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

Измеряйте и отслеживайте сам процесс. Это становится дорогим из-за —

Мониторинг и отслеживание на уровне задач и на уровне ресурсов.

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

Управленческое вмешательство.

Разрабатывайте, анализируйте и проверяйте модели перед разработкой.

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

Кодированию, которое является сердцем развития, не уделяется достаточного внимания. Причины, являющиеся —

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

Кодирование рассматривается как перевод дизайна, и эффективная реализация кода практически никогда не возвращается в дизайн.

Тестирование считается шлюзом для проверки дефектов перед доставкой.

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

Это приводит к перерасходу средств на устранение дефектов после доставки.

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

Ограничение ресурсов (в основном команды) для размещения бюджета приводит к —

Ресурс перераспределен

Командное выгорание.

Потеря в эффективном использовании командных компетенций.

Истощение.

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

Разработка программного обеспечения включает в себя —

  • Творческий подход

  • Обучение и совершенствование через испытания и ошибки

  • Итерации

Творческий подход

Обучение и совершенствование через испытания и ошибки

Итерации

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

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

  • связь

  • Простота

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

  • бодрость

  • уважение

связь

Простота

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

бодрость

уважение

Что такое экстремальное программирование?

XP — это легкий, эффективный, с низким уровнем риска, гибкий, предсказуемый, научный и интересный способ разработки программного обеспечения.

E x treme P rogramming (XP) была задумана и разработана для удовлетворения особых потребностей разработчиков программного обеспечения небольшими группами перед лицом неопределенных и меняющихся требований.

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

  • Каждая практика проста и самодостаточна.

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

Каждая практика проста и самодостаточна.

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

Принять изменения

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

Это может быть достигнуто с —

  • Акцент на постоянную обратную связь с клиентом

  • Короткие итерации

  • Дизайн и редизайн

  • Кодирование и тестирование часто

  • Устранение дефектов на ранней стадии, что снижает затраты

  • Вовлечение клиента в процесс разработки

  • Доставка работающего продукта клиенту

Акцент на постоянную обратную связь с клиентом

Короткие итерации

Дизайн и редизайн

Кодирование и тестирование часто

Устранение дефектов на ранней стадии, что снижает затраты

Вовлечение клиента в процесс разработки

Доставка работающего продукта клиенту

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

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

  • Написание модульных тестов перед программированием и постоянное выполнение всех тестов. Модульные тесты автоматизированы и устраняют дефекты на ранней стадии, тем самым снижая затраты.

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

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

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

  • Быстрое внедрение минимальной рабочей системы в производство и ее обновление при необходимости.

  • Постоянное вовлечение клиента и постоянная обратная связь.

Написание модульных тестов перед программированием и постоянное выполнение всех тестов. Модульные тесты автоматизированы и устраняют дефекты на ранней стадии, тем самым снижая затраты.

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

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

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

Быстрое внедрение минимальной рабочей системы в производство и ее обновление при необходимости.

Постоянное вовлечение клиента и постоянная обратная связь.

Итерации облегчают адаптационные изменения по мере развития программного обеспечения в соответствии с меняющимися требованиями.

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

Почему это называется «Экстрим»?

Экстремальное программирование выводит эффективные принципы и практики на экстремальные уровни.

  • Проверка кода эффективна, так как код проверяется постоянно.

  • Тестирование является эффективным, поскольку существует постоянная регрессия и тестирование.

  • Дизайн эффективен, так как каждый должен делать рефакторинг ежедневно.

  • Интеграционное тестирование важно, так как интегрируйте и тестируйте несколько раз в день.

  • Короткие итерации эффективны как игра планирования для планирования выпуска и итерационного планирования.

Проверка кода эффективна, так как код проверяется постоянно.

Тестирование является эффективным, поскольку существует постоянная регрессия и тестирование.

Дизайн эффективен, так как каждый должен делать рефакторинг ежедневно.

Интеграционное тестирование важно, так как интегрируйте и тестируйте несколько раз в день.

Короткие итерации эффективны как игра планирования для планирования выпуска и итерационного планирования.

Эффективные принципы и практики

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

Кент Бек, Уорд Каннингем и Рон Джеффрис сформулировали экстремальное программирование в 1999 году. Другими участниками являются Роберт Мартин и Мартин Фаулер.

В середине 80-х Кент Бек и Уорд Каннингем инициировали парное программирование в Tektronix. В 80-х и 90-х годах компания Smalltalk Culture произвела рефакторинг, непрерывную интеграцию, постоянное тестирование и активное участие клиентов. Эта культура была позже распространена на другие среды.

В начале 90-х годов основные ценности были разработаны в рамках сообщества Patterns, Hillside Group. В 1995 году Кент суммировал их в Besttalk Best Practices, а в 1996 году Уорд суммировал их в эпизодах.

В 1996 году Кент добавил юнит-тестирование и метафору в Хьюитт. В 1996 году Кент принял проект Chrysler C3, к которому в качестве тренера был добавлен Рон Джеффрис. Практики были доработаны на C3 и опубликованы в Wiki.

Скрам-практики были включены и адаптированы как планирование игры. В 1999 году Кент опубликовал свою книгу «Объяснение экстремального программирования». В том же году Фаулер опубликовал свою книгу «Рефакторинг».

Экстремальное программирование развивается с тех пор, и развитие продолжается до сегодняшнего дня.

Успех в промышленности

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

  • Быстрое развитие.

  • Немедленное реагирование на меняющиеся требования клиента.

  • Фокус на низких показателях брака.

  • Система, возвращающая постоянное и постоянное значение клиенту.

  • Высокая удовлетворенность клиентов.

  • Снижение затрат.

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

Быстрое развитие.

Немедленное реагирование на меняющиеся требования клиента.

Фокус на низких показателях брака.

Система, возвращающая постоянное и постоянное значение клиенту.

Высокая удовлетворенность клиентов.

Снижение затрат.

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

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

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

Сдвинутые графики — и достижимые циклы разработки гарантируют своевременные поставки.

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

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

Дефекты производства и после доставки: акцент сделан — модульные тесты для раннего выявления и устранения дефектов.

Неправильное понимание бизнеса и / или предметной области — Включение клиента в команду гарантирует постоянное общение и разъяснения.

Изменения в бизнесе — Изменения считаются неизбежными и принимаются в любой момент времени.

Текучесть кадров — Интенсивное командное сотрудничество обеспечивает энтузиазм и добрую волю. Сплоченность многопрофильных дисциплин способствует развитию командного духа.