Может ли Agile-разработка программного обеспечения использоваться в проектах, определенных контрактом?

14

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

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

Если Agile Software Development принимает изменяющиеся требования, как вы узнаете, где она заканчивается? Как вы можете составить бюджет для проекта, когда конечный результат всегда меняется?

Является ли Agile Software Development скорее гибким процессом, чем гибким продуктом?

Verax
источник
это заканчивается, когда вам нужно доставить что-то, что работает, а не возиться. В этот момент вы должны начать навязывать структуру, планировать, устанавливать требования и сроки, и начинать работать, а не дурачиться.
jwenting
Каждая гибкая итерация приводит к работоспособному продукту, который клиент может использовать и узнать больше. Это продолжается до тех пор, пока они не будут удовлетворены, что часто происходит раньше, чем планировалось изначально. Это гарантирует, что продукт всегда работает, и учитывает тот факт, что программное обеспечение никогда не заканчивается, а развивается вечно или умирает. Просто выберите момент времени, когда вы считаете, что продукт достаточно хорош, и остановитесь на этом (пока).
Мартин Уикман,
@Martin Wickman: Я понимаю это, но проблема заключается в «доставляемом продукте, который может использовать клиент». Если это так, первая итерация может занять месяцы, потому что для некоторых проектов заказчик не может использовать неполное приложение. Я думаю, что для некоторых проектов сначала нужно определить завершенное, а затем разбить его на итерации и уточнять определение после каждой итерации. Но вы ДОЛЖНЫ ВСЕГДА иметь это определение.
Веракс
@Verax: проворный манифест был создан для управления изменениями. Если в вашем проекте нет изменений, то Agile не для вас. Конец истории.
Мартин Уикман
2
@Verax: Вы должны уточнить свой вопрос и добавить больше контекста к нему. Ваши комментарии показывают, что есть еще вопрос. Это также очевидно из подсчета голосов за ответ и того, что принятый ответ не связан с текстом вопроса (и даже говорит «из комментариев ОП ...»).
Мартин Уикман

Ответы:

7

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

Agile несовместим с разработкой программного обеспечения, которая определяется договором.

  • Контракты должны быть Хард, вы платите X, мы делаем Y. Вы хотите X + M, вы платите нам Y + (M * N)
  • Контракты ДОЛЖНЫ быть выполнимыми (т.е. не открытыми), иначе они не являются законными контактами. (Когда контакт задействован, вы должны пройти строгий процесс контроля изменений.)

Многие консалтинговые магазины претендуют на Agile, они лгут. Они просто говорят это, потому что Agile получил статус Buzz Word.

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

Идиоты
источник
Когда я узнаю больше об этом, я прихожу к тому же выводу. Ваше последнее предложение кажется абсолютно правильным. Раньше я работал на правительство, и моим заказчиком было агентство, в котором я работал, и программы нужно было обслуживать годами, пока их использовали сотрудники. Я вижу гибкую работу там. Сейчас я занимаюсь разработкой встраиваемых систем. Проект заканчивается, когда машина работает (все или ничего). Если машина частично работает, она не может быть продана - проект провалился.
Веракс
2
На самом деле консалтинговый магазин, в котором я работал пару лет назад, на самом деле написал статью, написанную гибким приверженцем, описывающую, как гибкую модель можно встроить в модель обслуживания с фиксированной ценой.
Маккотл
2
Я должен не согласиться с этим ответом. Причина в том, что если у вас есть контракт, который не является открытым, это означает, что вы не хотите управлять ползучестью области (что почти всегда происходит). Контракты, которые я привык видеть, начинаются с: вы платите X, а мы Y. Затем у них есть пункт, в котором говорится, что любое изменение сферы действия связано с дополнительной ценой. До тех пор, пока вы очень рано уведомляете о ползучести области (что требует дополнительных ресурсов и времени), более ранние клиенты могут реагировать на изменения (получение одобрений и бюджета от высшего руководства и т. Д.). Тогда сам процесс управления становится гибким.
Спойл
Это не является несовместимым, если договор заключается на обслуживание (написание кода), а не на продукт (готовое программное обеспечение). Agile позволяет оценить, что будет сделано, при каком бюджете, если требования изменятся, бюджет тоже должен измениться. Вы хотите другую функцию? Вы должны заключить контракт еще на 500 человеко-часов. Ползучесть функций - это также ползучесть цен, полностью удовлетворительная для разработчиков, и если заказчик готов заплатить, кто мы такие, чтобы сомневаться в этом?
SF.
2
Есть гибкие контракты , поэтому очевидно, что этот ответ неверен по определению.
Мартин Уикман
20

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

  • Вы потратили деньги, которые вы заложили в бюджет.
  • Вы истекли время, которое вы заложили в бюджет.
  • Вы больше не хотите ничего добавлять или изменять.
  • Следующая партия ваших самых приоритетных изменений не стоит того, что будет стоить.
