Выбрать главу

— Парное программирование — код пишется в парах, что повышает его качество и упрощает обмен знаниями внутри команды.

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

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

— Рефакторинг — регулярное улучшение кода для его упрощения и увеличения читаемости, а также расширяемости.

Преимущества:

— Гибкость к изменениям требований — их можно вносить даже на последних этапах разработки, что делает ее очень гибкой.

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

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

— Ускорение процесса разработки — за счет непрерывной интеграции и регулярных релизов ускоряется получение обратной связи.

Недостатки:

— Не всегда подходит для больших команд — эффективность таких практик разработки как парное программирование может заметно снизиться в больших командах.

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

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

Этапы:

— Планирование — выбор пользовательских историй для текущей итерации.

— Проектирование — простое верхнеуровневое проектирование изменений в системе.

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

— Тестирование — проверка функционала и изменений автоматизированными тестами.

— Рефакторинг — улучшение существующего кода без изменения его функциональности.

6.2.7. Scrum

Scrum — популярный в разработке программного обеспечения гибкий фреймворк для управления проектами. В его основе итерационно — инкрементальная разработка, где работа над проектом делится на итерации (спринты). Он ориентирован на постоянное улучшение, сотрудничество и подходит для проектов, где необходима быстрая реакция на изменения.

Особенности:

— Роли — все участники команды играют одну из трёх ключевых ролей: Владелец Продукта (Product Owner), Скрам — мастер (Scrum Master) и Команда разработки (Development Team).

— Спринты — работа над проектом делится на итерации с фиксированной длинной (обычно от 2 до 4 недель), в течение спринтов команда создает и доставляет инкременты продукта.

— События Scrum — мероприятия для координации работы команды. Включают ежедневные встречи, планирование, обзор и ретроспективу спринта.

— Артефакты Scrum — важные элементы для достижения глобальных целей. Основные артефакты это Бэклог Продукта, Бэклог Спринта и Инкремент.

Преимущества:

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

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

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

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

Недостатки:

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

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

— Сложность масштабирования — несмотря на существование фреймворков, таких как SAFe, Scrum сложно использовать в больших компаниях или проектах.

Этапы (События Scrum):

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

— Ежедневные Scrum встречи — короткое собрание участников команды для обсуждения текущего прогресса и планирования работы на следующий день.