- Предназначение
- Требования
- Продукты
- Заказная разработка
- Медиацентр
- Обучение
- Партнеры
- О компании
- Контакты
Львиная доля IT-проектов сегодня попросту не достигает поставленных целей и зачастую проваливается вскоре после запуска.
Причем причина обычно кроется даже не столько в низкой квалификации программистов, сколько в банальном отсутствии системного подхода. Начинающие команды нередко путают понятия «написать код» и «создать IT-продукт», бросаясь в разработку без четкого понимания задачи и потребностей рынка.
Прежде чем говорить о стадиях разработки программного обеспечения, необходимо разграничить то, что часто путают – проект и продукт.
IT-продукт – это любой программный продукт, который закрывает конкретные потребности пользователей и обеспечивает решение бизнес-задач заказчика на постоянной основе.
Примеры IT-продуктов:
Главное отличие продукта от услуги или проекта в том, что его «жизнь» не заканчивается с момента продажи или передачи заказчику. IT-продукт развивается, обновляется и масштабируется, пока приносит пользу.
Также стоит сказать, что любой продукт начинается с идеи. Иногда она рождается спонтанно, но чаще всего является результатом системного анализа.
IT-проект – это создание той или иной ценности, того же продукта, в рамках установленных сроков, бюджета и требований. Проект всегда имеет границы, например, утвержденный бюджет, выделенную команду, техническое задание и дедлайн. Он заканчивается аккурат в момент сдачи и приемки работы.
Примеры IT-проектов:
BPM-система внедряется в компании впервые и представляет собой IT-проект «внедрения BPM», а проживает свой жизненный цикл и поддерживается в компании в течении многих лет и даже десятилетий (IT-проект). IT-проект помогает создавать и улучшать продукт, но сам по себе не является конечным решением для пользователя.
Представим ключевые различия продукта и проекта в виде таблицы:
|
Критерий |
IT-проект |
IT-продукт |
|
Цель |
Реализовать заранее согласованный объем работ |
Создавать и развивать ценность для пользователей и бизнеса |
|
Срок |
Ограничен: есть четкое начало и конец (срок сдачи) |
Финальной даты нет, работа идет постоянно |
|
Требования и изменения |
Требования фиксируются на старте в четком ТЗ, изменения нежелательны |
Требования могут меняться после получения новых вводных или обратной связи от пользователей. Изменения – естественная часть процесса создания продукта |
|
Результат |
Сданный заказчику ожидаемый результат, например, готовое мобильное приложение |
«Живой» продукт, который постоянно развивается (например, в приложении добавляются разделы, расширяется функционал, обновляется дизайн) |
Жизненный цикл IT‑продукта (IT Product Lifecycle) – это полный путь продукта от идеи до вывода из эксплуатации. Он охватывает не только цикл разработки, но и цикл его рыночного существования, поддержки, доработки модулей и т.д.
Цикл разработки включает основные этапы создания и улучшения программного обеспечения, причем акцент делается на итеративность и пользовательскую ценность.
Стадии жизненного цикла IT-продукта выглядят так:
Рассмотрим этапы разработки IT-продукта. Сценарий типичный, но в отдельных случаях команда может возвращаться на предыдущие этапы разработки, например, для исправления ошибок.
Здесь начинается цикл разработки IT-продукта. На этой стадии команда отвечает, пожалуй, на главный вопрос: что мы вообще делаем и зачем.
Процесс формирования модели продукта – это начальная фаза, где только-только формируется концепция. В рамках этого этапа осуществляется анализ рынка и конкурентов, собираются и формализуются требования к IT-продукту.
Цель этой стадии разработки – определить ценности и связующие будущего решения.
Воркфлоу в контексте исследования обычно выглядит следующим образом:
На основе утвержденной концепции создается план реализации продукта. Чем этот план детальнее – тем лучше.
Разрабатывается общая структура системы, выбирается технологический стек, продумывается взаимодействие компонентов. Параллельно UX/UI-дизайнеры проектируют так называемые «пользовательские пути» и интерфейс, делая продукты информационных технологий как можно более удобными и понятными.
Аналогично с исследовательским этапом, в проектировании также есть отработанная схема:
Это фаза непосредственной разработки IT-продукта.
Команда программистов пишет код, реализуя весь запланированный функционал, зачастую – посредством инкрементальной модели. Это такой подход, при котором продукт создается поэтапно, через последовательное добавление функциональных частей (и каждый раз добавляется немного больше) – до тех пор, пока процесс не будет полностью завершен.
Говоря о моделях разработки, стоит упомянуть Waterfall и Agile. Waterfall – это про строгий план: здесь четкие и неизменные условия, жесткий дедлайн и подробная документация. Agile выбирают, если важна гибкость: исполнители создают небольшие части продукта, показывают заказчику, учитывают обратную связь, при необходимости вносят корректировки и двигаются дальше.
Процесс разработки выглядит так:
Контроль качества – неотъемлемая составляющая цикла разработки продукта.
QA-инженеры (тестировщики) на этом этапе разработки ПО проверяют продукт на всех уровнях: от работоспособности отдельных функций (это называется модульным тестированием) до их совместной работы (а это – интеграционным тестированием) и удобства использования.
Виды тестов разнообразны, но всех их объединяет одна цель – убедиться, что в разработке все идет именно так, как было задумано, и на выходе пользователь получит стабильное решение.
Тестирование выглядит по-разному. Однако чем больше подходов оно в себя включает, тем лучше. Среди наиболее значимых можно выделить:
Это финальный этап разработки IT‑продукта, когда он становится доступным пользователям. Готовый код переносят из тестовой среды в рабочую, настраивают все компоненты – базы данных, интеграции с другими сервисами, системы мониторинга и оповещения об ошибках. Команда проверяет, насколько стабильно продукт работает в реальных условиях.
Важная часть этого процесса – развертывание (deployment): установка и настройка ПО, чтобы оно заработало «в бою». Параллельно готовят инструкции и обучают техподдержку, которая будет помогать пользователям.
Одновременно идет запуск продукта на рынок (go‑to‑market): выпускают рекламу, анонсируют продукт в соцсетях и СМИ, открывают регистрацию для доступа к сервису. Затем собирают первые отзывы и ключевые метрики: сколько людей и как пользуются продуктом, с какими сложностями сталкиваются.
CI/CD помогает автоматизировать сборку, тестирование и доставку кода: изменения быстро и безопасно попадают в рабочую среду без ручной обработки. DevOps обеспечивает слаженную работу разработчиков и инженеров – они совместно следят за стабильностью продукта и оперативно устраняют неполадки.
Цель этапа – сделать так, чтобы продукт стабильно работал и был удобен для пользователей с первого дня.
Релиз – это не финал, скорее, это новая точка отсчета.
Начинается сбор обратной связи и анализ поведения продукта с помощью различных инструментов аналитики. На основе этих данных планируется дальнейшее развитие: исправление ошибок, улучшение интерфейса, добавление новых функций и масштабирование инфраструктуры под растущую нагрузку.
Моделей в продуктовом программировании много. Выбор зависит от специфики проекта, готовности к изменениям в процессе и требований к дедлайну.
Waterfall (или каскадная модель). Логика в том, что команда движется строго последовательно: завершили этап планирования – перешли к проектированию, затем к разработке, потом к тестированию и только в самом конце – к сдаче проекта. Движение здесь возможно только вперед. Вернуться и переделать какой-то этап «на ходу» либо невозможно, либо стоит огромных денег и времени. Поэтому каскадная модель больше подходит для проектов, где требования кристально ясны с самого начала и не изменятся в процессе. Эту модель любят в государственных и банковских структурах.
Инкрементальная модель. Здесь продукт создают и выпускают поэтапно: небольшими функциональными частями (инкрементами). Каждый инкремент – уже работоспособное решение, которое может использоваться самостоятельно, но со временем дополняется новыми функциями. Так можно получать внятную обратную связь от заказчика или пользователей на ранних этапах и вносить коррективы. Этот подход хорошо показывает себя в условиях жесткой конкуренции, когда продукт рынку нужен «еще вчера».
V-модель. По своей схематике она напоминает букву V: команда планомерно спускается вниз по этапам разработки нового продукта – от требований к архитектуре и от архитектуры к проектированию. А затем поднимается вверх, аккурат по этапам тестирования. Это сильно похоже на «каскад», но тем с отличием, что тестирование не откладывается на потом. Параллельно с тем, как разработчики пишут требования к системе, тестировщики готовят сценарии проверок этих требований. Так ловят ошибки на самых ранних подходах к разработке.
Есть и так называемые гибкие (они же Agile) методологии разработки IT-продуктов и информационных систем. Идея в том, что продукт можно улучшать на любых этапах разработки, учитывая обратную связь и меняющиеся условия рынка. В приоритете – качество решения и удовлетворенность заказчика.
Среди Agile-методов явно выделяются следующие:
Создание программного обеспечения имеет ряд спецификаций, отличающих его, например, от строительства дома или производства автомобилей. Рассмотрим эти отличия:
Успех проекта зависит не только от процессов, но и от людей в нем участвующих.
В команде разработки IT-проекта каждый играет свою роль:
В процессе разработки может возникнуть немало ошибок. На перечисление всех уйдет не одна и не две статьи аналогичного формата. Потому мы пробежимся лишь по самым типовым (но от того не менее болезненным).
Отсутствие четких требований на старте разработки IT-продукта – это заведомо проигрышный вариант. Команда начинает работу без ясного понимания целей и задач. Заказчик не может четко сформулировать свои ожидания, а разработчики не задают нужные вопросы. В результате продукт не соответствует реальным потребностям – приходится переделывать и переплачивать.
Старт разработки без подробного проектирования общей структуры продукта – мероприятие рискованное. Со временем система становится запутанной, ее сложно поддерживать и масштабировать – накапливается технический «долг».
Команда действует без четкого плана: не понимает, для кого создает продукт, какую проблему он должен решать и как будет развиваться. В результате ресурсы тратятся впустую – разрабатываются ненужные функции, а важные задачи остаются без внимания.
Без стратегии сложно продвигать решение на рынке – непонятно, кому и как его продавать. В результате продукт рискует «провалиться»: он не оправдывает ожиданий бизнеса, не находит отклика у аудитории и не окупает вложенных средств.
Без аналитики (или аналитики недостаточного уровня) нельзя создать качественный продукт. Без анализа поведения аудитории невозможно понять, какие функции продукта действительно нужны, а какие избыточны. Это ведет к созданию решений, которые не закрывают реальные потребности пользователей. В итоге продукт проигрывает конкурентам, его просто не покупает.
Компания теряет время и деньги на доработку и исправление ошибок, а ведь их можно было предотвратить с помощью своевременного анализа.
Непонимание разницы между проектом и продуктом может привести к выпуску попросту невостребованного ПО, «замораживанию» его развития после релиза, а также смещению фокуса на сроки, а не на ценности для пользователя. IT-проект – разовая задача с четкими сроками и бюджетом, а продукт должен жить долго и постоянно развиваться в соответствии с новыми требованиями рынка. Из‑за нечеткости целей никто не занимается улучшением решения, сбором обратной связи и исправлением проблем. В результате продукт быстро устаревает и перестает отвечать реальным запросам пользователей.
Продуктовая разработка в IT – это сложный и многогранный процесс, который выходит далеко за рамки простого написания кода. Этот процесс включаюет в себя анализ рынка, проектирование, разработку, контроль качества и, конечно же, непрерывное развитие на основе обратной связи. Успех во многом зависит от понимания этапов разработки продукта, выбора правильной модели и работы команды.
Понимание, чем отличается IT-проект от IT-продукта, какие стадии проходит идея на пути к пользователю и какие риски подстерегают команду, позволяет выстроить управляемый бизнес-процесс, который ведет к созданию востребованного и прибыльного решения.