Дейл Эмери
источник
5
1. Больше нет денег - Клиент потратил все свои деньги на неполный бесполезный продукт. 2. Нет больше времени - у клиента все еще есть неполный бесполезный продукт. 3. Нечего добавить - да, верно! 4. Не стоит - Заказчик просто разочаровался в проекте. --- Чего мне не хватает? Это не имеет смысла для меня.
Веракс
7
Для 1 и 2: если вы сначала делаете самые важные вещи, то, когда у вас заканчиваются деньги, у вас будут самые важные вещи, которые вы можете получить за эти деньги. Похоже на время. Я признаю, 3 редко. Для 4: Остановка не обязательно означает, что клиент просто сдался. Это может означать, что у них есть самое важное, что они хотели от этого, и теперь они предпочитают делать другие вещи со своими деньгами. Как вы решаете, когда закончить другие проекты? Какие бы критерии вы не использовали сейчас, они все еще доступны в гибких проектах.
Дейл Эмери
1
Дейл, спасибо за твои мысли. Я думаю, что это работает, только если клиент платит за каждую итерацию индивидуально и оценивает каждую итерацию как сам продукт. Я не понимаю, как это может работать хорошо для продуктов с фиксированной стоимостью или продуктов, которые требуют всего или ничего.
Веракс
5
@Verax: нет такой вещи как продукт, который требует "все или ничего". Всегда есть функции, которые просто «приятно иметь» и ошибки, которые скорее косметические, чем функциональные. Проект с фиксированной стоимостью будет успешным, если это все, что осталось, когда закончатся деньги. Гибкие методы пытаются максимизировать вероятность этого.
Майкл Боргвардт
1
Конечно, стоит изменить требования. Если вы создаете что-то за одну итерацию, а затем изменяете требования для этой вещи в следующей, это будет стоить того. Agile снижает стоимость. Это не устраняет это. Если у вас есть бюджет, вы должны учитывать его при принятии решения о добавлении новой функции или изменении существующей, зная, что вы всегда обмениваете одну на другую. Вы учитесь расставлять приоритеты и заново расставлять приоритеты, и вы изучаете последствия.
Дейл Эмери
14

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

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

mcottle
источник
5

Никогда, и в этом вся прелесть.

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

Не часто упоминаемая деловая особенность этой технологии, не так ли?

Научная фантастика
источник
2
Проекты «Водопад» также не полностью завершены, просто с большей вероятностью будут выполнены «забери или оставь» с отсутствующими важными функциями, что делает необходимым новый, дорогой проект.
Майкл Боргвардт
4

Здесь есть неправильное представление: Agile не поощряет изменения требований проекта. Вместо этого он допускает изменения, не теряя работы и не жертвуя важными областями развития.

Есть четыре фундаментальных ограничения для любого инженерного проекта; объем, стоимость, время и качество. Водопад предполагает, что они будут статичными. Это неверное предположение; один или несколько из них ВСЕГДА меняются. Ползучесть области, урезанные бюджеты и другие «неизвестные неизвестные» ВСЕГДА вмешиваются в проект, изменяя ограничения. Водопад не предвидит этого, поэтому, когда это происходит, проект меняется нежелательным образом; важные функции, которые еще не были добавлены, исчезают, или выполняются быстро, или нужно отодвигать релиз, или стоить надувные шары, поскольку премьер-министр подбрасывает деньги новым разработчикам, чтобы они помогли все сделать правильно.

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

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

