Что такое каскадная модель?
Каскадная модель разработки представляет собой линейный метод разработки программного обеспечения, который выполняется последовательно. В отличие от других систем управления проектом, где задачи могут выполняться параллельно, каскад подразумевает, что каждый этап работы строго зависит от предыдущего. Такой метод разработки пользуется большим спросом среди ИТ–команд, так как существует уже достаточно продолжительное время.
Существует несколько основных этапов каскадной модели разработки, которые используются практически во всех случаях применения этого подхода:
Первоначальный этап, на котором определяются и фиксируются требования к программному продукту. Он включает в себя сбор данных о функциональности, производительности и прочих аспектах системы. Здесь важно обозначить ожидания от продукта, чтобы команда могла четко сформулировать конечную цель.
2. Проектирование.
На этом этапе происходит детальное техническое описание системы с учетом требований к продукту. Также осуществляется разработка архитектуры, определяются компоненты и создается прототип интерфейса.
3. Разработка.
После проведения всех подготовительных работ наступает этап, на котором программисты пишут код на основе технического описания системы. Процесс разработки может быть как индивидуальным, так и коллективным.
4. Тестирование.
Когда заканчивается разработка, проводятся тесты для проверки работоспособности системы и ее соответствия первоначальным требованиям. Если возникают ошибки или другие дефекты, то происходит возврат к предыдущим этапам, чтобы решить проблемы.
5. Внедрение и сопровождение.
Когда все ошибки исправлены и повторное тестирование показало положительные результаты, система готова к внедрению. Это может включать в себя такие этапы, как установка, настройка и обучение пользователей. Но даже после этого работа с продуктом не заканчивается, потому что дальше команда обеспечивает его сопровождение. Они занимаются исправлением ошибок, улучшают и добавляют функционал и прочее.
В каскадной модели существуют свои роли, которые имеют важное значение для разработки:
1. Заказчик.
Сам заказчик или его представитель определяет требования к продукту, а также предоставляет финансовые ресурсы для его реализации.
2. Аналитик.
Специалист, отвечающий за анализ требований заказчика. Он формулирует функциональные и нефункциональные требования к продукту для команды разработчиков и тестировщиков.
3. Архитектор.
Этот специалист на основе требований заказчика разрабатывает архитектуру системы и определяет структуру компонентов.
4. Программисты.
Команда программистов пишет код в соответствии с техническим описанием системы. Также они реализуют функциональность продукта и обеспечивают ее работоспособность.
5. Тестировщики.
Благодаря им удается выявить ошибки и неполадки в системе, которые затем возвращаются на прошлый этап для доработки.
Далее мы подробно рассмотрим главные недостатки каскадной системы, которые негативно влияют на качество работы продукта.
Недостаток 1: Жесткость и необходимость точной спецификации требований
Одним из недостатков каскадной модели является жесткость требований и необходимость точной спецификации продукта. Причина таких условий заключается в том, что требуется улучшить коммуникацию между различными участниками проекта.
Четко определенные и зафиксированные требования к продукту, помогают избежать недоразумений и неоднозначного прочтения условий между заказчиками и командой разработки. Кроме того, точная спецификация дает возможность определить границы проекта и создать четкое представление о том, каким должен быть конечный продукт.
Пример:
ИТ–компания занимается созданием интернет–магазина. Перед началом работ заказчик не предоставил точных требований к продукту, они были оставлены на уровне общих понятий. Это привело к тому, что команда по–своему интерпретировала понимание задачи и создала проект с учетом собственного опыта и предпочтений.
В результате заказчик остался недоволен полученным продуктом, поскольку это не соответствовало его ожиданиям. Пришлось назначить новые работы, чтобы внести изменения и привести интернет–магазин к нужному состоянию. На это потребовалось больше времени и дополнительный бюджет. В итоге готовый продукт попал в пользование к заказчику значительно позже срока.
Чтобы избежать этой проблемы, важно в самом начале провести встречу с заказчиком. Провести опрос, чтобы понять его потребности, требования и ожидания. Если не существует точных формулировок, то можно найти референсы или запросить их у клиента. Это позволит понять, каким должен быть конечный продукт и какие к нему ожидания.
Недостаток 2: Нет встроенной гибкости в случае изменения требований
Другим существенным недостатком каскадной модели является отсутствие встроенной гибкости при изменении требований или условий среды.
В прочих подходах к разработке и управлению проектами, если возникают новые требования от заказчиков или происходят изменения среды, то команда имеет возможность внедрить их в процессе. То есть им не нужно ждать окончания полного цикла разработки продукта, чтобы изменить интерфейс или функциональность.
Каскадная модель подразумевает последовательное выполнение работ, поэтому внедрение изменений происходит после завершения полного цикла. На это требуются дополнительные средства и ресурсы. Возможно, команде даже придется переработать код, чтобы, например, изменить функционал продукта в соответствии с запросами заказчика. Также могут пострадать архитектура и набор компонентов проекта.
По сути доработки являются ещё одним полноценным циклом разработки, только в укороченном формате. Хотя в некоторых случаях изменения могут вноситься достаточно долго, в особенности если это сложный и большой проект.
Если бы команда использовала Agile–методологии разработки и управления проекта, например, такие как Scrum или Kanban, то проблем с гибкостью и адаптивностью скорее всего не возникло бы. Данные подходы подразумевают наличие таких инструментов как доска и итерации.
Доска позволяет управлять задачами, определять их приоритетность и контролировать нагрузку команды. Итерация дает возможность разбивать рабочий процесс на короткие промежутки времени, в рамках которых выполняются определенные задачи. Поэтому, когда во время разработки заказчик вносит какие–то изменения в проект, то команда разработчиков может добавить их в следующую итерацию. В этом случае, когда продукт будет на завершающей стадии, то он уже будет с необходимыми изменениями.
Отсутствие гибкости при изменении требований снижает уровень конкурентоспособности компании. Им приходится работать в жестких рамках, когда вся работа выполняется последовательно. В таком случае внесение изменений является не частью основного процесса, а отдельным этапом после завершения разработки. Это в свою очередь приводит к переработкам, увеличению расходов и отсрочивает выход продукта на рынок.
Недостаток 3: Неэффективное использование времени и ресурсов
Ещё одним минусом каскадной модели является неэффективное использование времени и ресурсов. Эта проблема вытекает из другой, когда заказчик или другое заинтересованное лицо, не смогли точно определить требования к продукту.
Далее рассмотрим, какие последствия могут возникнуть из–за неправильного и неэффективного использования времени и ресурсов проекта.
Потеря прибыли.
Предположим, что команда столкнулась с проблемой некорректной и неполной формулировки требований к продукту. Несмотря на это, они приступили к работе, что привело к развитию других проблем.
Команда создала продукт, который не соответствовал запросам заказчика и пользователей. Поскольку все этапы работы происходят последовательно, то у разработчиков не было возможности сразу презентовать промежуточные результаты. Заказчик не видел явных проблем и ошибок до тех пор, пока проект не был доведен до конца. Продукт пришлось дорабатывать, на что потребовались дополнительные время и средства. Все это ведет к потери прибыли.
Расточительство ресурсов.
Если в процессе работы над проектом команда распределяет ресурсы неэффективно или использует слишком много ресурсов на одну задачу, то это может стать причиной лишних трат. В некоторых случаях не требуется привлечение целого штата сотрудников, достаточно участия одного специалиста.
Пример:
Представим, что компания решила доработать уже существующий продукт и добавить туда новый функционал. Вместо того, чтобы сократить команду до одного архитектора, разработчика и тестировщика, организация наняла полный штат специалистов. Они получали зарплату на протяжении всего проекта, хотя их вклад был минимальный и не требовал полного присутствия в процессах. Таким образом компания не только не увеличила свою прибыль от продукта, но и увеличила издержки.
Правильное планирование и управление ресурсами проекта дает возможность не только добиться высокого уровня производительности, но и улучшить качество продукта разработки.
Недостаток 4: Отсутствие готовности к тестированию на ранних этапах
Каскадный метод не подразумевает тестирования продукта на ранних стадиях. Пока один этап работы не будет завершен, нельзя приступить к следующему или вернуться назад, чтобы решить проблему или внести изменения. Это лишает команду возможности находить ошибки и дефекты проекта, которые могут стать критичными, если их не устранить своевременно.
В свою очередь это увеличивает продолжительность производственного цикла. Команде приходится проверять продукт не по частям, а полностью, что приводит к риску человеческого фактора. Тестировщик может не заметить ошибку, которая проявится в будущем и может стать критичной. Если бы тестирование проводилось в процессе разработки, то проблемы решались своевременно к завершению проекта. На выходе заказчик получил бы качественный продукт, в соответствии с его требованиями и ожиданиями.
Если команда использовала гибкий метод разработки и управления проектом, то большинство проблем удавалось бы решать сразу же. Agile–методология подразумевает тестирование продукта на каждом этапе разработки, что дает возможность его непрерывного совершенствования.
Кроме того, гибкий подход к разработке позволяет выстроить эффективную коммуникацию внутри команды. Каждый участник проекта вносит свой вклад на всех этапах работы над продуктом. Это выражается в возможности открыто вносить предложения или высказывать опасения по поводу каких–либо действий или решений.
Помимо этого, каждый спринт в гибкой методологии дает возможность получать обратную связь от заказчика или пользователей. Это позволяет создать продукт высокого качества, который в полной мере будет соответствовать требованиям, даже если они появляются в процессе разработки.
Все недостатки, которыми обладает каскадный метод, решаемы путем внедрения гибких технологий и инструментов. Регулярное взаимодействие с заказчиком позволяет сформировать наиболее точное представление о том, какие цели преследует проект и каким должен быть в конечном итоге продукт. Кроме того, благодаря гибким методологиям удается выстроить эффективную коммуникацию внутри команды, даже если она имеет большую численность и сложную структуру. Это в свою очередь позволяет добиться высокой производительности и качества продукта.