---
# System prepended metadata

title: 2.3. Жизненный цикл разработки ПО. Гибкие методологии разработки ПО

---

---
slideOptions:
  transition: slide
---


2.3. Жизненный цикл разработки ПО. Гибкие методологии разработки ПО
====

---

# План занятия

1. SDLC — жизненный цикл разработки ПО
2. Стадии разработки
3. Фазы разработки
4. Методологии разработки ПО
5. STLC — жизненный цикл тестирования ПО
6. Стадии тестирования
7. Жизненный цикл дефекта 
8. Как вписать STLC в SDLC и не умереть




---

# Вспоминаем прошлые занятия

- Методы и виды тестирования ПО 
- Основы клиент-серверного взаимодействия
- Техники тест дизайна
- Подготовка тестовых сценариев
- Инструменты тестирования ПО

---

# SDLC - жизненный цикл разработки ПО

![](https://i.imgur.com/H8mIFqg.png)


---

# Стадии разработки

- Анализ требований к проекту
- Проектирование
- Реализация (дизайн и кодирование)
- Тестирование и интеграция
- Внедрение и поддержка

---
# Анализ требований к проекту

- Анализ требований к проекту
- Подготовка к дальнейшей работе
- Документирование и анализ
- Выявление и разрешение противоречий

---
# Проектирование

- Выбор технологий
- Загрузка команды, бюджетное планировние
- Разработка проектоного решения

---
# Реализация

- Разработка back-end
- Разработка front-end
- Unit-тесты
- Развертка кода в программной среде

---
# Тестирование и интеграция

- Поиск и документирование дефектов
- Ретест дефектов после исправлений
- Написание/актуализация тестов

---
# Внедрение и поддержка

- Релиз для конечных пользователей
- Работа саппорта

---
# Фазы разработки

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


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

---

# Методологии разработки ПО

- Waterfall
- V-model
- Agile 
- Спиральная модель
- Инкрементная модель

---

# Waterfall

![](https://i.imgur.com/PYA8WdD.png)


---

# V-model

![](https://i.imgur.com/3dhHM7B.png)




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

![](https://i.imgur.com/iAfAym6.png)

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


---
# Инкрементная модель

![](https://i.imgur.com/Z8pgULi.png)


---

# Agile

![](https://i.imgur.com/Wv5fKcQ.jpg)


---

# 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

---


# От чего зависит выбор модели разработки

![](https://i.imgur.com/72W4Ee7.png)


---


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

![](https://i.imgur.com/K7znpYP.png)



---

# Стадии тестирования

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

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

![](https://i.imgur.com/tQKYs54.png)


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

![](https://i.imgur.com/tWNcyrd.png)



---
# Как вписать STLC в SDLC и не умереть

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

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

Идеально, когда обсуждение компонентов системы проходит с участием разработчика, пользователя и QA-аналитика.

---
# Домашнее задание



---

