Чи є життєздатною альтернативою гнучка методологія розвитку?


47

Дві переважаючі методології розробки програмного забезпечення - водоспад і спритний. Обговорюючи ці два, часто багато уваги приділяється окремим практикам, які їх вирізняють (парне програмування, TDD і т.д. проти функціональних характеристик, великий дизайн на передній панелі тощо).

Але реальні відмінності набагато глибші в тому, що ці практики виходять з філософії.

Водоспад каже: Зміни коштують дорого, тому його слід мінімізувати.
Agile каже: Зміни неминучі, тому робіть зміни дешевими.

Моє запитання: незалежно від того, що ви думаєте про TDD або функціональні характеристики, чи реально методологія розвитку водоспаду?

Хтось насправді вважає, що мінімізація змін у програмному забезпеченні є життєздатним варіантом для тих, хто хоче поставити цінне програмне забезпечення? Або справді виникає питання про те, які види практики найкраще працюють у наших ситуаціях для управління неминучими змінами?


1
цікаве запитання. з нетерпінням чекаю на відповіді.
DevSolo


3
@FarmBoy - Добре запитання. Я сприймаю спритну філософію дещо інакше. Я б написав це як "Agile каже: Зміни неминучі, тому зробіть дешевим визначення вартості змін". Зміни все ще можуть бути дуже дорогими, але по-спритному це можна зрозуміти швидко та дешево, щоб ми завжди знали вартість змін. Фразуючи це по-іншому, змушує людей думати, що оскільки вони роблять спритні зміни, це буде дешево. Деякі зміни коштують багато, незалежно від того, який процес.
Майк другий

1
@Yannis Rizos: чому ви закриваєте це цікаве питання самостійно, без жодного голосування громади?

1
@ Pierre303 через це питання, яке тут обговорювало обговорення .
Рятал

Відповіді:


59

Звичайно водоспад життєздатний. Це принесло нас на Місяць!

І ось тут розмовляє спритний тренер!

Якщо ви не зможете чітко визначити проблеми, пов'язані з керуванням своїми проектами, немає поважних причин для зміни.

Як альтернатива методології Agile і Waterfall я запропоную ВАШУ методологію . Адаптований під ваш конкретний бізнес, вашу конкретну команду, вашу продукцію, спосіб роботи, культуру вашої компанії ... Ось чому Scrum називають простою основою замість методології.

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


10
+1 про ВАШУ методологію, наступний тренер Agile, який каже мені, що SCRUM - це єдиний спосіб отримати завантаження задньої частини;)
Martijn Verburg

1
@karianna: Я роблю спеціально SCRUM, але іноді це просто не підходить. З іншого боку, я також бачив команду, яка намагається продати SCRUM своїм начальникам, думаючи, що це вирішить їхню проблему. Вони не змогли, оскільки проблема полягала не в їхніх начальниках чи їхніх прем'єр-міністрах. Єдиного правила немає. Кожен випадок своє рішення. І так, більшість організаційних проблем можна вирішити спритними прийомами, але спритний - це не срібна куля.

5
Не тільки місяць. Космічний човник мав ~ 1М рядків коду С у своїх вбудованих системах. За ~ 30 років у них було лише 2 помилки, які встигали в виробничі будівлі.
Ден Нелі

2
Водоспад також вбив перших трьох космонавтів. Це наполягання на використанні цієї програми Аполлона як дитини-постер для Водоспаду в кращому випадку невідоме. Водоспад також вважається відповідальним за те, що обидві програми є повноцінними фінансовими витівками, і Шаттл є надмірним інженером, тендітним, дорогим "космічним ферарі", коли оригінальна специфіка була для "космічної вантажівки". Я впевнений, що SpaceX не погодиться з водоспадом.

4
@DanNeely високий рівень якості програмного забезпечення космічного човника був недешевим. Мабуть, ціна була в розмірі 1000 доларів за рядок коду.

21

По-перше, я не погоджуюся з вашими твердженнями:

Водоспад каже: Зміни коштують дорого, тому його слід мінімізувати.
Agile каже: Зміни неминучі, тому робіть зміни дешевими.

Моє тлумачення:

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

