Модели и методологии разработки ПО
Ключевые тезисы
- Модель разработки описывает стадии жизненного цикла ПО от начала до конца.
- Методология разработки — это набор правил, техник и принципов для управления разработкой, делающий процесс более эффективным.
- Методологии (Scrum, Kanban) и модели (водопадная, V-модель) часто используются совместно.
Разница между моделью и методологией
- Модель разработки ПО — описывает, какие стадии проходит ПО и что происходит на каждой из них (например, водопадная, V-модель, итеративная).
- Методология разработки ПО — более обширный набор принципов и практик, определяющих способы выполнения каждого этапа. Сосредоточена на процессе в целом, включая управление проектом и коммуникацию.
Водопадная модель
Один из самых старых и простых подходов, где этапы идут строго последовательно, как падающая вода.
Этапы модели:
- Сбор требований — определение того, что должна делать программа.
- Проектирование — решение, как всё будет устроено внутри.
- Кодирование — написание кода.
- Тестирование — проверка работы и исправление ошибок.
- Внедрение — запуск готовой программы.
- Поддержка — исправление сбоев и добавление новых функций.
Особенность: Перейти к следующему этапу можно только после полного завершения предыдущего.
Недостаток: Негибкость. При необходимости изменений в середине процесса приходится возвращаться на несколько этапов назад.
V-модель
Расширение водопадной модели, где процесс похож на букву V: вниз — разработка, вверх — тестирование.
Путь вниз (разработка):
- Сбор требований.
- Системное проектирование (взаимодействие частей системы).
- Архитектурное проектирование (разбиение на модули).
- Детальное проектирование (проработка модулей).
- Кодирование.
Путь вверх (тестирование):
- Модульное тестирование (проверка отдельных модулей).
- Интеграционное тестирование (проверка взаимодействия модулей).
- Системное тестирование (проверка всей системы).
- Приёмочное тестирование (соответствие исходным требованиям).
Суть: Каждый этап тестирования строго связан с определённым этапом разработки, что делает процесс более организованным и позволяет убедиться в корректности работы на каждом шаге.
Методология Kanban
Метод управления рабочим процессом с помощью визуализации на доске.
Как работает:
- Рабочий процесс отображается на доске, разделённой на колонки (например, «Сделать», «В процессе», «Готово»).
- Каждая задача — это карточка, которая перемещается по колонкам слева направо.
- Можно устанавливать ограничения на количество задач в колонке «В процессе», чтобы не перегружать команду.
Плюсы:
- Простота и наглядность.
- Гибкость, легко менять процесс.
- Фокус на завершении текущих задач.
Минусы:
- Может не подходить для сложных проектов с зависимыми задачами.
- Риск создания иллюзии производительности, если просто перекидывать карточки без углубления в детали.
Методология Scrum
Гибкая (Agile) методология для управления проектами и разработки ПО.
Роли в Scrum:
- Владелец продукта (Product Owner) — определяет требования и приоритеты.
- Scrum-мастер — помогает команде, устраняет препятствия (на практике эту роль часто выполняет техлид или владелец продукта).
- Команда разработки — 3-9 человек (разработчики, дизайнер и др.), которые выполняют задачи.
Ключевые артефакты:
- Product Backlog — общий список всех функций, улучшений и исправлений.
- Sprint Backlog — список задач, выбранных для выполнения в текущем спринте.
- Работающая версия продукта — инкремент функциональности, созданный за спринт.
Процесс в спринте (итерации, обычно 2 недели):
- Планирование спринта: Команда выбирает задачи из Product Backlog в Sprint Backlog. Задачи оцениваются в стори-поинтах (story points) — условных единицах сложности, а не во времени. Объём задач не должен превышать спринтовую мощность команды (например, 30 стори-поинтов за спринт).
- Scrum покер: Техника оценки задач. Каждый участник команды анонимно выбирает карту с числом (часто из последовательности Фибоначчи), отражающую сложность задачи. При большом разбросе оценок проводится обсуждение и повторное голосование до достижения консенсуса.
- Цели: снижение ошибок в оценке, обмен опытом, улучшение командной коммуникации.
- Ежедневные стендапы (Daily Scrum): Краткие 15-минутные встречи для обсуждения: что сделано, что планируется, какие есть препятствия.
- Демонстрация результата: В конце спринта команда показывает выполненную работу и получает обратную связь.
- Ретроспектива: Анализ того, что прошло хорошо, что можно улучшить, и планирование улучшений на следующий спринт.