---
slideOptions:
transition: slide
---
2.3. Жизненный цикл разработки ПО. Гибкие методологии разработки ПО
====
---
# План занятия
1. SDLC — жизненный цикл разработки ПО
2. Стадии разработки
3. Фазы разработки
4. Методологии разработки ПО
5. STLC — жизненный цикл тестирования ПО
6. Стадии тестирования
7. Жизненный цикл дефекта
8. Как вписать STLC в SDLC и не умереть
---
# Вспоминаем прошлые занятия
- Методы и виды тестирования ПО
- Основы клиент-серверного взаимодействия
- Техники тест дизайна
- Подготовка тестовых сценариев
- Инструменты тестирования ПО
---
# SDLC - жизненный цикл разработки ПО

---
# Стадии разработки
- Анализ требований к проекту
- Проектирование
- Реализация (дизайн и кодирование)
- Тестирование и интеграция
- Внедрение и поддержка
---
# Анализ требований к проекту
- Анализ требований к проекту
- Подготовка к дальнейшей работе
- Документирование и анализ
- Выявление и разрешение противоречий
---
# Проектирование
- Выбор технологий
- Загрузка команды, бюджетное планировние
- Разработка проектоного решения
---
# Реализация
- Разработка back-end
- Разработка front-end
- Unit-тесты
- Развертка кода в программной среде
---
# Тестирование и интеграция
- Поиск и документирование дефектов
- Ретест дефектов после исправлений
- Написание/актуализация тестов
---
# Внедрение и поддержка
- Релиз для конечных пользователей
- Работа саппорта
---
# Фазы разработки
- **Последовательные фазы**:
- сначала собираем и разрабатываем требования,
- потом проектируем модели,
- затем реализуем их,
- перед передачей заказчику тестируем и исправляем ошибки.
- **Параллельные фазы**: пока разработчики реализуют требования к текущей версии, аналитики собирают и разрабатывают требования к новой версии.
Одновременно над продуктом может работать несколько команд, каждая из которых разрабатывает свою фичу от начала и до конца.
- **Смешанные фазы**: участники команды могут не выделять отдельные фазы, а за счет коммуникационных практик выполнить сразу сбор, разработку требований и проектирование будущей функциональности.
Фазы разработки могут охватывать как целый продукт (водопадная модель), так и минимальную полезную функциональность (Scrum).
---
# Методологии разработки ПО
- Waterfall
- V-model
- Agile
- Спиральная модель
- Инкрементная модель
---
# Waterfall

---
# V-model

---
# Спиральная модель

1. Сбор требований и планирование
2. Планирование на основе изменений
3. Анализ риска на основе начальных требований
4. Анализ риска на основе изменений
5. Переход к готовой система
6. -8. Версии системы
9. Оценка заказчиком
---
# Инкрементная модель

---
# Agile

---
# Agile
Популярные Agile-методы:
* XP - Экстремальное программирование
* DSDM - Dynamic Systems Development Method, методика разработки программного обеспечения, основанная на концепции быстрой разработки приложений (RAD)
* Scrum
* FDD - Feature driven development
* TDD - Test-driven development
* BDD - Behavior-driven development
* Lean software development
---
# От чего зависит выбор модели разработки

---
# STLC — жизненный цикл тестирования ПО

---
# Стадии тестирования
- **Работа с требованиями**: тестирование на соответствие бизнес-целям, полноту охвата, уместность использования, целостность и непротиворечивость.
- **Планирование тестирования**: определение требований к тестам, оценка рисков, выбор стратегии тестирования, создание расписания тестирования, разработка Плана тестирования.
- **Разработка тестов**: определение и описание тестовых случаев, обзор и оценка тестового покрытия, создание и подготовка наборов данных.
- **Установка тестового окружения**: подготовка тестовой среды, подтверждение правильности сборки.
- **Проведение тестов**: выполнение тестов, их оценка, проверка результатов, запись ошибок.
- **Завершение цикла тестирования**: проверка выполнения критериев завершения и успешности тестирования.
---
# Жизненный цикл дефекта

---
# Жизненный цикл дефекта

---
# Как вписать STLC в SDLC и не умереть
Полный цикл тестирования обычно совпадает с итерацией разработки или соответствует ее определенной части.
Подход к проверке работоспособности программного продукта похож на оценку продукта от конечного пользователя, поэтому стоит привлекать специалиста к работе на самом раннем этапе — в ходе сбора и анализа требований.
Идеально, когда обсуждение компонентов системы проходит с участием разработчика, пользователя и QA-аналитика.
---
# Домашнее задание
---