Найти в Дзене

Основы тестирования. Часть 3. Жизненный цикл ПО. Роли в проекте.

Оглавление

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

Жизненный цикл программного обеспечения (Software Life Cycle Model, SDLC) — это период времени, который начинается с момента принятия решения о создании программного продукта и заканчивается в момент его полного изъятия из эксплуатации.

Из каких основных этапов может состоять SDLC?

SDLC
SDLC

0. Зарождение идеи. Выявление задач, которые позволит решить ПО. Анализ конкурентов.

идея!
идея!

Данный этап не выделен на классической схеме, но всегда стоит понимать, что началом жизни проекта стоит называть зарождение самой идеи о нём.

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

Возможные ключевые роли на данном этапе: спонсор проекта; владелец продукта; менеджер проекта; бизнес аналитик; UX/UI дизайнер.

1,2. Планирование (Planning) и анализ (Analysis)

Планирование и анализ
Планирование и анализ

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

Возможные ключевые роли на данном этапе:

  • Владелец продукта (product owner). Задачей владельца продукта является выяснение проблемы, которую необходимо решить. Он также выдвигает гипотезы для эффективных решений, определяет стратегию продукта и управляет отношениями с заинтересованными сторонами.
  • Менеджер проекта (project manager) несёт ответственность за организацию, планирование и руководство командой во время деятельности по разработке программного продукта для достижения объема, параметров и требований проекта. Координация и передача всей соответствующей информации от клиентов команде, а также четкое и эффективное информирование высшего руководства является основной задачей этой роли.
  • Бизнес аналитик. Цель бизнес аналитика — найти подходящее программное решение с наибольшей экономической эффективностью. Для этого он должен проанализировать все документы и процессы, чтобы определить полный перечень требований к разработке программного обеспечения. Уравновешивание ожиданий бизнес лидеров и пользователей с ограничениями технологических и финансовых ресурсов является серьезной задачей для данного специалиста.
  • Спонсор проекта (крайне опциональная роль, на своей практике не встречал). Основная задача спонсора проекта состоит в том, чтобы сохранить наивысший приоритет проекта в организации, управлять бюджетом, утверждать изменения и информировать заинтересованные стороны о статусе проекта.

3. Проектирование (Design)

проектирование
проектирование

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

Все требования к программному обеспечению должны быть зарегистрированы в документе SRS (Спецификация требований программного обеспечения), описывающем функциональные (функции, которые будут заложены в продукт) и нефункциональные требования (например, требования производительности, безопасности, переносимости и так далее) программного обеспечения. Именно эта спецификация и будет основным документом разработки и тестирования продукта.

Основными ролями тут будут:

  • Менеджер проекта, который правильно соберёт и задокументирует требования к проекту на основе целей и видения владельца продукта;
  • Архитектор продукта, который продумает архитектуру ПО, выберет средства исполнения ПО, разработает способ и формат хранения данных, разобьет систему на подсистемы/слои/модули и так далее.
  • UX/UI дизайнеры, которые создадут визуальный макет (если таков необходим) и структурируют сценарии по данному макету.

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

разработка
разработка

На этом этапе команда разработчиков начинает создавать продукт на основе выбранного (тех. лидом, либо архитектором системы) языка программирования. В целях эффективности команда делится на бэкэнд и фронтенд разработчиков, а также привлекает специалистов Devops.

Основные роли:

  • Тех. лид. (Tech Lead) возглавляет группу разработчиков программного обеспечения, управляет задачами и выпусками продуктов.
  • Backend разработчики. Программисты (разработчики), которые отвечают за внутреннюю и вычислительную логику веб-сайта или веб-приложения, а также иного программного обеспечения и информационных систем. Проще говоря, бэкендеры — это программисты, которые разрабатывают всё то, что не видит и напрямую не трогает пользователь.
  • Frontend разработчики. Специалист, который создает пользовательские интерфейсы. Он отвечает за всю внешнюю часть сайта или приложения, с которой взаимодействуют люди: меню, карточки товаров в интернет-магазине, кнопки, формы обратной связи. Благодаря качественной работе фронтенд разработчика появляются быстрые и удобные сайты.
    Devops инженеры. Инженеры (чаще их называют администраторами), которые увлечены написанием сценариев и кодированием и переходят на сторону разработки, где они могут улучшить планирование тестов и развертывания.
  • Fullstack разработчики. Чаще всего опытный разработчик - это тот, кто обладает навыками как Front, так и Backend и он может работать начиная от баз данных и до исправления ошибок или других проблем с кодированием.

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

тест
тест

Цель этого шага — выяснить, работает ли получившийся продукт в соответствии с требованиями заказчика.

Так как канал всё же про тестирование, стоит остановиться здесь чуть больше.

Очевидно, что ключевой ролью тут является тестировщик (в любой роли: tester, QA engineer, QC engineer). Его задача - проверить продукт на соответствие требованиям. Заведенные баг-репорты (отчёты по "ошибкам", которые мы обсудим с вами чуть позже) он создаёт с целью воспроизведения дефекта ("ошибки") разработчиком. Если же у тестировщика возникает вопрос с интерпретацией требования, то он обращается к менеджеру проекта (который, по сути, является связующим звеном между владельцем продукта и командой).

6. Поддержка продукта (Maintenace)

Поддержка
Поддержка

Наконец, развертывание и обслуживание — это последний этап жизненного цикла разработки программного обеспечения (SDLC). Теперь пришло время запуска, что означает, что продукт готов к использованию в реальной среде всеми конечными пользователями продукта.

Кто же тут выступает в основной роли? Конечно - техническая поддержка.

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

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

Под конец хотелось бы явно уточнить: абсолютно ВСЕ роли на проекте участвуют на ВСЕХ этапах проекта, просто с разной степенью вовлеченности и с разными задачами.

В следующей статье мы перейдем к самому интересному - моделям жизненного цикла ПО. И поймём как это происходит на настоящих enterprise проектах (промышленных проектах).