Каковы альтернативы модели Водопад - PullRequest
6 голосов
/ 15 мая 2010

Не могли бы вы дать методологию, которая поможет устранить недостатки модели водопада?

Ответы [ 6 ]

16 голосов
/ 15 мая 2010

Проблема с водопадом состоит в том, что он состоит из монолитных ступеней, каждое здание на предыдущей ступени. Таким образом, код разрабатывается одним блоком после того, как вся система спроектирована, что, в свою очередь, произошло после того, как все требования были собраны и подписаны.

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

Правда заключается в том, что не так много клиентов хорошо разбираются в абстрактном мышлении, необходимом для создания работающей системы программного обеспечения. И слишком многим ИТ-специалистам не хватает опыта, необходимого для понимания бизнес-логики. Водопад отказывается принять эту правду.

Единственное честное требование - «Я это узнаю, когда увижу». Поэтому крайне важно как можно скорее получить работающее программное обеспечение перед реальными пользователями. Любая методология, которая фокусируется на поэтапной доставке рабочего программного обеспечения в короткие итерации, "устранит недостатки модели водопада".

Первоначально это было RAD или DSDM . Затем XP поднимите баннер. Теперь есть Agile и связанные с ними вещи, такие как Scrum и Kanban .

Так почему же люди настаивают на методе Водопада?

Существует распространенное мнение, что Agile - это просто прикрытие для ковбойских хакеров, чтобы избавиться от всего скучного процесса и заняться тем, что им нравится больше всего: написанием кода. Брэнд «Экстремальное программирование», безусловно, поощряет эту мысль, и, давайте будем честными, это не голословное утверждение. То есть некоторые программисты делают вид, что они проворны, как оправдание не планировать, не проектировать и не документировать. Это не отражает реальной практики Agile, которая требует такой же строгости, как и любая другая методология.

Кроме того, Agile требует от сотрудников заказчика гораздо больше времени, что многие организации не хотят принимать. Кроме того, люди, оплачивающие счет, могут не захотеть дать возможность своим младшим сотрудникам принимать решения. Существует важное различие между Customer и User .

Когда речь идет об аутсорсинге, модель водопада обеспечивает простую структуру для сопоставления результатов с поэтапными платежами. Действительно, договорный аспект может быть сильнее этого: в ЕС «Водопад» необходим для всех проектов стоимостью 100 млн. Евро или более.

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

последнее слово

Несмотря на свои недостатки, Водопад успешно реализовал множество проектов. Это потому, что тяжелая работа, способности и честность важнее, чем методология.

4 голосов
/ 15 мая 2010

Модель водопада была задокументирована в 1970 году доктором Уинстоном Ройсом в статье под названием «Управление разработкой больших программных систем». В основном излагаются его идеи по последовательному развитию. Его идея заключалась в том, что программное обеспечение может быть произведено аналогично автомобилю, где транспортное средство соединено в последовательную / линейную фазы.

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

Стоит отметить, что некоторые этапы модели водопада допускают «всплеск», при котором в период разработки достаточно времени, чтобы вернуться назад и внести небольшие изменения. Ограничения по времени, объем работ и бюджеты не позволяют вносить значительные изменения с помощью этой модели.

Модель водопада устарела, так как время идет, программные парадигмы сами меняются. Объектно-ориентированное программирование популярно, тогда оно было едва живым. Благодаря использованию модели водопада становится очевидным, что недостатки были обнаружены, и это привело к альтернативным методологиям развития.

Хорошо, теперь альтернативы. Инкрементная модель описана Алистером Кокберном (2008) как стратегия поэтапного планирования и планирования, в которой различные части разрабатываются в разное время или с разной скоростью и интегрируются по завершении этой конкретной части.

В основном инкрементный выглядит примерно так:

Analysis->Design->Code->Test
  Analysis->Design->Code->Test
  Analysis->Design->Code->Test

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