Найкращою реалізацією "водоспаду", яку я коли-небудь бачив, був величезний інтеграційний проект із дуже великим фінансовим замовником, і було залучено близько 40+ підпроектів. Пакет настільних ПК та веб-сайтів, який ми постачали, складав лише 1 із 40 підпроектів. Хоча я думав, що вони надто сильно перекидають гроші інших людей, вони збирали свої речі разом і тримали 40+ різних кораблів, всі рухалися разом у формі. Проект реалізовувався в заплановану дату (ціль рухалася один раз під час проекту), і, хоча я думав, що вони могли це зробити більш сумлінно і спритно, це було зроблено вчасно та на специфікацію. Графік вечора в прямому ефірі становив близько 100 сторінок, і близько 40 з цих сторінок були контактними даними про надзвичайну паніку для всіх людей, що займаються. Я був дуже вражений цим клієнтом.

Або ви можете зробити все, що ми робимо, і це зробити, і зробити все, що є останнім звітом про скаргу / помилку, і закликати це спритно.


8
Відповідно до Agile Dilbert
Пітер К.

11
Це більше схоже на "Водоспад каже: Клієнт не знає, чого хоче, тому давайте сісти, поговоримо над ним і домовляємось про те, що вони хочуть, перш ніж ми почнемо його хакерствувати" ...
scrwtp

+1: Дуже гарна відповідь. Я думаю, що у спритної спільноти є одна основна проблема: спритний добре в певних контекстах для певних класів проектів та замовників, але вони не бачать, що є проекти, в яких вимоги не змінюються, тому швидкі та структурованіші підходи є кращим вибором . Я думаю, що спритна спільнота повинна намагатися реалістично визначити сфери, в яких їхній підхід є кращим вибором (я думаю, такі сфери існують), а не намагатися просунути це як загальне рішення, оскільки це не так.
Джорджо

6
@scrwtp - і Agile більше схожий на "Мій клієнт не знає, чого вони хочуть, і не може / не буде говорити і думати про це, і вони міняють свою думку кожні 5 хвилин. Мені потрібно щось штовхати в їх обличчя" щоб отримати будь-які змістовні відповіді ". Ого. Це звучить справді прикро, коли я записую це.
Майкл Коне

1
@scrwtp: Я думаю, що питання мільйона доларів полягає в тому: це "віра", що ти можеш "сісти, поговорити і поговорити"? Відповідь: це залежить, правда? Це залежить від ряду змінних: наскільки великий проект? Ми навіть знаємо, наскільки вона велика? Скільки часу клієнтам доводиться «сідати» з нами? Ми десятиліттями намагалися пов’язати розробку програмного забезпечення з будівництвом, що майже на 100% відповідає вимогам. Розробка програмного забезпечення знаходиться десь посередині між "повністю реакційним" та "100% рецептурним". У більшості магазинів це ближче до "цілком реакційного", отже, спритного прийняття.
Calphool

21

Ви починаєте з того, що говорите:

Дві переважаючі філософії розробки програмного забезпечення - водоспад і спритний.

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

Я з великим успіхом використовую OPEN / Metis та його варіанти вже більше 10 років. Це, безумовно, не спритний, і точно не водоспад. Тисячі розробників створюють надзвичайно складне програмне забезпечення для літальних апаратів, критично важливих для життя систем, банківських операцій тощо, використовуючи щоденні неглибкі методи.

Так, так, звичайно, є життєздатна альтернатива спритному.


6
Я не в змозі швидко зрозуміти, що таке OPEN / Metis - це посилання. (Зазвичай вам не потрібно завантажувати методологію.) Моє запитання: що це за філософія, особливо в роботі зі змінами? Чи намагається мінімізувати зміни або зменшити вартість змін? Майте на увазі, що моє запитання стосувалося гнучкої філософії, а не про спритних практик.
Ерік Вілсон

OPEN / Metis має ітераційний життєвий цикл, який поступово будує системи. Зміна визнається як щось, що відбувається не тільки, але і є великим, коли воно відбувається, оскільки сама мета розвитку інформаційної системи полягає в здійсненні певних змін. Однак вартість змін контролюється та управляється за допомогою відповідного життєвого циклу та пов'язаних з ними практик.
CesarGon

1
Щодо вашого зауваження про "завантаження методологій", ну ... ви не завантажуєте методології, я згоден. Ви завантажуєте документи, що описують методології. Інакше як ти дізнаєшся про них? Подивіться на безліч книг, які описують XP, Scrum тощо.
CesarGon


10

Так, різні методи розробки програмного забезпечення є життєздатними залежно від вашої проблемної області. Це "Коні на курси".

