stringtranslate.com

Модель водопада

Водопадная модель представляет собой разбиение деятельности по разработке на линейные последовательные этапы, то есть они передаются друг другу, где каждый этап зависит от результатов предыдущего и соответствует специализации задач. [1] Подход характерен для определенных областей инженерного проектирования . В разработке программного обеспечения [1] он , как правило, относится к числу менее итеративных и гибких подходов, поскольку прогресс протекает в основном в одном направлении («вниз», как водопад ) через фазы концепции, инициации, анализа , проектирования , конструирования , тестирования и т. д . развертывание и обслуживание . [2] [ нужен лучший источник ] Водопадная модель — это самый ранний подход SDLC , который использовался при разработке программного обеспечения. [ нужна цитата ]

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

История

Первая известная презентация, описывающая использование таких этапов в разработке программного обеспечения, была проведена Гербертом Д. Бенингтоном на симпозиуме по передовым методам программирования для цифровых компьютеров 29 июня 1956 года. [4] Эта презентация была посвящена разработке программного обеспечения для SAGE . В 1983 году статья была переиздана с предисловием Бенингтона, в котором он объяснял, что этапы были намеренно организованы в соответствии со специализацией задач, и указывал, что процесс на самом деле не выполнялся строго сверху вниз, а зависел от прототипа. . [3]

Хотя термин «водопад» не используется в статье, первая формальная подробная диаграмма процесса, позже известная как «модель водопада», часто [ нужна ссылка ] цитируется как статья Уинстона Ройса 1970 года . [5] [6] [7] Однако он также считал, что у него есть серьезные недостатки, связанные с тем, что тестирование проводилось только в конце процесса, который он назвал «рискованным и влекущим за собой неудачу». [5] В оставшейся части его статьи представлены пять шагов, которые, по его мнению, были необходимы для «устранения большинства рисков развития», связанных с неизменным водопадным подходом. [5]

Пять дополнительных шагов Ройса (которые включали написание полной документации на различных этапах разработки) так и не получили широкого распространения, но его диаграмма того, что он считал ошибочным процессом, стала отправной точкой при описании «водопадного» подхода. [8] [ нужен лучший источник ]

Самое раннее использование термина «водопад», возможно, было в статье Белла и Тайера 1976 года. [9] [ нужен лучший источник ]

В 1985 году Министерство обороны США зафиксировало этот подход в DOD-STD-2167A [ нужна ссылка ] — своих стандартах работы с подрядчиками по разработке программного обеспечения, в которых говорилось, что «подрядчик должен реализовать цикл разработки программного обеспечения, включающий следующие шесть этапов: «Анализ требований к программному обеспечению, предварительное проектирование, детальное проектирование, кодирование и модульное тестирование, интеграция и тестирование». [10]

Модель

Хотя Ройс никогда не рекомендовал и не описывал водопадную модель , жесткое соблюдение следующих этапов подвергается его критике :

  1. Требования к системе и программному обеспечению : отражены в документе с требованиями к продукту.
  2. Анализ : в результате создаются модели , схемы и бизнес-правила.
  3. Проектирование : создание архитектуры программного обеспечения.
  4. Кодирование : разработка , проверка и интеграция программного обеспечения.
  5. Тестирование : систематическое обнаружение и устранение дефектов .
  6. Операции : установка , миграция , поддержка и обслуживание полных систем.

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

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

Поддерживающие аргументы

Время, потраченное на ранних стадиях цикла производства программного обеспечения, может снизить затраты на более поздних этапах. Например, проблему, обнаруженную на ранних стадиях (например, в спецификации требований), исправить дешевле, чем ту же ошибку, обнаруженную позже (в 50–200 раз). [11]

В обычной практике каскадные методологии приводят к составлению графика проекта, в котором 20–40 % времени уделяется первым двум этапам, 30–40 % времени — кодированию, а остальное — тестированию и внедрению. Фактическая организация проекта должна быть высокоструктурированной. Большинство средних и крупных проектов включают подробный набор процедур и средств контроля, которые регулируют каждый процесс проекта. [12] [ не удалось проверить ]

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

Водопадная модель обеспечивает структурированный подход; сама модель развивается линейно через дискретные, легко понятные и объяснимые фазы и, следовательно, ее легко понять; он также обеспечивает легко идентифицируемые вехи в процессе разработки. Возможно, именно по этой причине водопадная модель используется в качестве начального примера модели разработки во многих учебниках и курсах по разработке программного обеспечения. [14]

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

Критика

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

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

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

В ответ на очевидные проблемы с чистой водопадной моделью были представлены модифицированные каскадные модели, такие как «Сашими (Водопад с перекрывающимися фазами), Водопад с подпроектами и Водопад со снижением риска». [11]

Некоторые организации, такие как Министерство обороны США, теперь отдают предпочтение методологиям каскадного типа, начиная с MIL-STD-498, выпущенного в 1994 году, который поощряет эволюционное приобретение , а также итеративную и поэтапную разработку . [18]

Модифицированные модели водопада

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

К ним относятся модели быстрого развития, которые Стив МакКоннелл называет «модифицированными водопадами»: [11] «модель сашими» Питера ДеГрейса (водопад с перекрывающимися фазами), водопад с подпроектами и водопад с уменьшением риска. Также существуют другие комбинации моделей разработки программного обеспечения, такие как «модель поэтапного водопада». [19]

Последняя модель Ройса

Последняя модель Ройса