Итеративный , с другой стороны, позволяет переработать и переработать части системы, чтобы улучшить систему. Время отведено, чтобы учесть это. Итеративный не начинается с полной спецификации требований. Разработка осуществляется путем указания и реализации только части программного обеспечения. Программное обеспечение пересматривается с целью выявления дальнейших требований. Это скорее подход сверху вниз . Недостатки этой методологии - совместимость всех итераций. После утверждения каждой новой итерации разработчики могут использовать метод, известный как обратное проектирование, которое представляет собой процедуру систематического анализа и проверки, чтобы убедиться, что каждая новая итерация совместима с предыдущими. Основное преимущество постоянных итераций заключается в том, что клиент сохраняется в цикле и конечный продукт должен соответствовать требованиям.

Схема итерационного захода на посадку.

Другие методологии включают прототипирование. Эволюционный и Throwaway. Они также рассматриваются как более нисходящий подход. Оба процесса заимствованы из машиностроения. В машиностроении принято строить масштабные модели строящихся объектов. Построение моделей позволяет инженеру протестировать определенные аспекты проекта. Методология создания прототипов разработки программного обеспечения обеспечивает ту же идеологию. Прототипирование рассматривается не как отдельная, полная методология разработки, а скорее как подход к обработке отдельных частей более крупной, более традиционной методологии разработки.

Throwaway Prototyping - Throwaway Prototyping не сохраняет созданный прототип. В одноразовых прототипах нет никакого намерения превращать прототип в работающую систему. Вместо этого прототип разрабатывается быстро, чтобы продемонстрировать неясный аспект системы. Он также может быть разработан, чтобы помочь пользователям или клиентам выбирать между различными функциями или характеристиками интерфейса. После устранения любых проблем или неопределенностей прототип можно «выбросить», а изученные принципы использовать при проектировании и документировании фактического продукта.

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

Другие области, в которые следует обратить внимание, включают Agile-> SCRUM, экстремальное программирование, парное программирование и т. Д.

Пытался сделать это кратко, но люди пишут книги о таких вещах, и есть так много для обсуждения.

Может быть стоит взглянуть на: Инкрементный и итеративный

2 голосов
/ 24 ноября 2010

Альтернативой водопадному методу является «сделать это правильно».

Водопад, кажется, имеет смысл, если вы находитесь на конвейере завода. Но я никогда не видел, чтобы это работало как часть процесса проектирования ... и разработка программного обеспечения - ВСЕ процесс проектирования. Таким образом, метод водопада никогда не работает в том смысле, что он не способствует созданию высококачественного продукта, а скорее фокусируется на процессе. Процесс может быть отличным, но какой смысл, если продукт, который он производит, является второсортным?

0 голосов
/ 13 февраля 2017

Канбан и Скрам - две наиболее часто используемые альтернативы Водопаду. Я попытался дать хороший обзор и сравнение различных SDLC подходов .

Водопад сильно зависит от массивных монолитных фаз, как упомянуто APC. Это огромное слабое место, потому что попытка определить конечный продукт с самого начала - бесплодная попытка.

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

Scrum отлично подходит для оказания давления на команду и получения права собственности на билеты. Я обнаружил, что большинство мест шли с этим, но недостатком этого является то, что некоторые люди идут за борт с проведением собраний для всего. Встречи по планированию спринта, стартовые встречи по спринту, ежедневные встречи продолжительностью 1 час с участием более 20 человек, демонстрационные встречи, а затем, наконец, вскрытие.

Помните, что agile хороша только тогда, когда вы ее делаете, и вы можете легко утопить любую методологию, если будете безумно проводить неограниченные собрания, которые не приносят пользы. Держите его как можно худее, не беспокоясь.

0 голосов
/ 06 сентября 2014

Из головы я могу придумать, как смягчить недостатки модели водопада:

  • Пусть кодер сосредоточится на автоматизации самого процесса. Автоматизируйте переходы между этапами, чтобы изменения происходили более или менее автоматически.
  • Сделать процесс более двунаправленным. Одной из основных характеристик в модели водопада является то, что поток меняется сверху вниз. Это однонаправленный процесс, и это является частью проблемы.

Еще одна вещь, которая может помочь (как кто-то упомянул в предыдущем ответе), заключается в том, чтобы разработчик лучше понимал применяемую бизнес-логику и то, что хочет клиент, а также чтобы клиент получил знания о характеристиках процесса разработки.

0 голосов
/ 15 мая 2010
...