Наприклад, ви пишете програмне забезпечення для управління ядерною електростанцією або для керування космічним човником НАСА. Такий тип проблемних областей, ймовірно, краще підходить для водоспаду (або навіть суворішого) підходу, ви хочете, якщо можливо, розібратися з усіма проблемами наперед (або БУМ!).

Побудова останнього веб-інтерфейсу 2.0 / 3.0 / buzzy маркетингового інтерфейсу? Agile - це набагато кращий шлях (вам потрібні швидкі відгуки та зміни).

Є те, що я б назвав принципами майстерності програмного забезпечення, які все ще можна застосувати незалежно від методології, наприклад:

  • Контроль джерела
  • будувати та CI
  • парне програмування
  • TDD
  • Я даю ^% $$ &

і більше.

Що б ви не робили, не слухайте завзяття по обидва боки рівняння, робіть те, що підходить вам, вашій команді та вашому проблемному домену.


Водоспад працює, якщо ви можете собі це дозволити. Хтось вище стверджував, що вартість програмного забезпечення НАСА для місячних становила приблизно 1000 доларів за рядок коду. Більшість магазинів потребує щось на зразок 1–10 доларів США за рядок коду, а спритний варіант краще для подібних ситуацій. Однак я не претендую на те, що спритний забезпечує загальну якість. Це в основному зводиться до того, чи можете ви дозволити собі розміщувати багато грошей, щоб бути впевненим у правильності програмного забезпечення або дешевше розібратися в рішенні, як тільки ви дізнаєтесь, що програмне забезпечення не є правильним.
Мікко Ранталайнен

2

Проблема випливає із складності програмного забезпечення. Водоспад чудово підходить для таких речей, як будівництво мостів та мощення доріг, оскільки фізика просто ніколи не змінюється. Звичайно, в якийсь момент ми розробимо новий асфальт, але це не змінить спосіб побудови доріг. Сталь в підвісці мосту або потрібного розміру, або її немає. Ви не можете зірвати або заглушити справжній будівельний проект, як це можливо, за допомогою програмного забезпечення.

Зміни програмного забезпечення. Програмне забезпечення швидко змінюється. Закон Мура говорить, що кількість транзисторів на мікросхемі подвоюється кожні 18-24 місяці. У результаті, кількість рядків коду в програмі також подвоюється. Складність між цими рядками коду, таким чином, збільшується з великимO чимось на зразок 2 ^ (2t).

Програмне забезпечення швидко змінюється, а складність з ним зростає експоненціально.

Контролюючи вартість програмного забезпечення, ви хочете контролювати експоненціальні фактори, а не лише мультиплікативні або аддитивні. Зміна коду збільшує складність (і стає експоненціально складнішою у міру просування проекту) експоненціально.

Зміна є неминучим. Сама природа програмування поширює мову класами та спеціальними методами, змінюючи тим самим мову. Ви не можете цього зробити в будь-якому іншому вигляді інженерної дисципліни (як, наприклад, будівництво доріг. Ви не винаходите нову бруківку лише для того, щоб прокласти дорогу в Канзасі над Каліфорнією).

Agile метод також дає вам платформу для обробки майбутніх версій та виправлень помилок. У Alredy є інструменти управління, процеси, навчені співробітники для розробки програмного забезпечення. За допомогою методу водоспаду вам потрібно буде перекваліфікувати свою команду для вирішення навіть незначних помилок.

все одно, мої 2 копійки.


2
Існує маса аспектів розробки програмного забезпечення, настільки ж абсолютних, як і закони фізики. Agile - це інструмент подібно до водоспаду чи інших методологій, і, як розміщують інші люди, існує багато ділових випадків, коли це не має сенсу. Я був би здивований, якби побачив вас у черзі, щоб сісти на літак, де Боїнг сказав, що вони перебувають в середині спритного процесу в програмному забезпеченні управління польотом, і їм потрібні клієнти, щоб переглядати, чи літак не перекинеться в пагорбі ні причина.
Hounshell

І тільки дробовик кілька отворів в ваших міркуваннях є дорога конструкції проектується прямо зараз , що було б доцільно для дороги між Канзасом і Каліфорнією, але не між Нью - Йорком і Бостоном. І нові техніки поводження з асфальтом постійно виходять.
Hounshell

2
І нарешті, ви говорите: "За допомогою методу водоспаду вам потрібно буде перекваліфікувати свою команду, щоб обробляти навіть незначні виправлення помилок". Це просто невідомо про те, як працює процес водоспаду. Ви повинні спробувати хороший магазин водоспаду, перш ніж зрозуміти, наскільки це невідповідно кожному сценарію розробки програмного забезпечення.
Hounshell

