Содержание

Жизненный цикл разработки ПО (SDLC): этапы и модели

SDLC (Software Development Life Cycle) – это структурированный процесс, используемый для планирования, проектирования, разработки и тестирования программного обеспечения. SDLC нацелен на производство ПО, соответствующих требованиям и ожиданиям заказчика или превосходит их, в кратчайшие сроки завершает работу и оценивает затраты.

ISO/IEC 12207 — международный стандарт, который определяет структуру и описывает процессы жизненного цикла программного обеспечения (SDLC), охватывая все этапы — от анализа и разработки до эксплуатации, сопровождения и вывода из эксплуатации. Этот стандарт широко применяется компаниями по всему миру для стандартизации процессов разработки и сопровождения ПО, повышения качества продуктов и обеспечения соответствия международным требованиям.

Что такое SDLC. Основные стадии SDLC

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

SDLC – это процесс, придерживаемый программным проектом в рамках организации программного обеспечения. Он состоит из подробного плана, описывающего, как разрабатывать, поддерживать, заменять и изменять или улучшать конкретное программное обеспечение. Жизненный цикл определяет методологию улучшения качества программного обеспечения и общего процесса разработки.

На следующем рисунке представлено графическое представление разных этапов типичного SDLC.

1. Планирование системы (Planning)

Фаза планирования – наиболее важный и критический шаг в создании успешной системы.

Цель: определить, что именно нужно сделать и какие ресурсы потребуются.

Основные задачи:

Результат: По итогам анализа принимается решение: создать новую систему, улучшить существующую или оставить всё как есть. На этом этапе важна активная коммуникация с заказчиком.

QA Engineer участвует в обсуждении бизнес-целей и требований. Помогает сделать требования понятными, измеримыми и тестируемыми, указывает на возможные риски и формирует критерии качества, и начинает составлять тест-план.

2. Определение требований / Анализ (Analysis)

Цель: понять, что нужно заказчику и как это можно реализовать. Для определения начальных требований к продукту привлекаются эксперты из разных отраслей: заказчики, клиенты, специалисты разных отделов (продаж, разработки, аналитики, тестирование и т.п.), эксперты по схожим продуктам. Бизнес-аналитики (BA) прорабатывают полученную информацию, детализируют ее и превращают в технические требования к системе, которые называются Software Requirement Specification (SRS).

Помимо SRS на этом этапе::

Результат: Анализ требований — это этап, на котором уточняют, что должен делать продукт, проверяют реализуемость и фиксируют это в документе SRS (Software Requirements Specification - Спецификация требований к программному обеспечению). SRS — это НЕ проектирование, а требования. SRS — это документ с требованиями к продукту (что система должна делать, какие функции и ограничения). Он обычно создаётся на этапе анализа требований (раньше, чем проектирование). Здесь важно понять, что SRS является одним из входных документов (входных данных) для этапа проектирования, а не его результатом.

3. Дизайн системы / Проектирование (Design)

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

Цель: разработать технический стек (архитектуру) и структуру программы на основе требований.

Основные задачи:

Результат: Техническая документация DDS (Design Document Specification), описывающий выбранный стек, архитектуру и технические решения. DDS — это документ, который создают на этапе проектирования. То есть: SRS — исходные требования, DDS — результат проектирования, основанный на этих требованиях SRS.

QA Engineer проверяет удобство тестирования архитектуры и выбранного стека, предлагает улучшения для более эффективного тестирования, обсуждает сценарии тестирования и готовит стратегии тестирования под будущую реализацию.

4. Разработка (Development)

Цель: Написание кода на основе созданного дизайна.

Основные задачи:

Результат: Готовый программный продукт или модули, требующие тестирования. На этом этапе SDLC начинается фактическая разработка и сборка продукта. Программный код генерируется в соответствии с DDS на данном этапе.

QA Engineer параллельно с разработчиками уточняет детали реализации, пишет тест-кейсы, автоматизированные тесты, настраивает окружения для тестирования и обеспечивает «shift-left тестирование» — ранний поиск дефектов.

5. Тестирование (Testing)

Этот этап обычно является подмножеством всех этапов, поскольку в современных моделях тестирования SDLC в основном затрагивает все этапы SDLC. Однако этот этап касается только этапа тестирования продукта, на котором дефекты продукта регистрируют, отслеживают, исправляют и повторно тестируют, пока продукт не достигнет стандартов качества, определенных в SRS.

Цель: Проверить программное обеспечение на наличие ошибок и соответствие требованиям.

Основные задачи:

Результат: Протоколы тестирования, подтверждение соответствия требованиям. Дефекты продукта регистрируют, отслеживают, исправляют и повторно тестируют, пока продукт не достигнет стандартов качества.

На этой стадии QA Engineer полностью реализует основные задачи: ручное и автоматизированное тестирование, анализ багов, взаимодействие с разработчиками по исправлению дефектов, выпуск отчётов о качестве тестового покрытия.

6. Развертывание / Релиз (Deployment)

Цель: Запуск программного обеспечения в реальной среде использования. Продукт передают заказчику.

Основные задачи:

Результат: Программное обеспечение готово к использованию конечными пользователями. Иногда развертывание продукта происходит поэтапно в соответствии с бизнес-стратегией этой организации. Также, здесь происходит объединение разных компонентов и подсистем в единую цельную систему. В систему подаются разные входные данные и анализ выхода, поведения и функционирование

QA Engineer проводит финальное (smoke, sanity) тестирование после выката релиза и следит за успешным развертыванием приложения в боевом окружении, готовит, если нужно, планы отката.

7. Обслуживание/Поддержка (Maintenance)

Цель: Поддерживать и обновлять программное обеспечение после его развертывания.

Основные задачи:

Результат: Постоянная поддержка и улучшение программного обеспечения. В этой фазе осуществляется периодическая техническая поддержка системы, чтобы убедиться, что она не устарела.

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

FAQ: Как и когда подключается QA Engineer на каждом этапе SDLC?

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

FAQ: Список моделей SDLC с кратким пояснением

Существует несколько ключевых моделей жизненного цикла разработки программного обеспечения (SDLC — Software Development Life Cycle). Каждая модель процесса следует серии шагов, уникальных для своего типа, чтобы обеспечить успех в процессе разработки программного обеспечения.

Ниже приведены наиболее важные и популярные модели SDLC, используемые на практике:

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

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

В основе лежит последовательность повторяющихся циклов, включающих анализ рисков, проектирование, реализацию и оценку результата. Хорошо подходит для крупных и рискованных проектов.

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

Минимальное планирование: все ресурсы вкладываются в разработку, а требования формируются и меняются по ходу работы. Обычно используется для маленьких и исследовательских проектов.

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

Другие модели SDLC:

Инкрементная и адаптивная методология, предусматривающая тесное взаимодействие с заказчиком, фокус на быструю поставку работающего ПО, постоянные улучшения и регулярные ретроспективы.

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

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

Заключение

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