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

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

Что такое Agile?

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

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

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

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

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

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

Agile Manifesto

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

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

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

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

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

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

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

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

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

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

  • Гибкость в 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 году Кент опубликовал свою книгу «Объяснение экстремального программирования». В том же году Фаулер опубликовал свою книгу «Рефакторинг».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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