1
Привіт, Стефане, не всі вимоги до програмного забезпечення постійно змінюються.
Пол Натан

1
Бізнес завжди змінюється ; бізнес, який не змінюється і не адаптується, - це бізнес, який вмирає. Час - це константа , яка не взаємодіє зі змінами добре. Система з філософією, яка визнає зміну, як очікується, може змінити зміну, інакше Час повинен прийняти зміни, і це незмінна константа!

2

Щоб відповісти на питання, чи існує життєздатна альтернатива, можливо, для програмного забезпечення - чи ні, принаймні в загальному випадку. Я думаю, що це зводиться до природи програмного забезпечення. Програмне забезпечення, будучи інформацією, може дублюватися безкоштовно. На відміну від мосту чи будинку. Це означає, що на практиці я міг би добре зайнятися будівництвом будинку та працювати у відносно простому домі. У який момент чому б не застосувати підхід одним ударом?

Але оскільки програмне забезпечення має нульові витрати на дублювання, чому б ти коли-небудь робив те саме? Програмне забезпечення віддає виробництву. Отже, якщо все програмне забезпечення - це створення нового продукту, то ми завжди працюємо в складній галузі, де певною мірою ми не знаємо, що робимо. Або дорого знати спереду, і це дешевше з'ясувати, роблячи це. У складній, ризикованій галузі я хотів би спробувати експерименти, збільшити та повторити.

Атомні електростанції та електропровідні системи часто наводяться як приклади програмного забезпечення, яке ви хочете зробити водоспадом. Але хіба система авіоніки човника не розвивалася ітераційно? Як працювали канадські та американські системи управління повітряним рухом?

І якщо OPEN / Metis є ітераційним та поступовим, то для мене це здається, що вона має спритну філософію, навіть якщо вона не асоціюється з іншими звичними спритними методами.


2
Тож тепер спритний намагається взяти кредит на ітеративний та поступовий? Не забувайте, що ітеративні та поступові були частинами розвитку водоспадів CORE з мого початку розвитку в 92 році.
Данк

1

Метод Водоспаду, безумовно, життєздатний і такий же філософськи, як і будь-який інший підхід. Пам’ятайте, що Водоспад існує набагато довше, ніж Agile, але зауважте, що це не аргумент, щоб стверджувати, що одна методологія краща за іншу.

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

Порівняння Agile та будь-якої методології є помилковим. Agile - це не методологія, це філософія, або, можливо, було б краще сказати, що це парасольовий термін, який представляє інший спосіб поглянути на те, як ви займаєтесь розробкою програмного забезпечення. Методологія - це лише інструмент, і як така її цінність завжди буде меншою, ніж індивіди та взаємодії, які лежать в основі того, що означає бути спритним .

Хтось насправді вважає, що мінімізація змін у програмному забезпеченні є життєздатним варіантом для тих, хто хоче поставити цінне програмне забезпечення?

Кожна можливість мінімізувати зміни цінна як для розробника, так і для замовника. Зміни можуть спричинити ковзання розкладу або залишити функції, щоб відповідати розкладу. Це як ви управляєте наслідками змін, які впливають на цінність ваших проектів.

Або справді виникає питання про те, які види практики найкраще працюють у наших ситуаціях для управління неминучими змінами?

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

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

Дійсно сказати "Ок, тепер ми спритні", і зовсім інше - насправді жити і працювати за філософією, що Agile є. Якщо ви використовуєте Водоспад, Інкрементальний, Спіраль, SCRUM, XP, FDD або будь-який інший метод, ви в основному Agile, де цінуєте:

  • Індивіди та взаємодія над процесами та інструментами
  • Працює програмне забезпечення над всеосяжною документацією
  • Співпраця з клієнтами щодо укладання договорів
  • Відповідаючи на зміни протягом наступного плану

і де ви разом переносите свої інструменти, метод та досвід, щоб успішно застосувати ці значення.


2
Ого. Тут просто так багато дивних речей. Водоспад життєздатний на основі того, що він довший? Водоспад виправданий на основі використання в оборонних контрактах? Чи є кожна можливість мінімізувати зміни дійсно в інтересах замовника, чи це призводить до того, щоб досягти того, що він вважав, що хоче, а не того, що він насправді хотів? Оскільки ви, здається, переймаєтесь цим, я намагався зрозуміти, звідки ви родом, але чогось мені не вистачає.
Ерік Вілсон

