SDLC – software development lifecycle
Это весь жизненный цикл разработки ПО.
Состоит он из:
➤ Заказчика (выдвигает свои требования и идею)
➤ Дизайнер
➤ Документации
➤ Разработчик
➤ Тестировщик (проверяет все на предмет багов)
➤ Релиз
➤ Поддержка проекта
Agile — это набор принципов и подходов к разработке программного обеспечения, который делает акцент на гибкость, адаптацию к изменениям и сотрудничество в команде. Основная идея — поставлять продукт небольшими частями, регулярно получать обратную связь и быстро вносить улучшения.
Scrum и Kanban
Kanban — это конвейер, сколько задач дадут, столько и надо выполнит, нет определённого количества задач. Задачи отображаются на доске Kanban, которая помогает команде видеть, что нужно сделать, что делается и что уже завершено. Здесь нет фиксированных спринтов, и задачи добавляются по мере необходимости.
Scrum — более популярная методология, где работа делится на короткие циклы, называемые спринтами (обычно 2-4 недели). Scrum включает четкую структуру: планирование спринтов, ежедневные стендапы, обзор спринта и ретроспективу. Команда работает над задачами из бэклога, который управляется Product Owner'ом. В Scrum также есть роли: Product Owner (отвечает за продукт), Scrum Master (следит за процессом) и Scrum Team (выполняет задачи).
Спринты — это фиксированные периоды времени, в течение которых команда должна выполнить определенный объем работы. Цель — завершить поставленные задачи и достичь конкретных результатов к концу спринта.
Waterfall
Waterfall (Каскадная модель) — это последовательный метод разработки, где каждая фаза проекта (анализ, дизайн, разработка, тестирование, развертывание) выполняется последовательно и строго в определенном порядке. Этот подход подходит для проектов, где требования четко определены с самого начала, например в медицине или авиации, где ошибки недопустимы. В отличие от Agile, Waterfall не предполагает гибкости, и изменения на поздних этапах требуют значительных усилий и затрат.
1.Grooming backlog
Мероприятие по грумингу представляет собой оптимизацию и обновления беклога, возможно доработка беклога. Также разбираются пользовательские истории, и есть ли понимание у каждого участника команды этих User Story.
User story – ее задача максимально конкретно описать особенности конкретного продукта, его функциональные возможности и ценность для конечного потребителя.
2.Sprint planning meeting
Во время спринт пленинга команда рассматривает задачи и выставляет приоритетность. Митинг заканчивается, когда будет поставлена четкая цель и каждый будет понимать, что он будет делать и как.
3.Daily meeting
Дейлики (или стендапы) – тут команда анализирует цели, сверяется с графиком, ищет явные и перспективные проблемы. Стендапы проходят ежедневно в одно и то же время. Каждый участник должен поделиться своим прогрессом, апдейтами. Благодаря митингам команда знает свою успеваемость и знает, когда сможет закончить все задачи.
4.Retrospective
Анализ всех событий. Что было хорошо, а что можно улучшить в след спринте. Длится около часа митинг.
5.Sprint review
Завершающий этап спринта. На этом митинге каждый участник команды демонстрирует достигнутые результаты. Это возможность предоставить клиенту прогресс и результаты команды.
6.Demo
Каждый участник должен продемонстрировать и показать свою выполненную работу.
Continuous integration / Continuous Delivery
Это беспрерывная автоматизированная разработка ПО, которая обеспечивает скорость разработки и поэтапную автоматизацию перехода задачи с одной фазы в другую.
CI (непрерывная интеграция) — это процесс, в рамках которого код от различных разработчиков объединяется (интегрируется) в основную ветку несколько раз в день. На каждом этапе CI происходит автоматическая сборка и тестирование, что позволяет оперативно выявлять ошибки и конфликты.
CD (непрерывная доставка) — процесс, при котором после успешного прохождения этапа CI приложение автоматически доставляется на тестовые или рабочие (продакшн) среды. При этом каждый релиз является готовым к деплою и проходит тестирование перед выпуском.
К примеру, ОС iOS – была создана 1 версия, сначала она прошла Ci, потом CD, то есть была выпущена для пользования и благодаря CD, то есть уже какой-то готовой версии продукта, можно что-то добавлять или изменять и это все происходит в Ci. Получается происходит постоянная автоматизированная интеграция ПО.
Монолитная и микросервисная архитектуры
Это две основные архитектурные модели для построения приложений.
Монолитная архитектура — представляет собой цельное приложение, где все функции, компоненты и зависимости находятся в одном приложении и выполняются в едином процессе.
Преимущества: проще развертывать, тестировать и управлять на начальных этапах.
Недостатки: сложность масштабирования, риск отказа всей системы при сбое в одном из модулей, тяжелое обновление.
Микросервисная архитектура — приложение разбито на небольшие независимые сервисы, каждый из которых отвечает за свои задачи и функции. Сервисы общаются друг с другом через API (обычно REST или gRPC) и могут быть развёрнуты независимо.
Преимущества: каждый сервис можно масштабировать и обновлять отдельно, сбой одного сервиса не приводит к остановке всей системы, поддерживает разный технологический стек.
Использование: Микросервисная архитектура используется чаще в крупных проектах, требующих гибкости, масштабируемости и устойчивости.
Maven
Maven — это инструмент сборки и управления зависимостями, использующий XML для конфигурации. Maven предоставляет структурированный жизненный цикл сборки, что позволяет упрощать процессы компиляции, тестирования и развертывания.
Главный файл конфигурации: pom.xml, в котором описаны зависимости, плагины и настройки проекта.
Основные фазы жизненного цикла Maven: clean, validate, compile, test, package, verify, install, deploy.
Плагин Surefire: используется для запуска тестов, позволяет конфигурировать набор тестов (например, suite или отдельные классы).
Gradle
Gradle — гибкий и расширяемый инструмент сборки, использующий Groovy или Kotlin DSL для описания конфигурации, что делает файл сборки более читаемым и компактным по сравнению с XML Maven.
Преимущества: поддерживает параллельную сборку, что сокращает время сборки, имеет встроенную поддержку для Android-проектов, благодаря чему стал стандартом для Android-разработки.