Подтвердить что ты не робот

Является ли частота выпуска единственной реальной разницей между Agile и Waterfall?

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

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

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

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

Но Водопад тоже делает это. Его просто так, что вместо обучения каждые 3-4 недели команда "Водопад" учится каждые 6 или 9 месяцев. Но дизайн Водопада все еще появляется. То есть, релиз 2 водопада будет отражать то, что было изучено в выпуске 1. Таким образом, процесс не отличается, его просто происходит с другой скоростью.

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

Есть ли какие-то другие примитивные отличия, которые мне не хватает - или это действительно просто частота?

4b9b3361

Ответ 1

Водопад

  • вы разрабатываете продукт
  • вы его создаете.
  • вы проверяете его
  • вы документируете его
  • вы выпускаете его, когда вы разработали все требования

Agile:

  • сначала вы создаете наиболее ценную функцию (или user story)
  • вы тестируете его (TDD;))
  • вы построили его
  • вы документируете его
  • вы повторяете процесс со следующей наиболее ценной функцией
  • вы можете отправить его в любое время

(после каждой завершенной вами функции или после периода времени (обычно называемого sprint или iteration))

Разница для меня довольно понятна.

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

Ответ 2

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

  • Команды водопада, как правило, строятся вокруг группы узких специализаций. Аналитики/архитекторы/дизайнеры/кодеры/тестеры, как правило, являются отдельными группами людей, работающих в одиночку. Гибкие команды работают вместе.

  • Процессы водопада зависят от большого количества документации и передачи обслуживания. Гибкие команды ориентированы на рабочий код/​​продукты.

  • Я бы не согласился с тем, что водопад фокусируется на сотрудничестве с клиентами. Существует одна точка контакта с небольшой группой общей команды разработчиков, часто только в начале процесса. Agile построен на непрерывном сотрудничестве на протяжении всего процесса разработки. Очень разные.

  • Процессы водопада основаны на идее, что вы можете полностью определить продукт и архитектуру до начала разработки. Гибкие процессы основаны на идее, что вы обнаруживаете продукт/архитектуру, когда идете.

Ответ 3

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

Agile - это не единое целое, а зонт для многих различных методологий.

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

Фактически, в XP порядок больше или меньше:

  • test (сначала TDD/тест)
  • код
  • дизайн (рефакторинг)
  • повторить и в конечном итоге выпустить

какой тип инвертирует большую часть последовательности.

И тест, код и дизайн выполняются в более тонкой степени, чем выпуск.

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

Но Водопад тоже делает это. Его просто так, что вместо обучения каждые 3-4 недели команда "Водопад" учится каждые 6 или 9 месяцев. Но дизайн Водопада все еще появляется. То есть, релиз 2 водопада будет отражать то, что было изучено в выпуске 1. Таким образом, процесс не отличается, его просто происходит с другой скоростью.

Это сильно зависит от практики. Как описано в DOD-STD-2167A, (раздел 4.1.1) модель водопада действительно позволяет фазам процесса разработки перекрываться и проходить (короче говоря, быть достаточно подвижным). Но большинство фактических практик пропустили это, и не было никакого обучения до конца проекта.

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

Снова зависит от практики. Я не вижу в упомянутой выше спецификации больше упоминания об ответственности клиента вообще, не говоря уже о непрерывности.

Как заметил Джерри Коффин в комментарии, "Водопад" действительно является соломенным, который спорил в пользу Agile (как и я сейчас использую его сейчас), но стоит посмотреть на этот документ и подумать о том, что он подразумевает и как оно было применено.

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

Контраст с agile - это не время, а изменение значений.

Как Agile Manifesto объявляет:

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

Лица и взаимодействия над процессами и инструментами

Рабочее программное обеспечение по полной документации

Сотрудничество с клиентами по заключению контрактов

Ответ на изменение в соответствии с планом

То есть, хотя в элементах есть значение справа, мы больше ценим элементы слева.

Любопытно, что этот оператор значений ничего не говорит о частоте доставки (хотя в следующем разделе "Принципы" ). Он делает, но меняет систему ценностей в сторону от планов, документов и контрактов и обратно туда, где они есть, и фактически предоставляет рабочее программное обеспечение.

