В процессе создания программного обеспечения используются семь основных видов жизненных циклов. Типичный цикл разработки программного обеспечения называется «каскадным» и выглядит следующим образом.
01 | Подготовка | Сбор и обработка требований. Предварительное планирование этапов работ, сроков, ресурсов и стоимости. | |||
02 | Проектирование | Получение технических заданий, разработка спецификаций. Партнер получает документальное изложение своих требований и планы проведения работ. | |||
03 | Создание |
|
|||
04 | Поддержка |
|
Второй из наиболее распространенных — гибкий цикл разработки (Agile), позволяющий без негативных последствий изменять направление деятельности, вносить дополнительные задания, требовать детальной проработки узких мест.
Создание ПО с помощью Agile состоит из небольших итераций — спринтов, являющихся, по сути, мелкими подпроектами. По завершении отдельного спринта проводится анализ и переориентирование на следующие задачи. Количество спринтов может быть любым. Продолжительность спринта фиксируется до старта и составляет от одной до четырех недель. Гибкий цикл проиллюстрирован ниже.
01 | Планирование | Постановка целей спринта и выбор действий для их реализации, распределение имеющихся ресурсов. | |||
02 | Разработка | Практическое решение задач для достижения целей спринта. | |||
03 | Тестирование | Аккумулирование итоговой информации в целях контроля выполнения задач спринта. Анализ ошибок и причин отклонений от плана. Поиск путей исправления оплошностей. | |||
04 | Демонстрация | Представление заказчику готовой части ПО. | |||
05 | Внедрение | По требованию возможно использование ПО в качестве самостоятельного продукта. |
Применение гибкого цикла оправдано в крупных проектах, растянутых по времени, при постоянных изменениях требований пользователей; а также в других случаях, где невозможно точное планирование. Каскадный цикл подойдет для небольших проектов с четко определенными требованиями и при наличии специалистов нужной квалификации.
Степень риска при разработке ПО варьируется в зависимости от выбранного цикла. При гибком цикле выше вероятность возникновения неудачных архитектур, но и устранять ошибки проще. При каскадном цикле архитектурные погрешности обнаруживаются в конце проекта, а исправление недостатков значительно сложнее и дороже.
Гибкий цикл | Каскадный цикл | ||
Не требуется детальное ТЗ. | Необходимо детально проработанное ТЗ по ГОСТу. | ||
Договор оказания услуг. | Договор подряда. | ||
Оплачивается фактически потраченное время. | В стоимость работ закладывается запас на случай непредвиденных трудозатрат. | ||
На старте нет точного понимания бюджета, оценка примерная. | Точная стоимость и срок указываются в договоре. | ||
Начать разработку можно сразу после подписания договора. | Потребуется время на написание и согласование технического задания. | ||
Легко изменить то или иное требование к реализации, если они утратили актуальность или изменилось видение проекта. | Для изменения требований к реализации нужно подписать дополнительное соглашение. | ||
Стоимость проекта ниже. | Стоимость проекта выше. |
Работа на Agile осуществляется, как правило, за меньшую цену и с порционной выдачей готовых блоков. Каскадный цикл подразумевает фиксированный крупный платеж за конечный продукт, часто без демонстрации промежуточных результатов.
Выбор цикла зависит от особенностей проекта, являясь предметом и итогом обсуждения. Свяжитесь с нами — уже при первом знакомстве с задачей мы подберем методологию разработки и бесплатно предоставим оценку в течение нескольких дней.