Что касается определения конечных точек, вы правы; Agile проект МОЖЕТ продолжаться вечно. Однако, то же самое можно сказать и о традиционном SLDC; клиент часто возвращается с большим количеством денег и списком пожеланий обновлений. Разница в том, что нет четкой границы между «анализом», «дизайном», «разработкой» и «обслуживанием» при рассмотрении проекта в целом; все это происходит по кирпичику, спринт за спринтом. Если в какой-то момент владелец хочет назвать проект «выполнено», он может, и у него будет общая сумма «кирпичей», за которые он заплатил, в сплошной «стене»; он может быть не таким высоким или простираться так далеко, как планировалось изначально, но он прочно закреплен, выполняет свою работу и может быть добавлен позднее с минимальным сносом.

Keiths
источник
Извините, но «вместо этого он допускает изменения, не тратя впустую работу», - это огромная ошибка, которая используется, чтобы убедить руководство в том, насколько оно велико. Разве рефакторинг и / или перепроектирование системы, чтобы приспособиться к неожиданным изменениям, не считается потерей работы? В лагере водопада это происходит, очевидно, не в проворном лагере. Кроме того, если клиент хотел получить работу, которая занимает 2 недели, то не имеет значения, какая методология используется, люди могут дать хорошие оценки. Что клиент действительно хочет, так это как долго, прежде чем я получу полный продукт, где гибкость не лучше, чем другие методы оценки.
Данк
1
Кроме того, это звучит как хорошая вещь, которую владелец может назвать выполненной в любой момент, и то, что вы закончили, - это то, что он получает. IME, как правило, клиент хочет знать, что его икс-доллары предоставят определенный набор функций, прежде чем он потратит деньги. Я не вижу преимущества в том, что клиент потратил кучу денег и получил только половину ожидаемых функций. Я считаю, что это является провалом со стороны развивающихся компаний, даже если они, возможно, поставили то, что они называют работой ...
Данк
2
Что, если клиент заключил контракт на дом, но деньги закончились до того, как была установлена ​​крыша? Гибкий лагерь все равно назвал бы это успехом. Никто другой не будет; в частности заказчик.
Данк
1
Что касается оценки, команда оценивает, что они могут сделать в спринте, и это экстраполируется, чтобы создать график для всего проекта. Опять же, это помогает защитить как разработчиков, так и клиента. Вы можете указать в контракте все, что захотите, включая сумму и дату «не превышать». Это предметом переговоров. Agile по-прежнему помогает, очень быстро показывая обеим сторонам, возможны ли ограничения. Две недели спустя, если не будет похоже, что это будет сделано вовремя за деньги, команды могут быть добавлены, функции удалены, или график продлен.
KeithS
1
Что если бы он сделал то же самое в водопаде SLDC? Либо разработка остановится, и клиент может получить кодовую базу с серьезными пробелами в функциональности, либо в случае нехватки денег / времени оставшийся график будет забит в оставшееся время. Это ВСЕГДА жертвует качеством, и в конце такого проекта команда разработчиков поджаривается. Кроме того, происходит много перерасхода средств, потому что традиционный водопад не производит продукт, пока разработка не будет завершена; это ограничивает способность клиента говорить «это не то, что я хотел».
KeithS
1

Он заканчивается, как только все функции реализованы и все ошибки исправлены.

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

Фиксированная цена часть 1, что в этом плохого?

Фиксированная цена, часть 2, исправьте это с гибкой!

CharithJ
источник
Трудно понять, когда все ошибки исправлены.
Мартин Уикман,
Может быть, «когда все известные ошибки, которые стоит исправить, исправлены»?
Дэн Рэй
@CharithJ, ваши ссылки не работают. Они все еще доступны где-нибудь? Благодарю.
Твен
1

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

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

Брайан Гейхслер
источник
1
Сторонники Agile делают очень неправильное предположение, что в мире водопадов разработчики исчезают после подписания контракта, и о них больше никогда не слышат, пока продукт не появится. То, как это работает в реальной жизни, состоит в том, что существует достаточное количество контрольных точек и множество обзоров, в которых клиент может участвовать столько, сколько ему нравится. Если им не нравится направление или решения, они могут запросить изменения. К тому моменту, когда продукт будет доставлен, это должно быть то, что клиент хотел в той степени, в которой он решил участвовать. Agile не улучшит это для многих проектов.
Данк