Files
frontend-docs/docs/team/01-methodology.md

165 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
sidebar_position: 1
---
# Методологии разработки
## Waterfall
Waterfall (каскадная модель) — это традиционный подход к управлению проектами и разработке программного обеспечения, который предполагает последовательное выполнение этапов. Каждый этап должен быть завершен до перехода к следующему, что делает процесс линейным и предсказуемым.
Waterfall контрастирует с Agile, где гибкость и итеративность являются ключевыми принципами.
### Основные принципы Waterfall:
1. Последовательность этапов:
- Проект делится на четкие этапы, которые выполняются один за другим.
- Типичные этапы: сбор требований, проектирование, реализация, тестирование, внедрение и поддержка.
2. Жесткая структура:
- Каждый этап имеет четкие цели и результаты, которые должны быть завершены до перехода к следующему этапу.
- Изменения требований на поздних этапах сложно внедрить.
3. Документирование:
- На каждом этапе создается подробная документация, которая служит основой для следующего этапа.
- Например, требования фиксируются в документе спецификации, который используется для проектирования.
4. Минимум обратной связи:
- Обратная связь от клиента или пользователей обычно происходит только на этапе тестирования или внедрения.
- Это может привести к тому, что продукт не полностью соответствует ожиданиям.
5. Предсказуемость:
- Waterfall подходит для проектов с четкими и неизменными требованиями.
- Бюджет, сроки и ресурсы планируются заранее.
### Преимущества Waterfall:
- Подходит для проектов с четкими и стабильными требованиями.
- Легко управлять и контролировать процесс.
- Хорошо документированный процесс.
### Недостатки Waterfall:
- Сложно адаптироваться к изменениям требований.
- Ошибки, обнаруженные на поздних этапах, могут быть дорогостоящими.
- Ограниченная обратная связь с клиентом до завершения проекта.
### Когда использовать Waterfall:
- Когда требования четко определены и unlikely to change.
- Для небольших проектов с понятной структурой.
- В отраслях с жесткими стандартами (например, строительство, аэрокосмическая промышленность).
## Agile
Agile (гибкая методология) — это подход к управлению проектами и продуктами, который emphasizes гибкость, итеративность и сотрудничество. Он широко используется в разработке программного обеспечения, но также применяется в других областях.
Agile помогает командам быстрее реагировать на изменения, улучшать качество продукта и повышать удовлетворенность клиентов.
### Основные принципы Agile:
1. Итеративность и инкрементальность: Работа делится на небольшие этапы (итерации или спринты), по итогам которых создается работающий продукт или его часть.
2. Гибкость: Возможность быстро адаптироваться к изменениям требований или условий.
3. Сотрудничество: Тесное взаимодействие между командами и заинтересованными сторонами.
4. Фокус на ценности: Приоритет отдается удовлетворению потребностей клиента и доставке ценного продукта.
5. Самоорганизация: Команды самостоятельно принимают решения и распределяют задачи.
### Популярные фреймворки Agile:
- Scrum: Использует короткие итерации (спринты) и роли (Scrum Master, Product Owner, команда).
- Kanban: Визуализация workflow и ограничение задач в процессе.
- Extreme Programming (XP): Акцент на техническом совершенстве и частых релизах.
## Scrum
Scrum — это популярный фреймворк Agile, который используется для управления проектами и разработки продуктов. Он основан на итеративном и инкрементальном подходе, где работа делится на короткие циклы (спринты), по итогам которых создается готовый к использованию продукт или его часть.
Scrum подходит для проектов с изменчивыми требованиями и сложными задачами, где важна быстрая адаптация и постоянное улучшение.
### Основные принципы Scrum:
1. **Итеративность и инкрементальность:**
- Работа выполняется в коротких итерациях (спринтах), обычно длительностью 1-4 недели.
- В конце каждого спринта команда предоставляет готовый к использованию продукт или его часть.
2. **Самоорганизация команды:**
- Команда самостоятельно распределяет задачи и принимает решения.
- Нет жесткого управления сверху, что способствует ответственности и мотивации.
3. **Прозрачность:**
- Все аспекты работы (задачи, прогресс, проблемы) видимы для всех участников.
- Используются инструменты, такие как Scrum-доска, чтобы визуализировать workflow.
4. **Адаптация:**
- Команда регулярно анализирует результаты и процессы (на ретроспективах) и вносит улучшения.
- Гибкость к изменениям требований и приоритетов.
5. **Фокус на ценности:**
- Приоритет отдается задачам, которые приносят наибольшую ценность для клиента.
- Product Owner отвечает за управление бэклогом продукта и определение приоритетов.
### Роли в Scrum:
1. **Владелец продукта (Product Owner):**
- Определяет требования и приоритеты задач.
- Управляет бэклогом продукта (списком задач).
2. **Scrum Master:**
- Фасилитатор, который помогает команде следовать принципам Scrum.
- Устраняет препятствия и обеспечивает эффективность процессов.
3. **Команда разработки (Development Team):**
- Самоорганизующаяся группа специалистов, которая выполняет задачи.
- Обычно состоит из 3-9 человек.
### Артефакты Scrum:
1. **Бэклог продукта (Product Backlog):**
- Список всех задач и требований к продукту.
- Упорядочен по приоритетам.
2. **Бэклог спринта (Sprint Backlog):**
- Список задач, выбранных для выполнения в текущем спринте.
3. **Инкремент продукта (Product Increment):**
- Результат работы за спринт — готовый к использованию продукт или его часть.
### События Scrum:
1. **Планирование спринта (Sprint Planning):**
- Команда выбирает задачи из бэклога продукта и планирует работу на спринт.
2. **Ежедневный Scrum (Daily Standup):**
- Короткая встреча (15 минут), где каждый участник рассказывает, что сделал, что планирует сделать и какие есть препятствия.
3. **Обзор спринта (Sprint Review):**
- В конце спринта команда демонстрирует результат заинтересованным сторонам.
4. **Ретроспектива спринта (Sprint Retrospective):**
- Команда анализирует процесс и ищет способы улучшить работу в следующем спринте.
### Преимущества Scrum:
- Гибкость к изменениям.
- Быстрая доставка ценности клиенту.
- Улучшение коммуникации и прозрачности.
## Kanban
**Kanban** — это метод управления рабочими процессами, который focuses на визуализации задач, ограничении объема работы в процессе (work in progress, WIP) и непрерывном улучшении. Он originated в производственной системе Toyota, но сейчас широко используется в IT, разработке программного обеспечения и других областях.
Kanban часто сравнивают с Scrum, но в отличие от Scrum, Kanban не требует фиксированных итераций (спринтов) и ролей. Он больше focuses на непрерывном потоке задач и улучшении процессов.
### Основные принципы Kanban:
1. **Визуализация workflow:**
- Рабочий процесс визуализируется с помощью Kanban-доски, которая разделена на столбцы (этапы работы).
- Каждая задача представляется карточкой, которая перемещается по столбцам по мере выполнения.
2. **Ограничение объема работы в процессе (WIP):**
- Устанавливаются лимиты на количество задач, которые могут находиться на каждом этапе одновременно.
- Это помогает избежать перегрузки команды и улучшает поток задач.
3. **Управление потоком:**
- Фокус на обеспечении плавного и непрерывного движения задач через workflow.
- Анализируются узкие места и устраняются препятствия.
4. **Прозрачность:**
- Все задачи и их статус видны всем участникам команды.
- Это улучшает коммуникацию и понимание текущего состояния работы.
5. **Непрерывное улучшение (Kaizen):**
- Регулярно анализируются процессы и вносятся улучшения.
- Команда стремится к оптимизации workflow и повышению эффективности.
### Элементы Kanban:
1. **Kanban-доска:**
- Физическая или цифровая доска, разделенная на столбцы (например, "To Do", "In Progress", "Done").
- Карточки представляют задачи и перемещаются по столбцам.
2. **Карточки (Cards):**
- Каждая карточка представляет одну задачу и содержит информацию о ней (например, описание, приоритет, ответственный).
3. **Лимиты WIP:**
- Устанавливаются ограничения на количество задач, которые могут находиться в каждом столбце одновременно.
- Например, в столбце "In Progress" может быть не более 5 задач.
4. **Поток (Flow):**
- Анализ и оптимизация движения задач через workflow.
- Используются метрики, такие как время выполнения (cycle time) и пропускная способность (throughput).
### Преимущества Kanban:
- **Гибкость:** Kanban легко адаптируется к изменениям требований и процессов.
- **Прозрачность:** Все задачи и их статус видны всем участникам.
- **Снижение перегрузки:** Лимиты WIP помогают избежать перегрузки команды.
- **Непрерывное улучшение:** Регулярный анализ и оптимизация процессов.
### Когда использовать Kanban:
- Для проектов с постоянно меняющимися требованиями.
- Для поддержки и улучшения существующих процессов.
- Для команд, которые хотят улучшить прозрачность и управление workflow.
🚀 **_Источник: DeepSeek_**