Частая версия - это механизм для выполнения этих значений.

Если вы работали в "мини-водопадах", это было бы немного более гибким, чем водопад BDUF соломы. Но частота доставки, разумеется, не вся история.

Ответ 4

Одно из различий заключается в прозрачности: независимо от того, будут ли люди вне команды разработчиков во время цикла dev иметь какую-либо видимость в процессе, прогресс, препятствия и то, как будет выглядеть конечный результат.

Водопад не подразумевает прозрачность. Часто (хотя и не обязательно) это реализовано как "программисты входят в свою пещеру и появляются через несколько недель/месяцев с" готовым "продуктом". Бизнес-эксперты пишут спецификации вверх, и это может быть конец их участия - они могут быть недоступны, когда у программистов возникают вопросы во время реализации. Программисты могут не показывать каких-либо результатов никому до конца цикла.

Agile требует прозрачности - это часть основной ткани. Люди, не входящие в команду, будут (или, по крайней мере, могут) видеть, что делает команда. (Если нет, команда лжет о том, чтобы быть Agile.) Это могут быть ежедневные стендовые встречи Scrum или Big Visible Charts и информационные радиаторы, или демо в конце итерации. Требование XP состоит в том, чтобы Клиент принимал все бизнес-решения, вместо того чтобы оставлять программистов поцарапать свои головы и слепо выбирать вариант, когда требования не ясны. Это может быть тот факт, что тестеры - и Клиент - считаются частью команды, а не отдельными командами.

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

Ответ 5

Отметить,

Как вы указали, оба подхода разделяют "хорошие вещи", которые должны быть в каждом хорошем проекте. Например, возьмите эти два: ранняя обратная связь и прозрачность. Хотя это правда, что Agile имеет структуру, которая поощряет это, эти две "хорошие вещи" могут (и должны) быть в любом проекте водопада.

Однако я склонен (почтительно!) не соглашаться с идеей о том, что частота выпуска является единственной разницей. Одно существенное различие заключается в следующем:

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

Я так не думаю. В Agile вы пытаетесь сделать все это одновременно, с многодисциплинарной командой. Я говорю "попытка", потому что это не то, что можно легко сделать... но по крайней мере пытается помочь.

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

Только мои два цента...

Ответ 6

Мне очень нравится этот вопрос.

Я работал с плохими примерами массивных проектов водопада. Результатами исходных разработчиков были несколько наборов документов и одна база кода. После того, как документ высокого уровня был завершен, он был доставлен и больше не обновляется. Ditto SRS, Детальный дизайн и т.д. Существует документация, все из которой ненадежны и подозрительны.

С Agile есть код. Долгосрочные разработчики считали, что это самодокументировано, потому что они были в курсе проекта, когда он был написан. (Вы когда-нибудь проверяли свои собственные заметки? Они всегда имеют смысл для автора.) Я попытаюсь разглядеть архитектуру, глядя на 1500-2000 модулей. Точно так же пытается выяснить дизайн на высоком уровне. Я возьму обильные заметки. Возможно, даже вяжущие заполнены. Глядя на "самодокументирующий" код, я расскажу, что делается (в этом модуле), но не почему. О да, сотрудники, которые сотрудничали с разработчиками, получили повышение (или испугались) и больше не доступны.

Плохая проворная не лучше плохих водопадов. На самом деле, плохой проворный может быть хуже, чем плохой водопад. Лучше ли лучше, чем хороший водопад?

В манифесте ничего не говорится о документации. Настоящая опасность здесь заключается в том, что "гибкий" означает для многих разработчиков и клиентов оправдание быстрой дешевой героической модели. Как вы думаете, покупателю понравилось читать три толстых трехкольцовых связующих на высоком уровне дизайна? Мы все слышали в Computer Science 100, что большая часть стоимости программного обеспечения - это обслуживание, а не развитие. Неужели я ошибаюсь, думая, что аспект обслуживания полностью игнорируется в этом обсуждении?

Разница может заключаться в том, что современные клиенты не могут позволить себе не указывать "подвижные", потому что они боятся думать назад.