stringtranslate.com

Большой дизайн спереди

Big design up front ( BDUF ) — это подход к разработке программного обеспечения , при котором дизайн программы должен быть завершен и усовершенствован до начала ее реализации. Его часто ассоциируют с каскадной моделью разработки программного обеспечения.

Синонимы big design up front (BDUF) — big modeling up front (BMUF) и big requirements up front (BRUF). Они рассматриваются как анти-шаблоны в рамках гибкой разработки программного обеспечения . [1]

Аргументы за

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

Джоэл Спольски , популярный интернет-комментатор по вопросам разработки программного обеспечения, решительно выступает за большую разработку дизайна на начальном этапе: [2]

«Много раз, обдумывание всего заранее избавляло нас от серьезных проблем с разработкой в ​​дальнейшем. ... [при внесении определенного изменения в спецификацию] ... Внесение этого изменения в спецификацию заняло час или два. Если бы мы внесли это изменение в код, это добавило бы недели к графику. Я не могу вам передать, насколько сильно я верю в Big Design Up Front, который сторонники экстремального программирования считают проклятием. Я постоянно экономил время и создавал лучшие продукты, используя BDUF, и я горжусь тем, что использую его, независимо от того, что утверждают фанатики XP. Они просто неправы в этом вопросе, и я не могу выразиться яснее».

Однако несколько комментаторов [3] [4] [5] утверждают, что то, что Джоэл назвал большим проектированием на начальном этапе, не похоже на BDUF, критикуемую сторонниками XP и других гибких методологий разработки программного обеспечения, поскольку он сам утверждает, что его пример не был ни узнаваемо полным проектированием программы, ни полностью завершенным на начальном этапе: [6]

«Эта спецификация — просто отправная точка для разработки Aardvark 1.0, а не окончательный проект. Когда мы начнем создавать продукт, мы обнаружим много вещей, которые не будут работать точно так, как планировалось. Мы придумаем новые функции, изменим что-то, уточним формулировки и т. д. Мы постараемся поддерживать спецификацию в актуальном состоянии по мере изменений. Ни в коем случае не следует считать эту спецификацию неким святым, непреложным законом».

Аргументы против

Критики (особенно те, кто практикует гибкую разработку ПО ) утверждают, что BDUF плохо адаптируется к изменяющимся требованиям и что BDUF предполагает, что проектировщики способны предвидеть проблемные области без обширного прототипирования и по крайней мере некоторых инвестиций в реализацию. Для существенных проектов требования пользователей нуждаются в уточнении в свете первоначальных результатов, а потребности бизнеса развиваются быстрее, чем завершаются крупные проекты, что делает Большой Проект устаревшим к моменту завершения системы.

Они также утверждают, что существуют накладные расходы, которые необходимо сбалансировать между временем, потраченным на планирование, и временем, которое фактически будет стоить исправление дефекта. Иногда это называют параличом анализа .

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

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

Кроме того, в большинстве проектов наблюдается существенный недостаток всеобъемлющих письменных (или хотя бы общеизвестных) требований. Поэтому в BDUF делается много предположений, которые впоследствии оказываются ложными, но которые разработаны и, возможно, уже закодированы. [ необходима цитата ]

Альтернативы

Альтернативным подходом является предварительное черновое проектирование [7] [8] [9] (RDUF), при котором «достаточное» проектирование выполняется заранее, чтобы обеспечить основу, на которой можно надстраивать детали проекта по мере его реализации.

Похожий подход был назван Джошуа Кериевски достаточным проектированием : [10]

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

Сторонники Scrum ссылаются на концепцию эмерджентного проектирования : [11]

«Отличие проекта Scrum не в том, что намеренный дизайн отбрасывается, а в том, что он выполняется (как и все остальное в проекте Scrum) постепенно».

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

Ссылки

  1. ^ "Антипаттерн Big Modeling Up Front (BMUF)". AgileModeling.com . 18 апреля 2023 г. Получено 23 апреля 2023 г.
  2. ^ Джоэл Спольски (2005-08-17). "The Project Aardvark Spec". Джоэл о программном обеспечении . Архивировано из оригинала 12 апреля 2006 года . Получено 2006-04-26 .
  3. ^ "20-страничная спецификация для 3-месячного проекта — это здорово! Но это не BDUF, это SDUF" Рич Роджерс [1] Архивировано 09.02.2006 на Wayback Machine
  4. ^ "К сожалению, если взглянуть на его спецификацию, то она, похоже, имеет мало отношения к типу BDUF, против которого выступают XP (экстремальное программирование) и другие гибкие программисты". Курт Сэмпсон [2] Архивировано 18.05.2011 на Wayback Machine
  5. ^ «Итак, из всех вещей, которыми может быть эта спецификация, большой предварительный проектный документ не является одной из них». Кевлин Хенни [3]
  6. ^ Джоэл Спольски (2005-08-17). "Project Aardvark Functional Specification" (PDF) . Джоэл о программном обеспечении . Архивировано из оригинала (PDF) 2012-05-09 . Получено 2012-07-19 .
  7. ^ Тойбер, Йоханнес. «... программирование, технические вещи, гибкость ...» Получено 19 июля 2012 г.
  8. ^ "Как проектировать сложные системы с помощью TDD?". Начните с грубой идеи дизайна
  9. ^ Седли, Лиз. «Грубый предварительный дизайн».
  10. ^ Кериевский, Джошуа (26 апреля 2010 г.). «Достаточный дизайн». Industrial Blogic . Получено 19 июля 2012 г.
  11. ^ Кон, Майк. «Agile Design: Intentional Yet Emergent». Блог Mountain Goat Software . Получено 19 июля 2012 г.