Окончательная модель Уинстона В. Ройса, его предполагаемое улучшение первоначальной «водопадной модели», продемонстрировала, что обратная связь может (должна и часто будет) вести от тестирования кода к проектированию (поскольку тестирование кода выявляет недостатки в проекте) и от проектируйте обратно в соответствии со спецификацией требований (поскольку проблемы проектирования могут потребовать удаления противоречивых или иным образом невыполнимых/неразрабатываемых требований). В той же статье Ройс также выступал за большое количество документации, выполняя работу «по возможности дважды» (это мнение сходно с мнением Фреда Брукса , известного автором «Мифического человеко-месяца», влиятельной книги по управлению программными проектами ), который выступал за планирование «выбрось один») и максимально вовлекая клиента (чувство, похожее на чувство экстремального программирования ).

Заметки Ройса об окончательной модели:

  1. Завершите разработку программы до начала анализа и кодирования.
  2. Документация должна быть актуальной и полной.
  3. Если возможно, выполните работу дважды.
  4. Тестирование должно планироваться, контролироваться и отслеживаться.
  5. Вовлекайте клиента

Смотрите также

Рекомендации

  1. ^ Аб Петерсен, Кай; Волин, Клаас; Бака, Деян (2009). «Модель водопада в крупномасштабном развитии». В Бомариусе, Фрэнк; Ойво, Маркку; Яринг, Пяйви; Абрахамссон, Пекка (ред.). Улучшение процесса разработки программного обеспечения, ориентированного на продукт . Конспекты лекций по обработке деловой информации. Том. 32. Берлин, Гейдельберг: Шпрингер. стр. 386–400. Бибкод : 2009pfsp.book..386P. дои : 10.1007/978-3-642-02152-7_29. ISBN 978-3-642-02152-7.
  2. ^ «Традиционный подход водопада». www.umsl.edu . Проверено 23 февраля 2022 г.
  3. ^ аб Бенингтон, Герберт Д. (1 октября 1983 г.). «Производство больших компьютерных программ» (PDF) . IEEE Анналы истории вычислений . Отдел образовательной деятельности IEEE. 5 (4): 350–361. дои : 10.1109/MAHC.1983.10102. S2CID  8632276 . Проверено 21 марта 2011 г.Архивировано 18 июля 2011 года в Wayback Machine .
  4. ^ США, Консультативная группа ВМС по математическим вычислениям (29 июня 1956 г.), Симпозиум по передовым методам программирования для цифровых компьютеров , [Вашингтон, округ Колумбия]: Управление военно-морских исследований, Департамент ВМФ, OCLC  10794738
  5. ^ abcd Royce, Winston (1970), «Управление разработкой больших программных систем» (PDF) , Proceedings of IEEE WESCON , 26 (август): 1–9
  6. ^ «Водопад». Бременский университет – математика и информатика .
  7. ^ Аббас, Нура; Гравелл, Эндрю М.; Уиллс, Гэри Б. (2008). «Исторические корни гибких методов: откуда взялось «гибкое мышление»?». В Абрахамссоне, Пекка; Баскервиль, Ричард; Конбой, Киран; Фицджеральд, Брайан; Морган, Лоррейн; Ван, Сяофэн (ред.). Гибкие процессы в программной инженерии и экстремальном программировании . Конспекты лекций по обработке деловой информации. Том. 9. Берлин, Гейдельберг: Шпрингер. стр. 94–103. дои : 10.1007/978-3-540-68255-4_10. ISBN 978-3-540-68255-4.
  8. ^ Конрад Вайсерт, Методика водопада: такого не существует!
  9. ^ Белл, Томас Э. и Т.А. Тайер. Требования к программному обеспечению: действительно ли они являются проблемой? Материалы 2-й международной конференции по программной инженерии. Издательство IEEE Computer Society, 1976.
  10. ^ «Разработка программного обеспечения для системы военной обороны» (PDF) .
  11. ^ abc МакКоннелл, Стив (1996). Быстрая разработка: укрощение диких графиков работы программного обеспечения. Майкрософт Пресс. ISBN 1-55615-900-5.
  12. ^ «Модель разработки программного обеспечения «Водопад»» . 5 февраля 2014 года . Проверено 11 августа 2014 г.
  13. ^ Технологии Arcisphere (2012). «Учебное пособие: жизненный цикл разработки программного обеспечения (SDLC)» (PDF) . Проверено 13 ноября 2012 г.
  14. ^ Хьюи, Дуглас (2009). «Сравнение традиционного системного анализа и проектирования с гибкими методологиями». Университет Миссури — Сент-Луис . Проверено 11 августа 2014 г.
  15. ^ Парнас, Дэвид Л.; Клементс, Пол К. (1986). «Процесс рационального проектирования: как и зачем его подделывать» (PDF) . Транзакции IEEE по разработке программного обеспечения (2): 251–257. дои : 10.1109/TSE.1986.6312940. S2CID  5838439 . Проверено 21 марта 2011 г.
  16. ^ МакКоннелл, Стив (2004). Код завершен, 2-е издание. Майкрософт Пресс. ISBN 1-55615-484-4.
  17. ^ Энсменгер, Натан (2010). Компьютерные мальчики берут верх . МТИ Пресс. п. 42. ИСБН 978-0-262-05093-7.
  18. ^ Ларман, Крейг; Базили, Виктор (2003). «Итеративная и поэтапная разработка: краткая история». IEEE Computer (июньское издание). 36 (6): 47–56. дои : 10.1109/MC.2003.1204375. S2CID  9240477.
  19. ^ «Методология: методы проектирования».

Внешние ссылки