1
@EricWilson Водоспад існував довше і успішно використовувався задовго до того, як обговорювалася філософія Agile. Він життєздатний, оскільки він існує і при правильному застосуванні працює для тих, хто бажає ним користуватися. Я не виправдовував його використання, але просто вказав на приклад, коли я мав особистий досвід, де я бачив, як це працює, і так, я також побачив кілька вражаючих невдач. Ви не шукаєте можливостей мінімізувати зміни, ви хочете, щоб можливості запровадити зміни, але це потрібно зробити розумно, інакше ваш клієнт або отримує менше, ніж хотів, або пропустив термін.
Робінз

0

Так, Водоспад, Спіраль, Ітеративні та інші гібридні технологічні моделі є життєздатними, але зміни неминучі. Процес - це не просто те, як впоратися зі змінами, і (найбільше твердження) найбільшим визначальним фактором є те, наскільки добре ви знаєте / розумієте проблему, і наскільки точно ви можете планувати та прогнозувати.

Заявивши, що "дві основні методології розробки програмного забезпечення - водоспад і спритний", є неоднозначним, оскільки існує спектр процесів розробки програмного забезпечення, і багато компаній синтезують власну версію моделі процесу, часто змінюючись для певного проекту. Існує більше двох життєздатних підходів до розробки програмного забезпечення. Хоча водоспад і Agile, як правило, падають на протилежні кінці спектру "зміни", розумно типізувати ці конкуруючі методології як,

Водоспад каже: Зміни коштують дорого, тому його слід мінімізувати.

Agile каже: Зміни неминучі, тому робіть зміни дешевими.

Але це ще не вся історія. Бізнес повинен вміти планувати та прогнозувати, але програмне забезпечення - це творчий процес, а оцінки часто неправильні. Пам'ятайте хороший - швидкий - дешевий трикутник? Додайте четвертий вимір, обробляйте, і ви виявите, що зменшення зусиль для процесу може також стиснути графік, коли оцінки виявляються помилковими і проект загрожує затримкою. Програмне забезпечення - це процес, що змінюється (змінюється), а Agile, Iterative, Spiral пропонують можливість надавати додаткові функціональні можливості за коротші проміжки часу.

Моделі технологічних процесів з водоспадом та іншими вимогами мають управління для управління змінами, тому неправильно сказати, що Водоспад мінімізує зміни, точніше сказати, що Водоспад розпізнає та керує змінами та повідомляє про вплив цієї зміни (оскільки зміна спричиняє вплив графіку, коли ви мають вимоги та дизайн спереду). Коли ви будуєте продукт або потребуєте повного визначення вимог (функціональності), ви переходите до однієї з гібридних моделей.

І коли оцінки неправильні, часто процес (четверта частина залізного трикутника) приносять у жертву, щоб відповідати графіку.


Я не був безтурботним. Після п’яти років розвитку в різних компаніях я стикався лише з двома, і одна названа лише як перйоративна. Спіраль? Ніколи про це не чув.
Ерік Вілсон

Прочитайте, будь ласка, про SDLC, en.wikipedia.org/wiki/Systems_development_life_cycle , tutorialspoint.com/sdlc/sdlc_overview.htm тощо
ChuckCottrill

Я мав на увазі, що не стикався з ними в реальному світі. Всілякі речі знаходяться там на перехрестях, але я зараз не збираюся починати їх полювати лише тому, що мені трапилося запитати ще в 2010 році.
Ерік Вілсон

-1

Зрілі гнучкі підходи та водоспад не відрізняються один від одного. Ваше припущення щодо мети підходу до водоспаду є невірним. Вони обидва мають за мету виробляти якісне програмне забезпечення. Якщо у вас немає твердого підходу до розвитку компанії в цілому, вам потрібно переглянути, який підхід забезпечить прийняття найменшої кількості тертя. Врешті-решт, найважливішими для створення найвищого рівня програмного забезпечення є короткі цикли розвитку.


1
Я б поставив застереження до вашого коментаря. Водоспад вимагає талановитих людей, або він впаде плоско на обличчя. Навчитися добре проектувати важко. Навчитися кодувати порівняно дуже просто. IMO, це головна причина, чому більшість розробників вважають за краще гнучкість.
Данк

4
Я можу сказати те ж саме про спритний. Молодші розробники без вказівки можуть швидко заплутатися.
Чарльз Ламберт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.